• ROS2 与 Gazebo 联合仿真项目模版


    系列文章目录



    前言

    一个集成了 ROS 2 和 Gazebo 模拟器的模板项目。


    一、包含的软件包

    • ros_gz_example_description - 保存模拟系统的 sdf 描述和其他文件。

    • ros_gz_example_gazebo - 保存 gazebo 专用代码和配置。也就是说,系统在这里结束。

    • ros_gz_example_application - 保存 ros2 的特定代码和配置。

    • ros_gz_example_bringup - 保存启动文件和高级实用程序。

    二、安装

    2.1 安装要求

    1. 选择 ROS 和 Gazebo 组合 https://gazebosim.org/docs/harmonic/ros_installation 注意:如果你使用的是 ROS 2 的特定且不支持的 Gazebo 版本,可能需要设置 GZ_VERSION 等环境变量:
    export GZ_VERSION=garden
    
    • 1
    1. 安装必要的工具
    sudo apt install python3-vcstool python3-colcon-common-extensions git wget
    
    • 1

    2.2 作为模板使用

    直接 Use this template 并在 Github 上创建项目库。

    或者先创建一个工作区,然后克隆模板库:

    mkdir -p ~/template_ws/src
    cd ~/template_ws/src
    wget https://raw.githubusercontent.com/gazebosim/ros_gz_project_template/main/template_workspace.yaml
    vcs import < template_workspace.yaml
    
    • 1
    • 2
    • 3
    • 4

    三、用法

    3.1 安装依赖项

    cd ~/template_ws
    source /opt/ros/<ROS_DISTRO>/setup.bash
    sudo rosdep init
    rosdep update
    rosdep install --from-paths src --ignore-src -r -i -y --rosdistro <ROS_DISTRO>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.2 构建项目

    colcon build --cmake-args -DBUILD_TESTING=ON
    
    • 1

    3.3 source 工作空间

    . ~/template_ws/install/setup.sh
    
    • 1

    3.4 启动仿真

    ros2 launch ros_gz_example_bringup diff_drive.launch.py
    
    • 1

    四、详细用法

    4.1 软件包结构

    此时,你的项目中将包含以下软件包:

    • ros_gz_example_application - 保存 ROS 2 的特定代码和配置。即控制、规划或任何高级算法所在的位置。
      ├── CMakeLists.txt
      ├── package.xml
      ├── src
      └── …

    • ros_gz_example_bringup - 保存启动文件和高级实用程序,是 ROS 与 Gazebo 之间的通信桥梁。任何机器人或硬件的特定配置都放在这里。
      ├── config
      │ ├── ros_gz_example_bridge.yaml
      │ └── diff_drive.rviz
      ├── launch
      └── diff_drive.launch.py

    • ros_gz_example_description - 保存模拟系统的 SDF 描述和任何其他模拟资产。
      ├── hooks
      │ └── ros_gz_example_description.dsv.in
      ├── models
      ├── diff_drive
      ├── model.config
      └── model.sdf

    • ros_gz_example_gazebo - 保存 Gazebo 的特定代码和配置。也就是说,这里是用户自定义世界和自定义系统插件的最终归宿。
      ├── include
      │ └── ros_gz_example_gazebo
      │ ├── BasicSystem.hh
      │ └── FullSystem.hh
      ├── src
      │ ├── BasicSystem.cc
      │ └── FullSystem.cc
      ├── worlds
      └── diff_drive.sdf

    4.2 仿真资源配置

    仿真资产包括URDF或SDF中的模型或机器人描述、网格和材料文件,以帮助可视化机器人的不同部分,最后将所有这些元素编译到模拟世界的SDF中。Gazebo 提供了几种不同的机制来定位这些资源,并通过 GZ_SIM_RESOURCE_PATH 环境变量来初始化搜索,详情请参见 gz-sim API 中的资源查找。

    ROS 和 Gazebo 解析 URI 的方式有所不同,ROS 可以处理 package:// URI,但 SDFormat 默认只支持 model://。现在,libsdformat 可以将 package:// 转换为 model:// URI。因此,可以通过 "安装 "模型目录并将模型路径导出到环境中来加载现有的仿真资产。

    这可以使用 DSV 文件中的 colcon 环境钩子(ROS 软件包提供的 shell 脚本)自动完成。无论何时在工作区中生成设置文件,这些环境钩子也会被生成。请参阅在 GZ_SIM_RESOURCE_PATH 中预置模型共享路径的示例,它可以让 Gazebo 使用 model:// URI 从 ROS 软件包中加载模型。


    总结

  • 相关阅读:
    【Maven】高级应用
    Power Automate:快速从SharePoint列表中读取数据
    牛客小白月赛55 A-E 回顾
    力扣(LeetCode)307. 区域和检索 - 数组可修改(2022.11.04)
    【httpd】 Apache http服务器目录显示不全解决
    Java—通过sign签名认证实现安全的开放接口API
    手机怎么看WiFi的IP地址
    深度讲解风险策略的调优|附实操案例
    验证线缆(汽车线束、网线、多芯线)破损或断开与正常线缆的区别在哪里?依AEM CV-100 k50测试仪
    string类型可以作为lock的锁对象吗
  • 原文地址:https://blog.csdn.net/weixin_46300916/article/details/134431928