You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
刘志立 4100303b87
第一次提交
4 months ago
..
config 第一次提交 4 months ago
final_navigation 第一次提交 4 months ago
launch 第一次提交 4 months ago
maps 第一次提交 4 months ago
resource 第一次提交 4 months ago
rviz 第一次提交 4 months ago
urdf 第一次提交 4 months ago
worlds 第一次提交 4 months ago
README.md 第一次提交 4 months ago
package.xml 第一次提交 4 months ago
setup.cfg 第一次提交 4 months ago
setup.py 第一次提交 4 months ago

README.md

🤖 Final Navigation - 融合导航系统

📋 项目简介

融合导航系统结合了 Task_1 和 Task_3 的优点,创建了一个稳定、高效的 ROS2 导航解决方案。

🎯 设计原理

组件 来源 原因
机器人设计 Task_1 四轮后驱,稳定性好
激光雷达配置 Task_3 always_on 标签,避免崩溃
世界环境 Task_3 房屋环境,真实场景
SLAM 配置 Task_3 建图效果验证良好
Nav2 配置 Task_1 导航效果验证良好
分步启动 Task_1 流程清晰,易于调试

🔑 关键发现

为什么 Task_3 可以正常运行而 Task_1 崩溃?

  • Task_1 的激光雷达有 <always_on>true</always_on> 标签
  • Task_3 没有这个标签
  • 这个标签在虚拟机环境中导致 Gazebo 图形渲染冲突
  • 融合版本采用 Task_3 的配置,完全避免崩溃

🚀 快速开始

1 编译项目

cd ~/ros2_ws/src
# 将 task_final/final_navigation 复制到这里

cd ~/ros2_ws
colcon build --packages-select final_navigation
source install/setup.bash

2 步骤1验证环境

# 启动 Gazebo 环境
ros2 launch final_navigation step1_gazebo.launch.py

# 新终端:测试键盘控制
ros2 run teleop_twist_keyboard teleop_twist_keyboard

验证成功

  • Gazebo 显示房屋环境
  • 机器人正常加载
  • 键盘可以控制移动

3 步骤2SLAM 建图

# 启动建图
ros2 launch final_navigation step2_mapping.launch.py

# 新终端:键盘控制建图
ros2 run teleop_twist_keyboard teleop_twist_keyboard

# 建图 3-5 分钟后,新终端保存地图
cd ~/ros2_ws
source install/setup.bash
ros2 run nav2_map_server map_saver_cli -f install/final_navigation/share/final_navigation/maps/house_map

建图技巧

  • 慢速移动(线速度 0.2 m/s
  • 沿墙壁移动
  • 探索所有房间
  • 回到起点触发回环闭合

4 步骤3自主导航

# 启动导航
ros2 launch final_navigation step3_navigation.launch.py

# 在 RViz2 中:
# 1. 点击 "2D Pose Estimate" 设置初始位姿
# 2. 点击 "Nav2 Goal" 设置目标点
# 3. 观察机器人自动导航

🤖 机器人配置

四轮后驱设计Task_1

  • 驱动轮:后左轮 + 后右轮(黑色,μ=1.0
  • 从动轮:前左轮 + 前右轮(白色,μ=0.1
  • 底盘0.5m × 0.3m × 0.1m
  • 轮距0.3m
  • 轴距0.35m
  • 车轮半径0.06m

激光雷达配置Task_3

  • 更新率40 Hz
  • 采样点720
  • 扫描范围360度
  • 距离范围0.1-30m
  • 关键always_on 标签

🏠 环境配置

房屋世界Task_3

  • 房间15m × 4m左侧
  • 走廊2m × 6m中间
  • 房间25m × 4m右侧
  • 障碍物3个咖啡桌
  • 特点:真实室内环境,适合导航测试

📂 项目结构

final_navigation/
├── README.md                      # 项目说明
├── package.xml                    # ROS2 包配置
├── setup.py                       # Python 包配置
├── setup.cfg                      # 安装配置
│
├── final_navigation/              # Python 包
│   └── __init__.py
│
├── launch/                        # 启动文件(分步设计)
│   ├── step1_gazebo.launch.py    # 步骤1验证环境
│   ├── step2_mapping.launch.py   # 步骤2SLAM 建图
│   └── step3_navigation.launch.py # 步骤3Nav2 导航
│
├── urdf/                          # 机器人模型
│   └── fusion_robot.urdf.xacro   # 融合机器人(四轮后驱 + Task_3激光
│
├── worlds/                        # 仿真环境
│   └── house_world.world          # 房屋世界Task_3
│
├── config/                        # 配置文件
│   ├── slam_params.yaml           # SLAM 配置Task_3
│   └── nav2_params.yaml           # Nav2 配置Task_1
│
├── rviz/                          # 可视化配置
│   ├── slam_view.rviz             # SLAM 视图
│   └── nav_view.rviz              # 导航视图
│
├── maps/                          # 地图保存目录
│   └── (保存的地图文件)
│
└── resource/                      # 资源标记
    └── final_navigation

🛠️ 技术栈

组件 版本/说明
ROS2 Humble
仿真 Gazebo 11
SLAM SLAM ToolboxTask_3 配置)
定位 AMCL
导航 Nav2 Navigation StackTask_1 配置)
可视化 RViz2
遥操作 teleop_twist_keyboard

成功标志

步骤1环境验证

  • Gazebo 正常显示房屋环境
  • 机器人正常加载
  • 键盘控制响应

步骤2SLAM 建图)

  • RViz2 地图从灰色变黑白
  • 所有房间清晰可见
  • 地图文件保存成功

步骤3自主导航

  • 机器人自动移动到目标
  • 避开障碍物
  • 到达目标点停止

🔧 常见问题

Q: Gazebo 或 RViz2 崩溃?

A: 这就是为什么我们创建融合版本!

  • 融合版本使用 Task_3 的激光雷达配置(无 always_on 标签)
  • 如果仍然崩溃,检查虚拟机 3D 加速是否关闭
  • 或使用环境变量:export LIBGL_ALWAYS_SOFTWARE=1

Q: 地图不更新?

A:

  • 确保机器人在移动
  • 检查 /scan 话题:ros2 topic hz /scan
  • 查看 SLAM 日志是否有错误

Q: 导航不工作?

A:

  • 必须先设置初始位姿2D Pose Estimate
  • 确保地图已正确加载
  • 检查 Nav2 服务器状态:ros2 lifecycle get /controller_server

🎯 项目优势

  1. 稳定性:使用 Task_3 的激光雷达配置,不崩溃
  2. 性能Task_1 的四轮后驱设计,稳定性好
  3. 真实性Task_3 的房屋环境,接近真实场景
  4. 完整性SLAM + 导航完整流程
  5. 易用性:分步启动,流程清晰

📊 配置对比

激光雷达配置

参数 Task_1 Task_3 Fusion
update_rate 20 Hz 40 Hz 40 Hz
always_on 有(崩溃) 无(稳定)
samples 720 720 720

机器人设计

参数 Task_1 Task_3 Fusion
驱动方式 后驱 前驱 后驱
车轮数 4轮 4轮+万向轮 4轮
稳定性

📚 相关文档

  • task_1/ - 原始四轮后驱项目
  • task_3/ - 原始房屋导航项目
  • 项目创建进度.md - 融合项目创建记录

🎉 总结

Final Navigation 是一个经过验证的稳定导航系统,结合了两个项目的优点:

  • 🚗 Task_1 的稳定机器人设计
  • 🏠 Task_3 的真实环境和稳定配置
  • 🗺️ 完整的 SLAM 建图流程
  • 🎯 可靠的 Nav2 导航功能

立即开始使用吧! 🚀