目标:掌握赛车启动、调试、建图与导航
设备:Tianracer (Formula Mini) 环境:ROS 2 (Robot Operating System)
要让机器人动起来,我们有两种方式:
ros2 launch tianracer_bringup tianracer_bringup.launch.py
如果你只想测试某个特定部件,可以使用以下命令:
# 启动底盘(车轮、电机控制) ros2 launch tianracer_core tianracer_core.launch.py # 启动激光雷达(机器人的眼睛) ros2 launch tianracer_bringup lidar.launch.py
根据你的小车配置,选择启动以下设备:
# 启动 RGBD 深度相机 ros2 launch tianracer_bringup rgbd_camera.launch.py # 启动普通 USB 摄像头 ros2 launch tianracer_bringup usb_cam.launch.py # 启动 GPS 定位模块 ros2 launch tianracer_bringup gps.launch.py
RViz 是 ROS 的可视化工具。 它能把机器人看到的数字信号(雷达点云、坐标)变成我们要看懂的图像。
提示:下面的命令需要在电脑端的终端运行,不是在小车上!
# 1. 查看激光雷达 (Lidar) # 看到周围环境的轮廓点 ros2 launch tianracer_rviz view_lidar.launch.py # 2. 查看惯性测量单元 (IMU) # 看到小车的姿态(是不是歪了) ros2 launch tianracer_rviz view_imu.launch.py # 3. 查看里程计 (Odom) # 看到小车走过的轨迹 ros2 launch tianracer_rviz view_odom.launch.py
# 4. 查看摄像头图像 # 就像看监控画面 ros2 launch tianracer_rviz view_image.launch.py # 5. 查看机器人模型 (URDF/TF) # 检查机器人的关节和坐标系是否正常 ros2 launch tianracer_rviz view_robot.launch.py
启动机器人后,我们需要让它在一个陌生环境中走一圈,把地图画出来。我们提供三种算法:
# 方式 1: GMapping (经典算法,最常用) ros2 launch tianracer_slam gmapping.launch.py # 方式 2: SLAM Toolbox (功能更强大) ros2 launch tianracer_slam slam_toolbox.launch.py # 方式 3: Cartographer (Google 开发,精度高) ros2 launch tianracer_slam cartographer.launch.py
ros2 launch tianracer_rviz view_mapping.launch.py
建图完成后,必须保存才能在导航中使用。 地图默认保存在 tianracer_slam/maps/ 目录下,文件名为 tianbot_office。
tianracer_slam/maps/
tianbot_office
ros2 launch tianracer_slam map_save.launch.py
不需要地图,机器人直接根据传感器数据做出反应。就像人的条件反射。
# 1. 沿墙走 (Wall Following) # 贴着墙壁自动行驶 ros2 launch tianracer_navigation wall_following.launch.py # 2. 竞速模式 1 (NPU Battle Fast 1) ros2 launch tianracer_navigation npu_battle_fast1.launch.py # 3. 竞速模式 2 (NPU Battle Fast 2) ros2 launch tianracer_navigation npu_battle_fast2.launch.py
导航 = 规划器 (Planner) + 控制器 (Controller)
注意:运行以下命令前,请确保已经保存了地图,并修改命令中的 use_map 参数为你实际的地图名。
use_map
最常用的两种配置:
# 组合 1: NavFn (规划) + DWB (控制) # 最标准的 ROS2 导航配置 ros2 launch tianracer_navigation2 nav2.launch.py \ use_map:=tianbotoffice_603 use_planner:=navfn_dwb
# 组合 2: NavFn (规划) + TEB (控制) # TEB 算法对动态避障效果更好 ros2 launch tianracer_navigation2 nav2.launch.py \ use_map:=tianbotoffice_603 use_planner:=navfn_teb
适合复杂场景或高速赛车:
# 组合 3: SMAC + Graceful # SMAC 适合非全向移动机器人 ros2 launch tianracer_navigation2 nav2.launch.py \ use_map:=tianbotoffice_603 use_planner:=smac_graceful
# 组合 4: Theta* + MPPI # MPPI 是基于模型的预测控制,非常先进 ros2 launch tianracer_navigation2 nav2.launch.py \ use_map:=tianbotoffice_603 use_planner:=theta_star_mppi
# 组合 5: Theta* + Regulated Pure Pursuit (纯追踪) # 纯追踪算法适合高速循迹 ros2 launch tianracer_navigation2 nav2.launch.py \ use_map:=tianbotoffice_603 use_planner:=theta_star_rpp
# 组合 6: Theta* + Vector Pursuit (向量追踪) # 改进版的追踪算法 ros2 launch tianracer_navigation2 nav2.launch.py \ use_map:=tianbotoffice_603 use_planner:=theta_star_vector_pur
ros2 launch tianracer_bringup bringup.launch.py
ros2 launch tianracer_rviz view_lidar.launch.py
ros2 launch tianracer_slam gmapping.launch.py
ros2 launch tianracer_navigation2 nav2.launch.py
课堂任务:
遇到问题? 如果导航时小车原地打转,请检查是否正确设置了初始位置 (Initial Pose)。