ROS2 与 Gazebo Sim Harmonic 中的阿克曼转向车辆仿真
本项目展示了一个具备阿克曼转向功能的定制车辆仿真,基于ROS2和Gazebo Sim Harmonic 环境开发。该模型集成了多种传感器和导航工具,实现自主运行,是该仿真框架中首批实现阿克曼转向车辆的项目之一。
| 3D 激光雷达点云可视化 | 仓库环境模型 |
| ----- | ----- |
|
|
|
如果你喜欢此项目,欢迎点个⭐支持!
目录
- ROS2 与 Gazebo Sim Harmonic 中的阿克曼转向车辆仿真
- 功能
- 1 阿克曼转向
- 2 ROS2 通信
- 3 传感器
- 4 导航
- 5 使用外部手柄的手动控制
- 6 可视化
- 需求
- 本地安装
- Docker 安装
- 使用方法
- 1 基本仿真与手动控制
- 2 SLAM 同时定位与地图构建
- 3 使用 Nav2 进行导航
- 未来工作
- 画廊
- TF 树
- Star 历史
功能
1. 阿克曼转向
- 一个自定义车辆模型,采用真实的阿克曼转向动力学,实现精准机动性能。
2. ROS2 通信
- 所有传感器数据和控制信号均完全集成到 ROS2 生态系统中,实现无缝互操作。
3. 传感器
- IMU:提供姿态和角速度。
- 里程计:确保车辆状态反馈的准确性。
- 激光雷达:安装用于障碍物检测和环境扫描。支持生成 3D 点云,用于高级感知任务。
- 摄像头:
- 前置
- 后置
- 左侧
- 右侧
saye_bringup/config/ros_gz_bridge.yaml 中相关摄像头部分开头的 # 符号以激活它们(例如,/camera/left_raw、/camera/right_raw、/camera/rear_raw)。4. 导航
- 集成了 Nav2 栈 实现自主导航。
- 使用 AMCL(自适应蒙特卡洛定位) 提升位置精度。
- 实现了 SLAM 技术,用于实时地图构建和环境理解。
- 经过微调的参数,优化导航性能。
5. 手动控制(外接操纵杆)
- 在仿真环境中新增了基于操纵杆的手动控制支持,用户可交互式测试车辆运动。
6. 可视化
- 在 RViz2 中实现完整模型和传感器数据的可视化,提供机器人状态和环境反馈的洞察。
需求
- ROS2(Humble)
- Gazebo Sim Harmonic
- RViz2
- Nav2
本地安装
- 您需要确保已安装 Gazebo Harmonic 和 ROS(ros_gz):
sudo apt-get install ros-${ROS_DISTRO}-ros-gzsudo apt-get install ros-humble-ros-gzharmonic(仅限Humble版本)有关安装Gazebo和ROS的更多详情:链接
- 克隆仓库:
mkdir -p ackermann_sim/src && cd ackermann_sim/srcgit clone https://github.com/alitekes1/ackermann-vehicle-gzsim-ros2cd ..
- 构建项目:
colcon build && source install/setup.bash
- 设置环境变量:
bash
# Set environment variables for current session
export GZ_SIM_RESOURCE_PATH=$GZ_SIM_RESOURCE_PATH:/your/path/ackermann_sim/src/ackermann-vehicle-gzsim-ros2/
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/your/path/ackermann_sim/src/ackermann-vehicle-gzsim-ros2/
` 永久设置:
要使这些环境变量永久生效,请将它们添加到你的
.bashrc 文件中:
`bash
# Add environment variables to .bashrc
echo 'export GZ_SIM_RESOURCE_PATH=$GZ_SIM_RESOURCE_PATH:/your/path/ackermann_sim/src/ackermann-vehicle-gzsim-ros2/' >> ~/.bashrc
echo 'export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/your/path/ackermann_sim/src/ackermann-vehicle-gzsim-ros2/' >> ~/.bashrc
# Apply changes
source ~/.bashrc
` > 注意: 将
/your/path/ 替换为您的实际安装路径。Docker 安装
您也可以使用 Docker 运行仿真,这可以确保在不同系统之间具有一致的环境。
前提条件
- Docker
- NVIDIA 容器工具包(用于 GPU 支持)
使用 Docker 运行的步骤
- 克隆仓库:
`bash
mkdir -p ackermann_sim/src && cd ackermann_sim/src
git clone https://github.com/alitekes1/ackermann-vehicle-gzsim-ros2
cd ackermann-vehicle-gzsim-ros2
`- 构建并运行 Docker 容器:
`bash
docker run -it \
--name ackermann_sim \
--hostname ackermann_sim \
--env="DISPLAY=$DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
--privileged alitekes1/ackermann_sim:latest
`
- 如果您想为同一容器添加额外的终端
`bash
docker exec -it ackermann_sim bash
`
注意: 在容器内部,您可以像平常一样运行仿真命令。
使用方法
1. 基本仿真和手动控制
- 启动仿真:
`bash
ros2 launch saye_bringup saye_spawn.launch.py
`
- 控制车:
`bash
ros2 run teleop_twist_keyboard teleop_twist_keyboard
`2. SLAM(同步定位与地图构建)
- 要运行 SLAM Toolbox 进行地图构建,请在启动仿真后运行以下命令:
`bash
ros2 launch saye_bringup slam.launch.py
`

3. 使用 Nav2 进行导航
- 要使用 Nav2 堆栈进行自主导航仿真,启动仿真后运行以下命令:
`bash
ros2 launch saye_bringup navigation_bringup.launch.py
``

注意: 上述YouTube视频以4倍速播放。您可以点击图片观看视频。
未来工作
- 3D SLAM 支持:
- 使用先进的深度强化学习算法训练车辆自主处理复杂场景。
- 增强功能:
- 探索更多传感器配置和导航策略。
- Nav2与3D定位集成
- 取代AMCL(二维),实现更准确且鲁棒的算法。
图库
3D激光雷达点云与环境
| 3D激光雷达点云可视化 | 仓库环境模型 |
| --------------------------------------------------------------- | -------------------------------------------------------------- |
|
|
|
车辆与导航
| Gazebo仿真谐波 | RViz2 |
| --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| |
|
|
|
|
|
|
|
TF树

星标历史
--- Tranlated By Open Ai Tx | Last indexed: 2026-05-13 ---