小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 11487|回复: 7

小R科技ROS小车简易二次开发功能

[复制链接]
发表于 2021-8-14 16:39:59 | 显示全部楼层 |阅读模式
说明
本教程基于小R 履带式ROS雷达车,使用python进行快速通信测试等二次开发工作。
适配:树莓派版本坦克小车、JETSON NANO坦克小车、JETSON NANO 机械臂小车。
          其中机械臂小车波特率为 230400,其他两款为115200。
框架
以上版本小车,使用 rosserial_python 官方包与底板进行通信。我们基于此包做一个简单的二次开发工作。使用终端直接输入命令,或者使用python代码启动与次包进行通信。从而达到控制小车、获取信息等功能。
步骤1、结束后台进程
开机默认启动了部分ROS进程,我们需要在二次开发前手动结束这些进程。
  1. killall -9 rosnode
  2. killall -9 rosmaster
复制代码


2、启动 rosserial_python 节点
本教程提供了 rosserial.launch文件,内容如下:
  1. <launch>
  2.   <!--serial communication between arduino and pc via usb /-->
  3.   <node name="arduino_serial_node" pkg="rosserial_python" type="serial_node.py" output="screen">
  4.     <param name="port" value="/dev/xrbase" />
  5.     <param name="baud" value="230400" />
  6.   </node>
  7. </launch>
复制代码

可针对不同小车修改一下对应的通信波特率
  • 树莓派坦克车,JETSON NANO无机械臂履带车 :115200
  • JETSON NANO 有机械臂履带车:230400


新建 终端1 ,进入到当前文件目录后运行如下指令:
  1. cd ~/xr_api
  2. roslaunch rosserial.launch
复制代码
此终端可放在后台了,重新打开新的终端2进行后续操作。

3、终端指令操作
在新开的终端2,进入到对应目录后执行后续操作
  1. cd ~/xr_api
复制代码

3.1 终端查看驱动板所有话题
  1. rostopic list
复制代码

此指令为罗列所有话题,显示如下
  1. xrrobot@xrrobot-desktop:~$ rostopic list
  2. /SC_master
  3. /SC_slave
  4. /battery
  5. /cmd_vel
  6. /diagnostics
  7. /joint_states
  8. /pid
  9. /raw_imu
  10. /raw_vel
  11. /rosout
  12. /rosout_agg
复制代码
3.2 终端查看IMU信息
  1. rostopic echo raw_imu
复制代码
此指令显示陀螺仪的线加速度、角加速度、地磁信息
  1. xrrobot@xrrobot-desktop:~$ rostopic echo raw_imu
  2. linear_acceleration:
  3.   x: 1.796875
  4.   y: -0.3125
  5.   z: 8.4375
  6. angular_velocity:
  7.   x: -0.019426273182
  8.   y: -0.0485656820238
  9.   z: -0.00121414207388
  10. magnetic_field:
  11.   x: 369.839996338
  12.   y: 12.8800001144
  13.   z: -644.91998291
复制代码
3.3 终端查看电压信息
  1. rostopic echo battery
复制代码

此指令为显示陀螺仪的线加速度、角加速度、地磁信息
  1. 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(逆时针+,顺时针-)。
  • 自动补全格式,不能直接复制粘贴,会出错。可复制版本的代码,参考后续 前进后退等教程内容。自动补全指令

  1. rostopic pub -r 10 /cmd_vel
  2. #两次TAB之后
  3. 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"
复制代码

前进
  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: 0.0}}'
复制代码
后退
  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: 0.0}}'
复制代码

原地左转
  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}}'
复制代码

原地右转
  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}}'
复制代码

左前差速转弯
  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}}'
复制代码

右前差速转弯
  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数据
  1. python get_imu.py
复制代码

4.2 python打印电压数据
  1. python get_bat.py
复制代码

4.3 python控制小车运动
  1. python cmd_vel.py
复制代码


游客,如果您要查看本帖隐藏内容请回复







回复

使用道具 举报

发表于 2021-11-10 10:05:07 | 显示全部楼层
学习学习,谢谢分享
回复 支持 反对

使用道具 举报

发表于 2021-12-15 16:08:20 | 显示全部楼层
学习学习,谢谢分享
回复 支持 反对

使用道具 举报

发表于 2022-9-22 21:27:34 | 显示全部楼层
已购买ROS小车,想要尝试二次开发,查看学习!
回复 支持 反对

使用道具 举报

发表于 2022-10-11 10:21:51 | 显示全部楼层

学习学习,谢谢分享
回复 支持 反对

使用道具 举报

发表于 2024-4-3 08:01:53 | 显示全部楼层
学习学习 谢谢分享 谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-4-20 09:00 , Processed in 1.095093 second(s), 21 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表