一、新建工程
新建工程example24_ros2_car
修改配置
二、编写代码
代码使用 Esp32McpwmMotor 库初始化电机,设置 micro-ROS
通信参数以连接到 ROS2 代理,并初始化一个 ROS2 节点和一个订阅者,以订阅 /cmd_vel 主题上的 Twist 消息。
当接收到新的 Twist 消息时,调用 twist_callback() 函数提取线性和角速度,并相应地控制电机。如果两个速度都为零,则电机停止。否则,根据方向设置电机速度。在正向方向上,速度设置为 70,在反向方向上为 -70。
loop() 函数重复调用 rclc_executor_spin_some() 来处理来自 ROS2 网络的传入数据。
需要注意的是,你要根据自己的网络情况修改下面的代码以实现无线通信。
三、下载测试
将代码下载到小车,运行agent,点击RST等待接入。
sudo docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO udp4 --port 8888 -v6
接着我们使用ROS 2的键盘控制节点来进行控制测试
ros2 run teleop_twist_keyboard teleop_twist_keyboard
接着按下入JKL,几个按键,看一下小车是否动了起来。
四、总结
本节我们通过将小车接入MicroROS完成了一个遥控小车的开发。
原作者:小鱼 鱼香ROS