Skip to main content

基于ROS2的机器人控制与导航

1. 编译工作空间

工作环境--ROS2:humble,Ubuntu 22.04 参考ROS2书籍:ROS2机器人开发:从入门到实践,作者:桑欣(鱼香ROS),机械工业出版社

cd sharkbot/chapt7_ws/
colcon build
source install/setup.bash

2. 官方键盘控制节点,改变消息类型

参考https://docs.ros.org/en/ros2_packages/humble/api/teleop_twist_keyboard/

ros2 run teleop_twist_keyboard teleop_twist_keyboard

弃用:ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -p stamped:=true

运行键盘控制节点,自己编写

cd sharkbot/chapt7_ws/
source install/setup.bash
ros2 run keyboard_teleop keyboard_teleop

3. 运行导航

cd sharkbot/chapt7_ws/
source install/setup.bash
ros2 launch fishbot_navigation2 navigation2.launch.py

4. twist消息转换--将键盘控制/导航的消息转换为机器人控制器的消息(注意转换的顺序,很重要)

https://github.com/joshnewans/twist_stamper

cd sharkbot/chapt7_ws/
source install/setup.bash
ros2 run twist_stamper twist_stamper --ros-args -r cmd_vel_in:=cmd_vel -r cmd_vel_out:=fishbot_tricycle_controller/cmd_vel

5. 运行机器人模型,参考小鱼的模型,控制器参考官方ros2_control

https://gitee.com/ohhuo/ros2bookcode https://control.ros.org/master/doc/ros2_controllers/tricycle_controller/doc/userdoc.html

  • Rviz
cd sharkbot/chapt7_ws/
source install/setup.bash
ros2 launch fishbot_description display_robot.launch.py
  • Gazebo
cd sharkbot/chapt7_ws/
source install/setup.bash
ros2 launch fishbot_description gazebo_sim.launch.py
  • slam建图
cd sharkbot/chapt7_ws/
source install/setup.bash
ros2 launch slam_toolbox online_async_launch.py use_sim_slam:=true
  • 保存地图
cd sharkbot/chapt7_ws/fishbot_navigation2/maps/
source install/setup.bash
ros2 run nav2_map_server map_saver_cli -f room