电子工坊

ROS基础 5 | Rosserial下位机通讯测试

ROS想要跑起来需要与底层驱动板通讯,通讯有很多方式,ROS社区已针对Arduino做好了通讯包,rosserial_arduino(GitHub地址

但是这种方式很占用内存(MEGA及以上才跑得动),一般都是使用私有协议做通讯,rosserial还是比较适合学习。

现在我们的开发板已烧录好程序,待与上位机通讯

下位机连接

下位机接入上位机USB串口后检查一下驱动是否成功识别

lsusb
ls -l /dev/lingao

在一键安装的时候添加udev rules规则,可根据usb的PID/VID生成/dev/lingao和/dev/rplidar等软链接,而不需要指定具体的/dev/ttyUSB*,这样做的好处就是以防这次的ttyUSB0是雷达下次是主控板。

由上图可看出usb已连接并识别成功

启动测试

主控板的与上位机启动通讯全靠bringup.launch,该命令处理上位机订阅下位机发送信息或者上位机发布命令到下位机

 roslaunch lingao_bringup bringup.launch


没有错误基本上就是启动成功

发布 Twist 消息控制

我们可以通过发布 Twist 消息控制小车运动

rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.3, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.0}}'

现在分解这条命令
– /cmd_vel :发布话题
– geometry_msgs/Twist :消息类型
– -r 10 :以10HZ頻率發布
– ‘{linear: {x: 0.3, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.0}}’ : 总结就是让机器人向x轴前进,以线速度:0.3m/s,绕z轴正方向旋转:角速度:0.0ral/s

键盘控制

通过安装teleop_twist_keyboard包可使用键盘命令控制程序,通估键盘发布线速度、角速度从而控制小车运动

rosrun lingao_bringup teleop_twist_keyboard.py

*默认小车已安装,如无法启动请设置权限

roscd lingao_bringup
chmod +x -R scripts/

现在可以使用键盘控制小车运行,ROS的通讯测试完毕!