当前位置: 首页 > news >正文

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )

预备条件:

Gazebo Harmonic 和 ROS2 jazzy 安装和测试-CSDN博客


正文部分:

ros_gz_project_template 是一个集成了 ROS 2 和 Gazebo 模拟器的模板项目。这个项目结构清晰,便于开发者快速启动基于 ROS 2 和 Gazebo 的机器人模拟开发。


简洁指令:

export GZ_VERSION=harmonic

sudo apt install python3-vcstool python3-colcon-common-extensions git wget

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

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>

colcon build --cmake-args -DBUILD_TESTING=ON

. ~/template_ws/install/setup.sh

ros2 launch ros_gz_example_bringup diff_drive.launch.py


修改注意

原:

---
repositories:ros_gz_project_template:type: giturl: https://github.com/gazebosim/ros_gz_project_template.gitversion: main# Must compile ros_gz from source for combinations that are not officially supportedros_gz:type: giturl: https://github.com/gazebosim/ros_gz.gitversion: humblesdformat_urdf:type: giturl: https://github.com/ros/sdformat_urdf.gitversion: ros2

修改为(jazzy):

---
repositories:ros_gz_project_template:type: giturl: https://github.com/gazebosim/ros_gz_project_template.gitversion: main# Must compile ros_gz from source for combinations that are not officially supportedros_gz:type: giturl: https://github.com/gazebosim/ros_gz.gitversion: jazzysdformat_urdf:type: giturl: https://github.com/ros/sdformat_urdf.gitversion: jazzy

当然也可以直接安装。

sudo apt install ros-jazzy-ros-gz ros-jazzy-sdformat-urdf

耐心等待编译完成……

太坑了……ros_gz_bridge这个包把十几年前的老旧笔记本干爆了……

为啥一定要用这种破旧老电脑呢???

主要是没钱……

改变策略,能直接装的deb包,尽量不要自己编译。

这次很快就完成了。

试一试?

ros2 launch ros_gz_example_bringup diff_drive.launch.py

太美好啦^_^

补充两个包:

sudo apt install ros-jazzy-rqt-robot-dashboard ros-jazzy-rqt-robot-steering

 

 

 

 


下面是对如何使用 ros_gz_project_template 模板在 GitHub 上创建项目仓库并在本地设置工作空间的中文详细解析:

1. 直接使用模板创建项目仓库

  • 访问 GitHub,并创建一个新的仓库。
  • 在创建新仓库的页面,你会看到一个“使用模板创建”的选项。
  • 点击该选项,并搜索 gazebosim/ros_gz_project_template 仓库。
  • 选择该模板,填写你的新仓库信息(如仓库名、描述、是否公开等),然后点击“创建仓库”。

2. 通过克隆模板仓库到本地工作空间

如果你更喜欢从本地开始,你可以按照以下步骤操作:

准备工作
  • 确保你已经安装了 Git 和 ROS 2。
  • 确定你的 ROS 2 发行版(例如 foxygalactic 等),并在后续步骤中替换 <ROS_DISTRO> 为你的发行版名称。
创建工作空间并克隆模板

bash

# 创建一个新的工作空间目录结构
mkdir -p ~/template_ws/src
cd ~/template_ws/src
# 由于模板仓库中并没有直接的 template_workspace.yaml 文件,这一步假设你已经有了一个这样的文件
# 或者,你可以跳过 wget 这一步,直接克隆模板仓库
# git clone https://github.com/你的用户名/你的仓库名.git
# 假设你已经有了一个 template_workspace.yaml 文件(通常这不是必需的,直接克隆仓库即可)
# wget https://raw.githubusercontent.com/gazebosim/ros_gz_project_template/main/template_workspace.yaml
# vcs import < template_workspace.yaml # 注意:这一步通常不是必需的,因为模板已经是一个完整的 ROS 2 工作空间
# 直接克隆模板仓库
git clone https://github.com/gazebosim/ros_gz_project_template.git
# 如果你的仓库名不是 ros_gz_project_template,请确保将上面的 URL 替换为你的仓库 URL
安装依赖

bash

cd ~/template_ws
source /opt/ros/<ROS_DISTRO>/setup.bash # 替换 <ROS_DISTRO> 为你的 ROS 2 发行版
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src -r -i -y --rosdistro <ROS_DISTRO>
构建项目

bash

colcon build --cmake-args -DBUILD_TESTING=ON
激活工作空间

bash

. ~/template_ws/install/setup.sh
启动仿真

bash

ros2 launch ros_gz_example_bringup diff_drive.launch.py

注意:diff_drive.launch.py 是模板中可能包含的一个示例启动文件,用于启动带有差动驱动系统的机器人模拟。你的模板或项目中可能包含不同的启动文件,因此请根据实际情况替换。

注意事项

  • 确保你的 ROS 2 环境配置正确,包括环境变量和 ROS 2 发行版。
  • 如果模板中的包或依赖项与你的 ROS 2 发行版不兼容,你可能需要修改 package.xml 文件或 CMakeLists.txt 文件中的依赖项。
  • 仿真启动后,你可以使用 gzclient 或 rviz2 查看 Gazebo 中的仿真效果。

后续步骤

  • 根据你的项目需求,修改模板中的 SDF 文件、ROS 2 节点、服务、消息等。
  • 添加新的 ROS 2 包或 Gazebo 插件来扩展你的项目。
  • 编写测试用例以确保你的代码质量。
  • 编写文档以帮助你和其他开发者理解和使用你的项目。

下面是对这个模板项目的详细中文总结:

包介绍(Packages)

  1. ros_gz_example_description
    • 此包包含了模拟系统的 SDF (Simulation Description Format) 描述文件以及其他资源文件。SDF 文件是 Gazebo 用来描述物理世界、机器人模型等的 XML 格式文件。
  2. ros_gz_example_gazebo
    • 该包包含了 Gazebo 特有的代码和配置。这里通常是机器人模型、传感器插件、以及 Gazebo 环境中需要的其他系统(如控制器)的实现。
  3. ros_gz_example_application
    • 此包包含了 ROS 2 特有的代码和配置。这包括 ROS 2 节点、服务、消息定义等,用于处理机器人逻辑、通信等。
  4. ros_gz_example_bringup
    • 该包包含启动文件和高级工具。启动文件(.launch.py 文件)用于一次性启动 ROS 2 节点和 Gazebo 仿真环境,简化了部署流程。

安装

  • 选择合适的 ROS 和 Gazebo 组合:根据你的需求选择合适的 ROS 2 版本和 Gazebo 版本。你可以参考 Gazebo 官方文档中的 ROS 安装指南。
  • 切换分支:如果你使用的是 Gazebo Fortress 版本,需要切换到该模板项目的 fortress 分支;对于 Gazebo Harmonic 及以后的版本,则使用默认的 main 分支。

依赖要求

  • 安装必要工具
    • 使用 apt 安装 Python 3 的 vcstoolcolcon-common-extensionsgit 和 wget。这些工具用于依赖管理、构建项目等。
    • 如果你的 ROS 2 和 Gazebo 版本组合不在官方支持的列表中,你可能需要设置 GZ_VERSION 环境变量来指定 Gazebo 的版本。

使用流程

  1. 克隆仓库:根据选择的分支克隆 ros_gz_project_template 仓库。
  2. 安装依赖:使用 vcstool 和 rosdep 安装项目依赖。
  3. 构建项目:使用 colcon 构建项目。
  4. 运行仿真:使用 ros2 launch 命令运行位于 ros_gz_example_bringup 包中的启动文件,启动 ROS 2 节点和 Gazebo 仿真环境。

注意事项

  • 确保你的 ROS 2 和 Gazebo 版本兼容。
  • 根据你的需求修改 SDF 文件、ROS 2 节点等。
  • 使用 Gazebo 插件或自定义模型时,确保遵循 Gazebo 的开发规范和 ROS 2 的接口标准。

这个模板项目为基于 ROS 2 和 Gazebo 的机器人模拟开发提供了一个良好的起点,使得开发者可以更加专注于机器人逻辑和算法的实现,而不是构建和维护项目结构。


参考链接:

https://github.com/gazebosim/ros_gz_project_template
https://gazebosim.org/docs/latest/ros_gz_project_template_guide/

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 计算机网络之TCP序号,确认序号和报文传输时间
  • 污点Taints和Deployment
  • MySQL键分区分区表
  • 【自动驾驶】控制算法(一)绪论与前期准备
  • 线性数据结构的基本概念(数组,链表,栈,队列)
  • React Hooks 的高级用法
  • 多商户多套部署需修改注意事项
  • 便携式气象监测设备的定义与特点
  • python锁 (lock) 机制+多线程处理共享变量
  • 希尔排序,详细解析(附图解)
  • yolov8旋转框+关键点检测
  • XSS GAME
  • 记录一个变量溢出的bug
  • Hive3:常用查询语句整理
  • gitlab
  • gulp 教程
  • JavaScript中的对象个人分享
  • Java读取Properties文件的六种方法
  • PHP面试之三:MySQL数据库
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Spring核心 Bean的高级装配
  • Yii源码解读-服务定位器(Service Locator)
  • 半理解系列--Promise的进化史
  • 不上全站https的网站你们就等着被恶心死吧
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 基于HAProxy的高性能缓存服务器nuster
  • 排序算法学习笔记
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 通信类
  • 说说我为什么看好Spring Cloud Alibaba
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #每天一道面试题# 什么是MySQL的回表查询
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (7)摄像机和云台
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (九)One-Wire总线-DS18B20
  • (四)linux文件内容查看
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)基于IDEA的JAVA基础12
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .Net Core 微服务之Consul(二)-集群搭建
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET MVC第三章、三种传值方式
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @Value读取properties中文乱码解决方案
  • @WebService和@WebMethod注解的用法
  • [ C++ ] STL_list 使用及其模拟实现