说明 本教程基于小R 履带式ROS雷达车,使用python进行快速通信测试等二次开发工作。 适配:树莓派版本坦克小车、JETSON NANO坦克小车、JETSON NANO 机械臂小车。 其中机械臂小车波特率为 230400,其他两款为115200。 框架 以上版本小车,使用 rosserial_python 官方包与底板进行通信。我们基于此包做一个简单的二次开发工作。使用终端直接输入命令,或者使用python代码启动与次包进行通信。从而达到控制小车、获取信息等功能。 步骤1、结束后台进程开机默认启动了部分ROS进程,我们需要在二次开发前手动结束这些进程。 - killall -9 rosnode
- killall -9 rosmaster
复制代码
2、启动 rosserial_python 节点本教程提供了 rosserial.launch文件,内容如下: - <launch>
- <!--serial communication between arduino and pc via usb /-->
- <node name="arduino_serial_node" pkg="rosserial_python" type="serial_node.py" output="screen">
- <param name="port" value="/dev/xrbase" />
- <param name="baud" value="230400" />
- </node>
- </launch>
复制代码
可针对不同小车修改一下对应的通信波特率
新建 终端1 ,进入到当前文件目录后运行如下指令:
- cd ~/xr_api
- roslaunch rosserial.launch
复制代码此终端可放在后台了,重新打开新的终端2进行后续操作。
3、终端指令操作在新开的终端2,进入到对应目录后执行后续操作
3.1 终端查看驱动板所有话题
此指令为罗列所有话题,显示如下 - xrrobot@xrrobot-desktop:~$ rostopic list
- /SC_master
- /SC_slave
- /battery
- /cmd_vel
- /diagnostics
- /joint_states
- /pid
- /raw_imu
- /raw_vel
- /rosout
- /rosout_agg
复制代码 3.2 终端查看IMU信息
此指令显示陀螺仪的线加速度、角加速度、地磁信息 - xrrobot@xrrobot-desktop:~$ rostopic echo raw_imu
- linear_acceleration:
- x: 1.796875
- y: -0.3125
- z: 8.4375
- angular_velocity:
- x: -0.019426273182
- y: -0.0485656820238
- z: -0.00121414207388
- magnetic_field:
- x: 369.839996338
- y: 12.8800001144
- z: -644.91998291
复制代码 3.3 终端查看电压信息
此指令为显示陀螺仪的线加速度、角加速度、地磁信息 - xrrobot@xrrobot-desktop:~/xr_api$ rostopic echo batterybattery: 10.2561903
复制代码 3.4 终端控制小车运动控制指令,可通过输入rostopic pub -r 10 /cmd_vel后,多按几次TAB键,会把格式补全,然后再修改实际控制参数。 其中-r 10是10Hz频率循环发送,如果需要停止,则需要结束当前指令,我们也可以替换为-1只发布一次指令。 自动补全状态如下,其中线速度,角速度默认都是0,我们坦克小车实际只有 线速度的x为(前+,后-),以及角速度的z(逆时针+,顺时针-)。 自动补全格式,不能直接复制粘贴,会出错。可复制版本的代码,参考后续 前进后退等教程内容。自动补全指令
- rostopic pub -r 10 /cmd_vel
- #两次TAB之后
- rostopic pub -r 10 /cmd_vel geometry_msgs/Twist "linear: x: 0.0 y: 0.0 z: 0.0angular: x: 0.0 y: 0.0 z: 0.0"
复制代码
前进 - rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'
复制代码后退 - rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: -0.5, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'
复制代码
原地左转 - rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 1}}'
复制代码
原地右转 - rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: -1}}'
复制代码
左前差速转弯 - rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 1}}'
复制代码
右前差速转弯 - rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: -1}}'
复制代码
4、python代码执行此步骤需要步骤2为前提。执行步骤2后,可通过运行对应python代码启动对应功能。
4.1 python打印IMU数据
4.2 python打印电压数据
4.3 python控制小车运动
|