一种全方位避障和障碍物识别的机器人设计
2018-08-11劳振鹏东莞理工学院机械工程学院黄市生黎梓恒曾志彬吴国洪东莞市横沥模具科技产业发展有限公司陈学忠广东石东实业集团公司
劳振鹏 东莞理工学院 机械工程学院 黄市生 黎梓恒 曾志彬 吴国洪 东莞市横沥模具科技产业发展有限公司 陈学忠 广东石东实业(集团)公司
前言:自动避障作为机器人的关键技术,是保证机器人正常移动,避免撞上障碍物的重要方法。调研发现,国内外机器人自动避障系统还存在避障效率低,传感器信息采集不理想、避障方向单一等问题;另一方面,市面上大多数机器人避障系统虽然实现避障但不具有物体识别的功能;并且机器人避障系统的载体多采用普通的移动平台,该些运动平台的灵活度较低,这些原因导致了机器人对环境的适应性低,执行任务的成功率不高。
针对以上不足,本文提出了一种全方位避障和障碍物识别的机器人设计方案。
1 硬件平台设计
本文所设计的机器人结构如图1所示,机器人采用具有底板和载板两层平台,底板的上表面设置了伺服电机驱动模块、步进电机驱动模块、集成WIFI模块蓝牙模块的stm32控制器(下文简称为stm32控制器),底板的下表面设置了三个伺服电机,经联轴器各连接一个全向轮,三个全向轮两两之间的夹角设置为60°,三个伺服电机通过伺服电机支架固定在底板的下表面,三个伺服电机分别引出霍尔线(U、V、W线)与编码器线(A相线、B相线),进一步连接伺服电机驱动模块,相应的,伺服电机驱动模块的TX、RX、控制量输入1、控制量输入2的接口分别连接着stm32控制器的USART3_RX、USART3_TX、PC2、PC3接口。
机器人的底板和载板通过抬升件固定与连接;载板的上表面设置了红外测距传感器、步进电机、激光测距仪支撑件、和圆形舱板;在圆形舱板的外表面均匀设置8个红外测距传感器,8个红外测距传感器的信号线都分别串接2千欧的电阻以进行降压处理,再依次连接在stm32控制器的PB8至PB15的端口。
机器人的步进电机设置在二层底板的中心位置,步进电机的伸出轴与激光测距仪支撑件固定连接,激光测距仪支撑件的上方和正前方分别设置了工业级激光测距仪和高清摄像头,步进电机与步进电机驱动模块通过两相线电连接,步进电机驱动模块的PULS+ 、DIR+接口分别连接至stm32控制器的PA13 、PA14接口,步进电机驱动模块的PULS-接口与DIR-接口短接,并连接至stm32控制器的GND接口,stm32控制器根据外部信号相对应地改变端口PA13与PA14的输出状态,实现驱动步进电机带动工业级激光测距仪和高速摄像头。
工业级激光测距仪的VCC、RXD、TXD、GND接口分别与stm32控制器的VCC、USART2 TX、USART2 RX、GND接口连接,通过程序指令,以串口通信的方式实时读取工业级激光测距仪对障碍物的检测距离;高速摄像头的FIFO芯片的Y0~Y7接口与stm32控制器的PB0~PB7接口电连接,并且高速摄像头的FIFO芯片的FIFO_RRST、FIFO_WRST、FIFO_RCLK、FIFO_WR_CTR、FIFO_OE接口与stm32控制器的PA4~PA8接口电连接。
图1 硬件结构设计图
2 软件系统搭建
运动方面,stm32控制器采集外部信号,转换成控制指令,传送给伺服电机驱动模块,可实现控制三个全向轮的运行方式。全向轮的轮子边缘分布着多个辊子,通过stm32控制器控制任意两个全向轮同向转动,另一个全向轮保持不动作,在合力作用下,小车直线行走;通过stm32控制器控制三个全向轮同向转动,小车零半径转弯。
避障方面,stm32控制器实时读取PB8至PB15的端口的电平状态,当某个方向上的红外测距传感器检测到障碍物,stm32控制器将从对应的端口读取到高电平信号,进一步的,stm32控制器将往伺服驱动器的控制端口输出相对应的脉冲+方向指令,即改变原来运动方向的指令,进而控制小车避开障碍物,往安全方向行走;由8个红外测距传感器组成的避障系统,覆盖范围为360°,每相隔45°就有1个红外测距传感器在实时检测是否存在障碍物,然而该小车是由3个全向轮驱动,也就是说,小车往任意一个方向直行时,该前进方向上都至少有一个红外测距传感器在实时检测是否存在障碍物,实现了全方位避障。
视觉方面,stm32控制器从FIFO中读取数据,读取过程为:FIFO读指针复位->给FIFO读时钟(FIFO RCLK)->读取第一个像素高字节->给FIFO读时钟(FIFO RCLK)->读取第一个像素低字节->给FIFO读时钟(FIFO RCLK)->读取第二个像素高字节->循环读取剩余像素->结束,实现采集障碍物的图像信息,结合视觉算法,通过识别障碍物的轮廓特征以及颜色特征进而识别前方的障碍物。
3 结束语
本文所做的工作总结如下:第一,根据功能的要求对全方位避障和障碍物识别的机器人进行了结构设计;第二,对机器人的功能进行了软件系统的搭建,建立起了机器人的程序流程。