基于机器视觉的移动消防机器人(四)--实验验证

news2025/8/12 12:38:50

本文素材来源于北方民族大学 机电工程学院

作者:牟义达、黄瑞翔、李涛

指导老师:田国禾、张春涛

1. 自主行走功能验证

实验目的:让机器人小车行驶500ms后停500ms,循环重复。

实验器材:计算机、消防机器人小车。

实验步骤:设计自主行走功能检验程序;将双轴驱动直流电机连接于控制板上9、10引脚上;编译、烧录控制程序;锂电池插再控制板上给其供电;打开控制板电源开关;观察小车驱动轮的状态。

实验结果:小车驱动轮在控制板电源开启时转动,转动500ms后停下,之后往复循环。

实验结论:小车能按照指定功能执行操作,具备自主行走能力。

 2. 火源检测功能验证

实验目的:让机器人小车检测火源并使机器人灭火装置定位至火源处。

实验器材:计算机、消防机器人小车、打火机、蜡烛一根。

实验步骤:设计火源检测功能检验程序;将舵机1、2分别连接于控制板的3、8引脚上;编译、烧录验证程序;控制板连接锂电池;在光照度不强的场地点燃蜡烛并将蜡烛固定摆放;将消防机器人小车与距蜡烛保持合适距离(因光照强度的不同传感器的有效触发距离不同),可以不断改变蜡烛的摆放位置;打开控制板开关;观察小车检测装置的运行状态。

实验结论:小车的检测装置在一定范围内检测,范围内检测完成之后若中途检测到火源则会定位到火源处。消防机器人小车具备检测火源的功能。

3. 灭火功能验证

实验目的:使灭火装置对准火源,开启灭火装置,检验是否能完成灭火工作。

实验器材:计算机、消防机器人小车、蜡烛一根、打火机。

实验步骤:设计灭火功能检验程序;将灭火装置连接于控制板上;编译、烧录检验程序;连接锂电池于控制板上;点燃蜡烛并固定摆放;使灭火装置对准火源并保持合适距离;打开控制板电源;观察蜡烛是否被吹灭。

实验结论:灭火装置开启时蜡烛很快被吹灭,消防小车灭火装置具备灭火功能。

 

4. 消防机器人小车功能整体验证

实验目的:检测消防小车能否按照所设计的消防程序进行消防作业。

实验器材:计算机、消防机器人小车、蜡烛一根、打火机一个。

实验步骤:将设计好的总程序编译、烧录至控制板;将驱动直流电机、两个舵机、灭火装置分别接线于控制板;点燃蜡烛并固定摆放于合适位置;将消防机器人小车放置距离蜡烛1m处,开启控制板电源;观察消防机器人的运行状态。

实验结论:消防机器人小车能完成消防作业,程序设计合理。

① 消防机器人控制程序

#include <Servo.h>

  Servo myservo1;                          //定义两个舵机

  Servo myservo2;

  int pos1 = 0;                              //舵机初始角度

  int pos2 = 0;

  const int buttonPin = A2;                    // 传感器端口设为A2

  int buttonState = 0;                         //设一个转换库

  void setup()

  {

    Serial.begin(9600);                       //初始化串口

    myservo1.attach(3);                      //舵机接线端口设为3和8

    myservo2.attach(8);

    pinMode(5,OUTPUT);                    //定义5、6、9、10、11为输出端口

    pinMode(6,OUTPUT);

    pinMode(9,OUTPUT);

    pinMode(10,OUTPUT);

   

  }

void loop()

{

  buttonState = digitalRead(buttonPin);          //读取A0的电平并存于转换库里面

  myservo1.write(150);                       //舵机1定在150度

  Serial.println(" 舵机1定在150度")

  delay(3000);

  digitalWrite(5,1);                           //车四个轮子驱动前进

  digitalWrite(6,0);

  digitalWrite(9,HIGH);

  digitalWrite(10,HIGH);

  delay(500);                                //0.5秒延迟

  digitalWrite(5,1);                           //车停下来

  digitalWrite(6,1);

  digitalWrite(9,HIGH);

  digitalWrite(10,HIGH);

  Serial.println(" 舵机2开始正摆动");

  for(pos1 = 120; pos1 < 170; pos1 += 10)         // 舵机1开始正摆动

    {

     myservo1.write(pos1);

     for(pos2 = 20; pos2 < 160; pos2 += 1)        // 舵机2开始正摆动

        {                                 

         myservo2.write(pos2);

         if(digitalRead(buttonPin))             //如果火焰传感器触发(A0被至1),将pos2此时的值记下并保存于buttonState中

            {

             buttonState=pos2;

             duoji1jiaodu=pos1;

             }

         Serial.println(buttonState);            //串口监视器返回buttonState值

         delay(60);                         

        }

     }

     

   if(buttonState)                              //非零即为真

     {

      Serial.println(" 舵机转至火焰处");

      myservo1.write(duoji1jiaodu);

      myservo2.write(buttonState);

      delay(3000);

      while(digitalRead(buttonPin))              //检测到火时一直开启风扇

          {

            Serial.println(" 风扇一直开");

            digitalWrite(9,HIGH);

            digitalWrite(10,LOW);

            delay(3000);

           }

       Serial.println(" 火灭了,风扇关了,小车前进");

       delay(500);                           //停0.5秒

       digitalWrite(5,1);                      //车停下来

       digitalWrite(6,1);

       digitalWrite(9,HIGH);

       digitalWrite(10,HIGH);

     

      }

       

   else

     {

       digitalWrite(5,1);                      //车四个轮子驱动前进

       digitalWrite(6,0);

       delay(500);                           //停3秒

       digitalWrite(5,1);                      //车停下来

       digitalWrite(6,1);

       Serial.println(" 舵机1 2开始负摆动");

       for(pos1 = 170; pos1>120; pos2 .= 10)      //舵机1开始负摆动

         {

          for(pos2 = 160; pos2>20; pos2 .= 1)     //舵机2开始负摆动  

             {                                 

              myservo2.write(pos2);

              if(digitalRead(buttonPin))          //如果火焰传感器触发

(A0被至1),将pos2此时的值记下并保存于buttonState中

                 {

                  buttonState=pos2;

                  duoji1jiaodu=pos1;

                             

                 }

              Serial.println(buttonState);

              delay(60);                       

              }

          if(buttonState)                          //非零即为真

            {

             myservo1.write(duoji1jiaodu);

             myservo2.write(buttonState);

             delay(3000);

             while(digitalRead(buttonPin))         //检测到火时一直开启风扇

                  {

                   digitalWrite(9,HIGH);

                   digitalWrite(10,LOW);

                   delay(3000);

                  }

             Serial.println(" 火灭了,风扇关了,小车前进");     

             delay(500);                          //停3秒

             digitalWrite(5,1);                     //车停下来

             digitalWrite(6,1);

             digitalWrite(9,HIGH);

             digitalWrite(10,HIGH);

           

             }

         }

     }

}

② 小车自主行走功能验证程序代码

void setup()

{

  pinMode(9,OUTPUT);            //定义9、10引脚为输出引脚

  pinMode(10,OUTPUT);

}

void loop()

{

  digitalWrite(9,HIGH);            //9引脚输出高电平

  digitalWrite(10,LOW);           //10引脚输出低电平

  delay(500);                    //延迟0.5秒

  digitalWrite(9,HIGH);           //9、10引脚输出高电平

  digitalWrite(10,HIGH);

}

检测功能验证程序代码

#include <Servo.h>

  Servo myservo1;               //定义两个舵机

  Servo myservo2;

  int pos1 = 0;                  //舵机初始角度

  int pos2 = 0;

  const int buttonPin = A0;     // 传感器端口设为A0

  int buttonState = 0;          //设一个转换库

  void setup()

  {

    myservo1.attach(3);        //舵机接线端口设为3和8

    myservo2.attach(8);

   

  }

void loop()

{

  buttonState = digitalRead(buttonPin);   //读取A0的电平并存于转换库里面

  myservo1.write(150);               //舵机1定在150度

  for(pos2 = 20; pos2 < 160; pos2 += 1)   // 舵机2开始正摆动

     {                                 

      myservo2.write(pos2);

      if(digitalRead(buttonPin))     //如果火焰传感器触发(A0被至1),将pos2此时的值记下并保存于buttonState中

         {

          buttonState=pos2;

          }

      delay(60);                         

     }

     

  if(buttonState)                     //非零即为真

      {

       myservo2.write(buttonState);

      }

     

  else

     {

      for(pos2 = 160; pos2>20; pos2 .= 1) //舵机2开始负摆动  

         {                                 

          myservo2.write(pos2);

          if(digitalRead(buttonPin))      //如果火焰传感器触发(A0被至1),将pos2此时的值记下并保存于buttonState中

          buttonState=pos2;           

          delay(60);                       

          }

      if(buttonState)                     //非零即为真

        {

         myservo2.write(buttonState);

         

         }

     }

}

③ 灭火功能验证程序代码

void setup()

  {   

    pinMode(5,OUTPUT);          //定义5、6为输出端口

    pinMode(6,OUTPUT);   

  }

void loop()

  {

    digitalWrite(5,1);              //5引脚输出高电平

    digitalWrite(6,0);              //6引脚输出低电平

  }

关于移动消防机器人的完整内容可参考基于机器视觉的移动消防机器人

-----------------------------------------------完结---------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ACM MM ECCV 2022 | 美团视觉8篇论文揭秘内容领域的智能科技

人工智能技术正在成为内容领域的中台力量&#xff0c;其中视觉AI已经渗透到内容生产、内容审核、内容分发、用户互动、商业化变现等各个环节。美团视觉智能部以场景化的内容产品、智能化的内容工具助力产业&#xff0c;在内容的创作、内容分发等环节应用广泛。 前不久&#xff…

开源项目让你也可以尝试玩转工业物联网以及智慧工厂(智能制造),IOT开源网关、SCADA取数开源、PLC数据采集

物联网进入与传统产业深度融合发展的崭新阶段。未来10年内&#xff0c;全球物联网将创造10多万亿美元的价值&#xff0c;约占全球经济的1/10&#xff0c;并与城市管理、生产制造、汽车驾驶、能源环保等形成数个千亿级规模以上的细分市场。 随着物联网技术的快速发展&#xff0c…

win10怎么录屏?windows自带录屏功能怎么用

​相信很多小伙伴家里的电脑都是win10系统的&#xff0c;想要录制电脑上的画面&#xff0c;那么就需要用到了windows自带的录屏功能。win10怎么录屏&#xff1f;windows自带的录屏功能怎么用&#xff1f;别担心&#xff0c;今天小编就来教教大家如何在win10系统上录制电脑屏幕。…

Python程序员:代码写的好,丝滑的壁纸少不了

人生苦短&#xff0c;我用Python序言python批量下载最后序言 不知道大家的电脑桌面一般用的什么类型的壁纸&#xff1f; 早上来上班&#xff0c;打开电脑&#xff0c;被漂亮的桌面壁纸所吸引&#xff0c;年底将近&#xff0c;这又是哪个地方的节日&#xff1f; 才晓得&#x…

[附源码]java毕业设计美妆销售系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]java毕业设计农产品网络销售系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

论文阅读笔记 | 三维目标检测——F-PointNet算法

如有错误&#xff0c;恳请指出。 文章目录1. 背景2. 网络结构2.1 Frustum Proposal2.2 3D Instance Segmentation2.3 3D Box Estimation3. 实验结果paper&#xff1a;《Frustum PointNets for 3D Object Detection from RGB-D Data》1. 背景 基与鸟瞰图投影的方法&#xff08;…

一个小台灯

22年11月填旧坑 项目地址&#xff1a;myhome: 服务器终端和微信小程序 (gitee.com) 物联网台灯小项目——ILamp 1、主要硬件&#xff0c;STM32&#xff0c;ESP8266&#xff1b; 2、3D打印的外壳&#xff0c;淘宝金属灯杆、灯罩、配重块&#xff1b; 3、喷涂了白色油漆外观…

pytorch深度学习实战lesson20

第二十课 卷积层的多输入和多输出通道 目录 理论部分 多输入通道 多输出通道 实践部分 理论部分 多输入通道 假设图片大小是200*200的话&#xff0c;那么用张量表示这个图片的话就是200*200*3&#xff0c;因为彩色图片是由红、绿、蓝三个通道构成的&#xff0c;因此表示一…

看完这套Java笔记,才明白笔者同时斩获7份大厂offer是有原因的!

不知道各位程序员朋友有没有做笔记的习惯&#xff1f;不过&#xff0c;我觉得大家还是蛮喜欢收藏笔记的&#xff0c;嘿嘿&#xff0c;我也是。 前几天恰好看到一篇文章&#xff0c;里面详细罗列了关于Java的所有知识点。看目录&#xff0c;是从Jvm开始&#xff0c;再讲集合、多…

PHP使用阿里云对象存储oss

目录 1.使用composer安装依赖 2.编写代码 3.调用 4.遇到问题 (1) 上传成功 访问发现没有权限 (2) 接着访问&#xff0c;发现直接下载 (3) 上传文件 发现文件内容是空 5.自定义域名上传文件 (1) 配置&#xff1a; (2) 代码修改 1.使用composer安装依赖 composer requ…

技术笔记Android应用MediaPipe(一):Windows安装MediaPipe

一、MediaPipe概述 MediaPipe提供跨平台&#xff0c;为实时流媒体提供自定义的机器学习解决方案的应用框架。MediaPipe的主要特点&#xff1a; &#xff08;1&#xff09;端对端的加速&#xff1a;内置快速机器学习推理和处理&#xff0c;使得在普通硬件中也能加速使用。 &…

电瓶车、汽车智慧充电站可提高运营利润,缩短投资回收周期!

安科瑞 李可欣 具体可咨询&#xff1a;Acrel_lkx 需求分析 传统充电站现状 充电站用户需求 建设智慧充电站&#xff0c;解决传统充电站痛点 安科瑞充电站解决方案 保障配电可靠&#xff0c;解决运维难的问题&#xff0c;降低人力成本 确保用电安全&#xff0c;及时切除隐患…

数云融合丨重构传统商贸数字化解决方案

随着5G技术的高速发展&#xff0c;我们迎来了数字化的新阶段&#xff0c;中国也正在加快步入新的消费时代。 数字化的发展带来的多元下消费力的提升&#xff0c;让传统商贸行业迎来数字化产业升级的十字路口&#xff0c;今天我们就来聊一聊数字化对传统商贸的重构。 传统商贸面…

LQ0204 振兴中华【递归】

题目来源&#xff1a;蓝桥杯2013初赛 C A组C题 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小明参加了学校的趣味运动会&#xff0c;其中的一个项目是&#xff1a;跳格子。 地上画着一些格子&#xff0c;每个…

这些编程语言你需要了解一下

2022 年最受欢迎的语言 1、Python Python 位居 2022 年最受欢迎的语言榜首&#xff0c;并且鉴于多种原因成为最适合学习的编程语言之一。Python 是一种通用的服务器端编程语言&#xff0c;可用于从简单的脚本和自动化到复杂的 Web 应用程序和人工智能的许多方面。此外&#xf…

电科大离散数学-3-谓词逻辑-1

目录 3.1 谓词的引入 3.1.1 个体词 3.1.2 谓词 3.1.3 复合命题的谓词符号化 3.2 量词的引入 3.2.1 量词 3.2.2 谓词逻辑符号化的两条规则 3.2.3 量词相关的真值确定 3.2.4 谓词翻译和真值 3.2.5 个体域有限的情况 3.3 谓词符号化举例 3.3.1 谓词逻辑符号化示例一 …

gdb调试的插件安装——gef插件

以下博客中的链接都是大佬们提供的链接 gef插件源地址&#xff1a;https://github.com/hugsy/ 根据要求&#xff1a; gdb必须得8.0以上&#xff0c;python得3.6以上&#xff0c;但是一般裸机的gdb都是7.2&#xff0c;python是2.7。我们需要下载更高版本的gdb和python 先将系统…

15、volume

Volume 的生命周期独立于容器&#xff0c;Pod 中的容器可能被销毁和重建&#xff0c;但 Volume 会被保留。本质上&#xff0c;Kubernetes Volume 是一个目录。当Volume被mount到Pod&#xff0c;Pod中的所有容器都可以访问这个Volume。Kubernetes Volume 也支持多种 backend 类型…

菊风入选2022·爱分析保险科技厂商报告,为保险行业数智化转型赋能

随着数字化转型加速及大数据、人工智能等技术的日益精进&#xff0c;保险公司纷纷布局互联网赛道&#xff0c;采取“保险”与“科技”相结合的双引擎战略&#xff0c;赋予客户更快“速度”更暖“温度”的服务体验。可以说&#xff0c;保险科技作为保险和科技融合创新的成果与生…