1 底盘系统介绍(Xu, Chen et al. 2016)
此机器人移动底盘基于ROS(Robot Operation System)系统开发,将复杂的机器人底层“屏蔽”,给开发者提供了一个简单的软件编程环境,大大降低了机器人开发难度。
机器人底盘运动系统的基本构成如下:采用两个直流电机分别控制左右轮,两个编码器采集两轮的转速进行PID闭环控制,核心代码在底层控制器上运行。底层控制器作为一个ROS节点接收与系统进行通行。开发者只需要在ROS系统中输入对应的Topic 指令即可控制小车前进、后退与转弯。
本篇是我们机器人系统开发教学的第四篇,将会第一次运行小车,通过一个最简单的教程让大家体会到使用键盘远程控制的效果,让开发者体会ROS系统的神奇。
2 运行键盘控制底盘小车DEMO
开启一个终端,运行底盘控制主节点,输入:
roslaunch ros_arduino_python arduino.launch
如下图所示,节点即开启成功。
重新打开一个终端,开启键盘节点:
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
开启成功后,如下图所示
至此,就可以通过键盘控制底盘移动了。其中,“i”是前进,“,”是后退,“j”是左转,“l”是右转。
3 核心代码讲解
键盘控制是通过~/catkin_ws/src/teleop_twist_keyboard文件夹下的teleop_twist_keyboard.py文件实现的。实现过程是通过读取键盘输入值,转化为ROS系统下的cmd_vel话题,小车底盘通过订阅该话题来决定自己的运动状态。
向该主题发布的消息类型是twist,其中twist.linear是底盘运动的线速度,twist.angular是底盘运动的角速度。
4 最后
到这里我门就实现了用键盘控制小车运行的一个简单例程。其中关键点是cmd_vel指令和teleop_twist_keyboard.py文件。如果需要自己开发,可以修改我们本文件中的指令即可。