机器人制作开源方案 | AI校园服务机器人

这篇具有很好参考价值的文章主要介绍了机器人制作开源方案 | AI校园服务机器人。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:李强、李振宁、毛维雷、李文文、张奥

单位:山西能源学院

指导老师:姚志广、程晟

      在这个科技飞速发展的时代,在工业智造、人工智能的飞速发展中,出现了越来越多的智能化机械装置,也有许多创新类的比赛,本作品基于探索者创新套件设计平台设计出一款全地形小车,通过自主构思和一系列调试设计出了一款以前履带后柔性结构为主的多功能越障移动装置。系统整体设计符合大赛规则,并具备一定的实用性和美观。

1. 作品简介

      作品名为AI校园服务机器人,之所以叫它AI校园服务机器人,是因为它主要针对新生进行迎新引导或对校园进行巡查。作品为六驱形小车,拥有速度快、结构稳的特点,同时在前驱动与中驱上安装了履带结构,后驱上安装了一对加大轮子,解决了重心不稳的问题。同时这个结构使得它在台阶障碍面前更是得天独厚,再也不用为后轮因摩擦力太小而上不去的问题而担忧。不仅如此,前履带后轮胎的结构可以互相弥补各自的不足,使得它既有稳定的结构,有不失速度的体验。此结构独特且实用,为本作品的点睛之笔。

机器人制作开源方案 | AI校园服务机器人,机器人,开源,人工智能

2. 场景调研

      小车名为AI校园机器人,故将其使用场景设定为在校园内。在校园中新生入学时多对校园环境并不熟悉,并且为了校园安全学校便会派人经常对学校进行巡查,这些情况在以往都需要大量人力来解决。其中校园中的教学楼、餐厅以及操场等地点又坐落地点相距较远,而小车具有能多地形行进、能够通过语音回答引导类相关问题以及显示屏显示基本校园介绍等功能,可以有效的解决上述情况。并且小车速度快、结构稳,可以与同学手机互连,在要去一些地点却不知道具体位置时便可以通过手机定位到小车来进行路线引导,操作便捷,实用性强。

机器人制作开源方案 | AI校园服务机器人,机器人,开源,人工智能

3. 机器人本体技术路线说明

      ① 机械结构设计方面:采用大轮加1:10模型轮胎的柔性底盘,以履带为前置驱动,提高越障能力,后轮采用履带模型大轮,提高抓地力,并且采取抬高底盘的设计,增强障碍的通过性。

      ② 本体控制与驱动方面:使用的是 Basra主控板【https://www.robotway.com/h-col-135.html】 和 BigFish扩展板【https://www.robotway.com/h-col-136.html】 组合而成的单片机模块,使用六电机全驱动,电机为TT直流电机。

      ③ 传感部分:选用 超声测距传感器【https://www.robotway.com/h-col-137.html】 ,并经过若干次距离与位置调试,将传感器安装在底盘中较为合适的位置;图像传输传感器安装在小车前侧,以便完成物体的检测以及定位。

4. 结构方案说明

4.1 设计思路

      ① 机械结构设计方面:采用大轮加1:10模型轮胎的柔性底盘,以履带为前置驱动,提高越障能力,后轮采用履带模型大轮,提高抓地力,并且采取抬高底盘的设计,增强障碍的通过性,整个机械移动底盘设计为结合各方面资料自主创新的。

      ② 硬件设计方面:使用的是六电机全驱动,电机为TT直流电机,为整车提供强大动力。

      ③ 软件设计方面:使用Arduino1.5.2进行程序的设计与调试。

      ④ 系统开发与调试方面:基于通过所有障碍、设计全地形越障移动底盘的目的对机械结构底盘和模块化的程序不断进行调试和优化,以期达到更好设计方案。

      ⑤ 调试问题与过程方面:针对具有一定高度的台阶,为了越过此类障碍,经过无数次调试,发现其上不去是因为前驱动轮特别容易打滑,因此经过分析将前驱动改为履带驱动,后由于下台阶颠簸过强,将后置改为柔性轮,并对底盘进行一定程度的优化。

4.2 机械结构设计

      小车以履带为前置驱动,后轮为履带模型大轮的结构,既能提高小车的越障能力,还能保证小车对地面的抓力,减少由轮胎上带来的行进和通过障碍物时产生的误差,保证小车的流畅性和稳定性。前置约30°角的履带驱动,同时使整车设计轻巧便捷,能够更好更稳定的通过台阶,设计时多次抬高底盘,以便小车可以平稳通过。并且根据所给出的机械零件的大小和尺寸,经过不断的调整更换来更加合理地安排整车布局,使之能够顺利通过所有障碍,完成日常生活上的所有要求。

4.3 硬件设计

      各零部件均为统一的探索者创新设计套件。

      ① 主体方面:采用了三块5x7的孔平板和两块7x11的孔平板及两块大舵机支架搭成底盘的主体部分,然后用履带、双足支杆等零件组成移动底盘的机械结构。

      ② 控制器方面:使用的是Basra主控板和BigFish扩展板组合而成的单片机模块。

      ③ 电机方面:采用六个直流电机作为所有轮驱动。电源为统一提供的电源,额定电压为7.4V。

      ④ 传感器方面:选用两个超声测距传感器。

      ⑤ 功能模块方面:选用语音识别模块、WIFI无线路由器、OLED显示模块、摄像头 00:12 、模拟舵机,共同结合组成机器人的人工交互系统。

4.4 装配图

机器人制作开源方案 | AI校园服务机器人,机器人,开源,人工智能

5. 作品创新点

      ① 本车针对台阶、斜坡等不易机器人行进的地形设置前置约30°角的履带驱动,增大了小车前置驱动轮的摩擦力,既能提高小车的越障能力,还能保证小车对地面的抓力,减少由轮胎上带来的行进和通过障碍物时产生的误差,保证小车的流畅性和稳定性,使整车设计轻巧便捷,能够更好更稳定的通过台阶,设计时多次抬高底盘,更好的适应了地形,有效的解决了小车无法越过台阶障碍等问题,有利于多地形行走。但四驱的动力仍然不足,经常在上台阶时卡死,所以经过对此问题的分析,加入了中驱辅助越过台阶障碍,同时也成为整车最为独特的创新点。

      ② 在小车的顶部我们加入了摄像头、显示屏以及路由器,并且还给小车加入了语音模块,使得新生连接WiFi后它可以回答新生提出的一些问题并进行对应的引导,在不迎新时对校园进行巡检,减少了相关的人力浪费。并且,多台小车放置在一起时,可互相联接构成局域网,同学们可以在手机上获取其所在位置。

      ③ 后置驱动轮采用柔性结构,有效的减轻了上下台阶的颠簸问题,起到了一个减震的作用。该设计使小车无论在什么养的地形上行进时车身都可以保持一个相对平稳的状态,从而既不失速度,又具有很强的稳定性。这个创新点不仅解决了本车自身的问题,更为以后的创新提供了一条新的思路。

6. 作品难点及解决方案

      在软件和硬件上,能够通过典型障碍,这些障碍能够代表生活中绝大部分的障碍,事实上在实际场景中,还要考虑电机功率、传感器灵敏度、外观设备等绝大部分的因素,来设计适应不同场合的移动装置。

      最初的设计方案中运用到了大小轮结合的设想,目的在于多场地可应用于多场地的切换,但是由于场地的复杂多变,使用一组大小轮反而不利于小车的爬坡故而更改了设计方案,后经过多方调整最终发现运用柔性与履带及大小轮相结合是最稳定的方案。

在制作中面对电气元器件之间走线杂乱无序,电池等器件暴露在外部空气中,容易造成短路等安全问题。因此增大驱动动力,提高越障能力,设计模块的安装部位,加强模块之间的管理,方便模块之间的拆装,提高电子元器件的安全性显得尤为重要,最终才设计为当前最佳方案。

7. 示例程序

#include <SoftwareSerial.h>

#include <Servo.h>                  // 舵机库函数

#include <Arduino.h>

#include <Wire.h>                      //OLED库函数

#include <MultiLCD.h>

#include "HBR640.h" //使用hbr640模块需要的函数库;

LCD_SSD1306 lcd;

//定义管脚2/3分别为RX,TX.  

SoftwareSerial mySerial(2, 3);                   //开软串口

int echo=12;

int trig=3;

Servo myservo;

  HBR640 hbr640;      //实例化一个语音识别模块;

  char i;

  #define Numbers_of_Voece 80 //定义的语音库数量(根据实际情况更改);

  #define Voice_Time 4500 //语音命令延时时间;

 

  unsigned char b = 0xC8;

  unsigned char c = 0x00;

  unsigned char a[Numbers_of_Voece] = {0x00,

  0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,0x12,0x13,0x14,0x15}; //定义的语音库相关词条序号

 

  void setup()

  {

    lcd.begin();             

    Serial.begin(9600);

    mySerial.begin(9600);            //设置串口波特率

    myservo.attach(11);

    hbr640.open(); //开始进行语音识别

   

    pinMode( 5 , OUTPUT);               

    pinMode( 6 , OUTPUT);                   

    pinMode( 9 , OUTPUT);                       //为驱动部分开口

    pinMode( 10 , OUTPUT);

    pinMode(trig,OUTPUT);                     

    pinMode(echo,INPUT);

  }

 

  void Get_Mode(byte character[] ,unsigned char s,unsigned char d,int Num)

  { //将烧写好的语音命令发送给hbr640模块

    unsigned char _YuYin[3];

    _YuYin[0] =   s; _YuYin[1] = character[0]; _YuYin[2] =d;

    for(int i=0;i<Num;i++){

      Serial.write(_YuYin,3);

      delay(Voice_Time);

    }

  }

 

  void loop() {

   

            i=0;  

          if( mySerial.available()>0 )                 //执行软串口的信号指令

          {         

           i= mySerial.read();  

            switch(i)

            {

              case '1':

              Forward();

              break;

             

              case '2':

              Back();

              break;

             

              case '3':

              Left();

              break;

             

              case '4':

               Right();

              break;

             

              case '5':

              Stop();

              break;

              case '6':

               Leftpiao();

              break;

             

              case '7':

              Rightpiao();

              break;

            }

          }

   

    if(hbr640.isHeard()) //如果监测到识别语句

    {  

      int value = hbr640.getSentence(); //获得识别语句的序号

      switch (value)

     {

      case 0: Forward();

              delay(3000);

              Stop();

              delay(5000);

              break;//如果接收到命令为“前进”,小车前进1秒后停止;

      case 1: Back();

              delay(3000);

              Stop();

              delay(5000);break;//如果接收到命令为“后退”,小车后退1秒后停止;

      case 2: Left();

              delay(100);

              Stop();

              delay(5000);break;//如果接收到命令为“左转”,小车左转1秒后停止;

      case 3: Right();

              delay(1000);

              Stop();

              delay(5000);break;//如果接收到命令为“右转”,小车右转1秒后停止;

      case 4: Stop();

              delay(3000);

              Stop();

              delay(5000);break;

             

      case 5: Get_Mode( a+1, b , c ,1); hbr640.open(); break;                   //识别声音进行相应回答

      case 6: Get_Mode( a+0, b , c ,1); hbr640.open(); break;

      case 7: caochang();                          //识别声音走到相应位置

              break;

      default:   break;

      }  

    }  

 

      lcd.clear();                   //清空OLED屏内容

       int a=getdis();               //将测得距离显示在OLED中

       lcd.clear();

       lcd.setCursor(0, 2);

       lcd.print("The distance is:");

       lcd.setCursor(0, 4);

       lcd.print(a);

       lcd.setCursor(0, 5);

       lcd.print("cm");

       delay(500);

   

       avoid();       //执行相应指令

  }

  int getdis()       //将超声波结果计算为标准距离

  {

    digitalWrite(trig,LOW);

    delayMicroseconds(2);//缓冲

    digitalWrite(trig,HIGH);

    delayMicroseconds(10);

    digitalWrite(trig,LOW);

    int distance=pulseIn(echo,HIGH);

    distance=distance/58;//换算成厘米

    if(distance>=100)

    return 100;

    else

    return distance;

  }

  void motor(int cmd)  

  {

  switch(cmd){

    case 1:

      Forward();

      break;

     case 2:

      Back();

      break;

     case 3:

      Left();

      break;

     case 4:

     Right();

      break;

     case 0:

      Stop();

      break;

  }

}

void avoid()     //超声波避障逻辑

{

  int dis[3];      //定义存放检测情况的数组

  int pos;            //控制伺服电机转动

  dis[1]=getdis();     //前方距障碍距离

  if(dis[1]>3&&dis[1]<13)   //消除极端误差的影响

  {

    motor(0);

    for(pos=90;pos<=140;pos += 1)     //向左转

    {

      myservo.write(pos);

      delay(15);

      }

     

      dis[2]=getdis();        //左边数据存放

   

      for(pos=150;pos>=40;pos -= 1)

      {

        myservo.write(pos);          //向左转

        delay(15);

        if(pos==90)

        {

          dis[1]=getdis();        //中间数据存放

          }

        }

       

        dis[0]=getdis();         //左边数据存放

       for(pos=40;pos<=90;pos += 1)        //归位

        {

          myservo.write(pos);

          delay(15);

          }

       

        if(dis[0]<dis[2])        //根据判断结果执行避障

        {

          motor(3);

          delay(5);

          }

          else

          {

            motor(4);

            delay(50);

            }

               

  }

  }

  void Forward () //前进

  {

     analogWrite(5,196);

     analogWrite(6,0);

     analogWrite(9,245);

     analogWrite(10,0);

     

  }

 

  void Back()    //后退

  {

     analogWrite(5,0);

     analogWrite(6,1960);

     analogWrite(9,0);

     analogWrite(10,245);

   

  }

  void Left()   //左转

  {

     analogWrite(5,0);

     analogWrite(6,120);

     analogWrite(9,120);

     analogWrite(10,0);

   

  }

 

  void Right()   //右转

  {

     analogWrite(5,220);

     analogWrite(6,0);

     analogWrite(9,0);

     analogWrite(10,220);

     

  }

 

  void Stop()   //停止

  {

      analogWrite(5,0);

      analogWrite(6,0);

      analogWrite(9,0);

      analogWrite(10,0);

     

  }

void Leftpiao() //左前

  {

     analogWrite(5,50);

     analogWrite(6,0);

     analogWrite(9,120);

     analogWrite(10,0);

     

  }

 

   void Rightpiao() //右前

  {

     analogWrite(5,240);

     analogWrite(6,0);

     analogWrite(9,40);

     analogWrite(10,0);

 

  }

 

    void caochang()   //操场

    {

      Forward();

      delay(19000);

      Stop();

      delay(10000);

      }

  void serialEvent()

  {

    hbr640.lisen(); //在串口接收事件中调用语音识别的监听指令

  }

8. 自我评价、教师指导评价

8.1 自我评价

      此次的全地形小车大赛,参赛的不只是技能,更是一次各方面潜力的展现。让我们在工作中互相帮助,磨练了我们吃苦耐劳的品质。使我们认识到结果并不是最重要的,重要的是在大赛中学到的东西。这次比赛我们最大的收获不是输赢,而是在相互切磋的过程中,学习到对手的优点,发现自身的不足,从中获得新的知识和经验。体会了出现问题的失落和解决问题的幸喜,使我们以后无惧困难与问题。这对我们以后走向社会也有很大的帮忙,我们相信在以后的生活和学习中,会因为此次的大赛而变得不一样。

8.2 教师指导评价

      学生所构想和设计制造的这辆车,仍然有很多不少不足的地方,如果再给他们更多的时间,他们也可能会做的更好。学生们在小车结构上一看就是认真对赛道上可能出现的问题分析后得出的六驱前履带后柔性的结构。对于这次的程序编写,他们已经在能力范围之内将程序编写的尽量完美,相信他们在学习了更多之后可以将这个程序编写的更加完美。

      此次学生们所作出来的这种全地形小车有不少的创新点,在结合实际生活和部分想象之后,做出来了这种小车,在并不长的时间里,自主设计并制造出来,这在一定程度上给学生带来大量的思考与交流,非常有助于学生的思想发展。

更多详情请见:【S058】AI校园服务机器人文章来源地址https://www.toymoban.com/news/detail-809386.html

到了这里,关于机器人制作开源方案 | AI校园服务机器人的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器人制作开源方案 | 自主消毒防疫机器人

    作者:陈毅豪 张植铜 罗郡 马鑫龙 王丹晶 单位:西安外事学院 指导老师:陈小虎 杜喜 1. 1 目的及意义       消毒是疫情防控工作中的重要一环,传统的消毒方式需要人工操作消毒设备,不仅工作量大,且一些消毒剂会对人体造成伤害,消毒机器人便成了代替人工的不二之

    2024年02月02日
    浏览(66)
  • 机器人制作开源方案 | 家庭清扫拾物机器人

    作者: 罗诚、李旭洋、胡旭、符粒楷 单位: 南昌交通学院 人工智能学院 指导老师: 揭吁菡       在家庭中我们有时无法到一些低矮阴暗的地方进行探索,比如茶几下或者床底下,特别是在部分家庭中,如果没有及时对这些阴暗低矮的地方进行清扫,则会导致这些地方不干

    2024年02月07日
    浏览(45)
  • 机器人制作开源方案 | 全自动导航分拣机器人

    作者:孙国峰 董阳 张鑫源 单位:山东科技大学 机械电子工程学院 指导老师:张永超 贝广霞 1.1 研究背景       在工业生产中,机器人在解决企业的劳动力不足,提高企业劳动生产率,提高产品质量和降低生产成本方面有着显著的意义。随着计算机自动化技术和社会的发展

    2024年01月23日
    浏览(54)
  • 机器人制作开源方案 | 乒乓球自动拾取机器人

    作者:刘众森、王森、王绘东、崔岳震、宋维鑫 单位:山东农业工程学院 指导老师:潘莹月、廖希杰       我们小组选择项目的任务方向乒乓球的捡取与存放,针对此问题我们研发了一款乒乓球自动拾取机器人。众所周知,乒乓球是一种世界流行的球类体育项目,而我国是

    2024年02月01日
    浏览(49)
  • 机器人制作开源方案 | 图书管理助手

    作者:丁位 朱红磊 程国正 杨秀萍 丁语林 单位:黑龙江科技大学 指导老师:邵文冕 刘安平 1.1 研究背景及意义        通过查阅资料,我们团队了解到自2015年起中国公共图书馆图书流通人次逐年增加,2019年中国公共图书馆图书流通人次达90135万人次,较2018年增加了8103万人

    2024年02月20日
    浏览(38)
  • 机器人制作开源方案 | 森林管理员

    ​作者: 李佳骏、常睿康、张智斌、李世斌、高华耸 单位:山西能源学院 指导老师: 赵浩成、郜敏       森林作为地球上可再生自然资源及陆地生态的主体,在人类生存和发展的历史中起着不可代替的作用,它不仅能提供国家建设和人民生活所需的木材及林副产品,而且

    2024年02月03日
    浏览(39)
  • 机器人制作开源方案 | 智能垃圾桶

           智能垃圾桶是一种利用物联网技术和智能感知能力的智能设备,旨在提高垃圾分类和处理的效率。通常具备以下特点和功能: ① 智能感知:智能垃圾桶配备各种传感器,如压力传感器、红外线传感器等,可以实时感知垃圾桶内垃圾的填充情况和类型。 ② 垃圾分类:

    2024年02月16日
    浏览(53)
  • 机器人制作开源方案 | 智能盲道除雪小车

    作者: 汪荣顺 李明旭 马晓乐 吴泽俊 李以陈 单位:江汉大学 指导老师: 张朝刚 张会利       本文论述了一种新型智能盲道除雪小车的设计与研发。由于目前的除雪设备集中在公路、城市道路、机场路面、高速公路等领域,但对于街道等路况的研究很少。因此,我们针对盲

    2024年02月02日
    浏览(50)
  • 机器人制作开源方案 | 滑板助力器

    我们可以用一块废滑板做些什么 呢 ?     如今,越来越多的人选择电动滑板作为代步工具或娱乐方式,市场上也涌现出越来越多的电动滑板产品。 (图片来源: Backfire Zealot X Belt Drive Electric Skateboard– Backfire Boards ) (图片来源: Electric Skateboards - Boosted USA ) 那么,这是不

    2024年02月12日
    浏览(35)
  • 机器人制作开源方案 | 行星探测车概述

           行星探测车(Planetary Rover)是一种用于进行科学探索和勘测任务的无人车辆,它们被设计成能够适应各种复杂的地形条件和极端环境,以便收集数据、拍摄照片、采集样本等。行星探测车通常包含以下主要组件和功能:        ① 底盘和轮子系统:底盘提供了行星探

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包