Formula Mini (Tianracer) 实战指南

目标:掌握赛车启动、调试、建图与导航

设备:Tianracer (Formula Mini)
环境:ROS 2 (Robot Operating System)

📋 本节目录

  1. 启动机器人 (Interfacing)
  2. 可视化调试 (RViz)
  3. 激光建图 (SLAM)
  4. 反应式运动 (Reactive)
  5. 自动导航 (Navigation)

1️⃣ 启动机器人 (Interfacing)

一键启动 vs 分布启动 🚀

要让机器人动起来,我们有两种方式:

  1. 一键启动 (All at once):就像打开总开关,启动所有设备。
  2. 单独启动 (Separately):像检查零件一样,单独开启某个传感器。

✅ 推荐:一键启动

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

2️⃣ 可视化调试 (RViz) 🔍

什么是 RViz?

RViz 是 ROS 的可视化工具。
它能把机器人看到的数字信号(雷达点云、坐标)变成我们要看懂的图像。

💡 提示:下面的命令需要在电脑端的终端运行,不是在小车上!

查看传感器数据 (1/2)

# 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

查看传感器数据 (2/2)

# 4. 查看摄像头图像
# 就像看监控画面
ros2 launch tianracer_rviz view_image.launch.py

# 5. 查看机器人模型 (URDF/TF)
# 检查机器人的关节和坐标系是否正常
ros2 launch tianracer_rviz view_robot.launch.py

3️⃣ 激光建图 (Mapping) 🗺️

绘制地图 (SLAM)

启动机器人后,我们需要让它在一个陌生环境中走一圈,把地图画出来。我们提供三种算法:

# 方式 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

ros2 launch tianracer_slam map_save.launch.py

4️⃣ 反应式运动 (Reactive) ⚡

什么是反应式运动?

不需要地图,机器人直接根据传感器数据做出反应。就像人的条件反射

# 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

5️⃣ 自动导航 (Navigation) 🧭

导航的核心组合

导航 = 规划器 (Planner) + 控制器 (Controller)

  • Planner: 大脑,规划从 A 到 B 的路线。
  • Controller: 手脚,控制油门和方向盘去执行路线。

注意:运行以下命令前,请确保已经保存了地图,并修改命令中的 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

进阶算法组合 (1/2) 🧠

适合复杂场景或高速赛车:

# 组合 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

进阶算法组合 (2/2) 🏎️

# 组合 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

📚 本节总结

步骤 关键命令 (简化) 作用
1. 启动 ros2 launch tianracer_bringup bringup.launch.py 唤醒机器人
2. 调试 ros2 launch tianracer_rviz view_lidar.launch.py 检查传感器
3. 建图 ros2 launch tianracer_slam gmapping.launch.py 绘制环境
4. 保存 ros2 launch tianracer_slam map_save.launch.py 留下地图
5. 导航 ros2 launch tianracer_navigation2 nav2.launch.py 自动驾驶

实战演练 🎮

课堂任务

  1. [ ] 使用 GMapping 算法构建教室的地图
  2. [ ] 成功保存地图文件
  3. [ ] 使用 NavFn + DWB 组合,让小车自动从门口走到讲台

遇到问题?
如果导航时小车原地打转,请检查是否正确设置了初始位置 (Initial Pose)。

■ tianbot