陆志勇 张占胜 沙 楠 李 爽
(沈阳化工大学信息工程学院,辽宁 沈阳 110142)
从控制系统分层的角度来看可分为两层,其一是以RT1052单片机为核心的控制器,也称为底层控制系统;其二是以微型电脑为核心的处理器,称为上层处理系统。
底层处理系统只负责在接收到上层发来的控制指令以后对单片机和舵机进行控制。
上层处理系统则要读取来自激光雷达和IMU的数据信息,然后这些数据经过一系列的处理之后进行发布,slam_gmapping订阅这些消息进行地图的构建。在进行导航的过程中需要用到AMCL进行定位,在move_base节点中进行路径规划,然后发布控制命令消息,我们只需订阅这个消息,当有消息发布时则自动执行回调函数对单片机下发控制命令。在PC端通过PID计算出所需要的PWM之后,直接将其发送给单片机。同时我们也未直接使用move_base发布的控制命令,而是使用订阅的局部规划进行处理,然后做出决策。
智能车的硬件部分主要由以下几部分组成:激光雷达、姿态传感器、无刷直流电机、舵机、处理器。智能车硬件系统整体结构图如图1所示。
图1 硬件机构图
电源电路主要包括电池供电电路、ROS主控电源电路、单片机电源电路、雷达电源电路、舵机电源电路等。如图2所示。
图2 电池供电电路
串口通信电路包括雷达与ROS主控之间的通信,单片机与ROS主控之间的通信两部分。雷达与ROS主控之间的通信采用FT232RL芯片设计USB转串口电路如图3所示。
图3 雷达与ROS主控串口通信电路
单片机与ROS主控之间的通信采用CH340G芯片设计USB转串口电路如图4所示。
软件主要在ROS机器人操作系统上,添加上激光雷达和IMU的姿态传感器的驱动程序,这样就可以获得相应周围环境的信息和车整体的姿态信息;通过激光雷达可以采集到整体的环境信息。将这些采集到的数据进行处理,通过SLAM的算法对整个环境地图进行构建,这样就可以获得整体环境的地图,再通过路径规划和自主导航,就可以控制车到达想要到的相应位置上,系统的整体软件框架如图5所示。
图4 单片机与ROS主控串口通信电路
图5 软件框架
通过上位机计算出相应的控制数据,通过串口传输到RT1052单片机。RT1052单片机搭载FreeRTOS嵌入式系统,对串口通信、舵机控制、电机控制任务进行调度,控制智能车以正确的姿态运行。驱动部分主要包括电机驱动、舵机驱动、PS2手柄驱动。驱动部分的程序框图如图6所示。
图6 驱动程序框图
本课题关联新兴的人工智能与机器人行业,以无人驾驶汽车为应用背景,涵盖丰富的专业知识与专业技能点。自行设计单片机部分的硬件电路,搭建机器人ROS系统,编写相应的串口和驱动程序。车模采用自制电路板和ROS系统进行通信,车模能够自主实现地图构建,自主规划路径和导航避障功能。