记录零基础ROS2学习和实践(三)(小车移动篇(1))
命令行实现小车移动
上一章说了ros的功能包中一些文件的作用,这章我说说我是如何在ros2平台上让我的底盘小车实现移动。还有我使用的环境是untunbu22.04
提前说明一下,让小车移动有很多方式,接下来我会介绍几种方式。
打开小车底盘驱动
先开启底盘小车的驱动并且与你的电脑或者nano进行通信。这边我使用的是电脑与小车通信(使用nano其实一个道理,nano也是一个微型电脑)。
(%E5%B0%8F%E8%BD%A6%E7%A7%BB%E5%8A%A8%E7%AF%87(1))/1.png)
这是我工作空间下src文件夹下的功能包,这两个就是关于底盘小车的驱动功能包。主要使用的功能包还是turn_开头的功能包。
(%E5%B0%8F%E8%BD%A6%E7%A7%BB%E5%8A%A8%E7%AF%87(1))/2.png)
如图,因为launch文件我说过是启动文件,所以包中的功能是通过launch文件夹下的launch.py文件来启动的,其中tank.launch.py是这个turn开头的这个底盘驱动包本身自带launch启动文件,所以我们要先启动它,来实现底盘驱动的连接。
如何打开底盘驱动
我这边的小车主要由STM32系列的单片机来控制,32板子上有可以通信的接口,如C口,我就是通过C口-USB接口的线连接到我的电脑。
(%E5%B0%8F%E8%BD%A6%E7%A7%BB%E5%8A%A8%E7%AF%87(1))/3.png)
如果你是使用虚拟机,不是双系统会跳出这个界面,把连接到电脑USB口连接到虚拟机上。
(%E5%B0%8F%E8%BD%A6%E7%A7%BB%E5%8A%A8%E7%AF%87(1))/4.png)
然后回到你建立工作空间的根目录下,也就是通常命名为**_ws的文件夹下,在此目录下打开命令端。
(%E5%B0%8F%E8%BD%A6%E7%A7%BB%E5%8A%A8%E7%AF%87(1))/5.png)
按照上图一步一步的命令,先激活你的工作空间即source你install下的setup文件。然后输入ls /dev/ttyACM*这个命令,看看你的接口是哪一个我这边是ttyACM0,然后输入sudo chmod 666 /dev/ttyACM0给予ttyACM0权限。这样就给了这个通信端口权限,就能与小车进行通信。
注意下图,要去查看你下你们小车的端口名字是说明例如我是/dev/ttyACM0串口设备名,不然有可能叫做其他比如ttyUSB0啥其他乱七八糟的
(%E5%B0%8F%E8%BD%A6%E7%A7%BB%E5%8A%A8%E7%AF%87(1))/6.png)
给完通信串口权限之后,用ros2命令打开底盘驱动的launch文件。我这边是turn_on_dlrobot_robot包下的tank.launch.py文件。启动之后我这边就会显示dlrobot_robot serial port opened说明底盘串口部分已经打开。接下来就是给底盘小车命令即可开始运行。
(%E5%B0%8F%E8%BD%A6%E7%A7%BB%E5%8A%A8%E7%AF%87(1))/7.png)
这章就先说最简单的一个让小车移动的方式,用命令行直接让它运动,
1 | ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.3, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}" |
这个是通过命令行发布 ROS 2 话题消息,具体来说是发布一个 geometry_msgs/msg/Twist 类型的消息到 /cmd_vel 话题上,用于控制移动机器人的速度。这里是速度是0.3m/s,建议还是速度调低一点,比较安全。在上面打开小车底盘驱动的基础上重开一个命令端,别忘了source一下环境,然后输入这条指令,小车即可向前运动,至于xyz的具体含义,各位可以自己去查询一下,也是很简单就可以查到的。
小结
说明一下,最近小导布置的任务有点多,更新的速度会偏慢,接下来几章就会说明怎么通过在同一个包下建立launch文件来控制小车移动、通过键盘来控制小车和在不同的包下来建立launch文件来控制小车(这种方法比较好进行调试,十分建议)


