以Raspberry Pi作为嵌入式 系统的实现平台。Raspberry Pi中同样搭载Ubuntu系统,运行ROS。Raspberry Pi主要实现与MRobot的相互通信。
安装Ubuntu 16.04 Raspberry Pi
可以安装多种版本的Linux,同时也可以安装 Windows 10 IoT系统。为了运行ROS,这里选择安装Ubuntu 16.04 MATE系统。
控制系统与MRobot通信
控制系统与MRobot驱动系统之间通过串口进行通信,控制系统下 发机器人运动的速度指令,机器人上传里程计、超声波等传感器信息。所以为了实现控制系统与MRobot之间的通信,我们需要了解两者之间的通信协议:
'''
[消息头(2字节)] [命令(2字节)] [长度(1字节)] [数据(n字节, n =长度)] [校验(1字节)]
[消息尾(2字节)]
'''
5.4.5 PC端控制MRobot
目前我们已经实现了控制系统中Raspberry Pi部分的主要功能, 接下来需要加入PC端的功能:通过类似于控制小乌龟的键盘控制节点,实现对MRobot的遥控操作。
Raspberry Pi上实现的通信节点订阅了名为“cmd_vel”的话题。我们只需要在PC端实现一个键盘遥控 的 节 点 , 将 键 盘 点 击 转 换 成 Twist 格 式 的 速 度 控 制 消 息 , 通 过“cmd_vel”话题发布,Raspberry Pi端接收到消息后就可以控制
MRobot运动了。
为保证PC和Raspberry Pi之间的通信顺畅,需要配置相应的IP地
址和环境变量。
现在就可以在PC和Raspberry Pi端启动相应的节点,运行机器人
并开始进行遥控:
$ roscore (PC)
$ roslaunch mrobot_bringup mrobot.launch (Raspberry Pi)
$ rosrun mrobot_teleop mrobot_teleop.py (PC)
Python文件可以作为执行程序直接运行,但是在运行之前,必须 使用系统命令为Python文件添加可执行权限:
sudo chmod+x XXX.py
。 在PC端的键盘控制节点终端中根据提示点击键盘,MRobot就随之运动。
除了控制系统,外部传感系统也十分重要。外部传感器的类型较 为丰富,针对不同的应用场景,机器人系统常会用到彩色摄像头、RGB-D摄像头、激光雷达、超声波等外部传感器。