forked from zbw/yiliao2026
3.0 KiB
3.0 KiB
CLAUDE.md
项目概述
这是一个 ROS 2 Humble 工作空间,用于 Ackermann 转向小车的 Gazebo 仿真、SLAM 建图和 Nav2 导航。
工作空间结构
test_ws/
├── src/
│ ├── gc_navigation2_slamtoolbox/ # 导航+SLAM 启动文件和配置
│ │ ├── launch/ # Python launch 文件
│ │ ├── config/ # slam_toolbox 参数
│ │ ├── params/ # Nav2 参数
│ │ ├── maps/ # 地图文件 (.pgm, .yaml, .posegraph)
│ │ └── world/ # Gazebo 模型 (zhihui/)
│ └── origincar_description/ # 机器人 URDF 和 Gazebo world
│ ├── urdf/ # origincar.urdf
│ ├── world/ # .world 文件
│ ├── meshes/ # 3D 模型
│ ├── launch/ # display.launch.py
│ └── rviz/ # RViz 配置
├── build/ # colcon build 输出
├── install/ # colcon install 输出 (含符号链接)
└── log/ # 构建日志
构建命令
cd /home/guoch/test_ws
source /opt/ros/humble/setup.bash
colcon build --symlink-install
source install/setup.bash
常用 Launch 文件
| 文件 | 功能 |
|---|---|
gc_slam_mapping.launch.py |
Gazebo + SLAM 建图模式 |
gc_nav2_with_slam_online.launch.py |
已知地图 + SLAM 在线更新 + Nav2 导航 |
机器人参数 (origincar)
- 类型: Ackermann 转向小车
- 尺寸: 0.276 × 0.214 × 0.211 m (长×宽×高)
- 轴距: 0.168 m,轮距: 0.189 m
- 轮子: 半径 0.03 m,厚 0.025 m
- 激光雷达: 360°, 0.12~3.5 m, 5 Hz
- IMU: 100 Hz, 含高斯噪声
- Gazebo 插件:
gazebo_ros_ackermann_drive,gazebo_ros_ray_sensor,gazebo_ros_imu_sensor
关键设计
- map_server 提供全量静态底图(
/map) - slam_toolbox 负责定位和增量建图,重映射
/map→/slam_map避免冲突 - Nav2 使用
global_costmap/static_layer ← /map+local_costmap/obstacle_layer ← /scan - 保存地图:
ros2 service call /slam_toolbox/serialize_map ...
地图文件
地图放在 src/gc_navigation2_slamtoolbox/maps/,包含:
xxx.pgm— 地图图像xxx.yaml— 地图元数据 (resolution, origin, thresholds)xxx.posegraph— 序列化的位姿图
Gazebo World
World 文件在 src/origincar_description/world/:
zhihui.world— 智慧楼墙体环境(内联模型)test.world— 测试环境fishbot.world/gc_world.world— 其他场景
注意事项
- 使用
--symlink-install构建,Python launch 文件修改后无需重新编译 .world文件不应使用model://外部引用,应将模型内联定义robot_base_frame在 ackermann plugin 中应设为base_footprint