ubuntu 22 安装 ros2 humble + Gazebo

ubuntu 22 安装 ros2 humble + Gazebo

ubuntu 22 安装 ros2 humble + Gazebo

1 ROS2 Humble 介绍

在这里插入图片描述

2 Gazebo 介绍

2.1 概述

Gazebo 是三维物理仿真平台,强调的是创建一个虚拟的仿真环境。只能在Linux系统下使用。

Gazebo 是一组开源软件库,旨在简化高性能应用程序的开发。Gazebo 的主要受众是机器人开发人员、设计师和教育工作者。但是,Gazebo 的结构可以满足许多不同的用例。Gazebo 中的每个库都具有最低限度的依赖性,因此它们可用于从解决数学变换到视频编码,再到模拟和流程管理等各种任务。只需为您的应用程序选择所需的库,而无需投入整个生态系统。

Gazebo 是一款开源2D/3D机器人模拟器,于 2002 年开始开发。2017 年,开发分为两个版本,称为“Gazebo”(原始单片架构)和“Ignition”(已转变为松散耦合库的现代化集合)。在 2022 年因使用“Ignition”名称而出现商标障碍后,Open Robotics借此机会更改了版本名称,将原始分支命名为“Gazebo Classic”,将新的现代分支命名为“Gazebo”。

Gazebo Classic 集成了ODE物理引擎、OpenGL渲染以及传感器模拟和执行器控制的支持代码。

Gazebo Classic 可以使用多种高性能物理引擎,例如ODE、Bullet等(默认为 ODE)。它提供包括高质量照明、阴影和纹理在内的逼真环境渲染。它可以模拟“看到”模拟环境的传感器,例如激光测距仪、相机(包括广角)、Kinect风格的传感器等。

对于 3D 渲染,Gazebo Classic 使用OGRE引擎。

2.2 发展历程

  • 2002年~2011年,Gazebo 是Player 项目的一部分。
  • 2011年,Gazebo 成为Willow Garage支持的独立项目。
  • 2012年,开源机器人基金会(OSRF) 成为 Gazebo 项目的管理者。OSRF于 2018 年更名为Open Robotics。
  • 2020年1月,Gazebo 11 发布,这是 Gazebo Classic 的最新也是最后一个主要版本,计划于 2025 年 1 月终止生命周期。Gazebo 之前发布的所有版本也都获得了长期支持,随着 Gazebo 11.0.0 的发布,Gazebo 9 和 10 也发布了小更新。
  • Gazebo 11 发布后,Open Robotics 将重点转向开发 Ignition,这是一个“旨在简化高性能应用程序开发的开源软件库集合”,目标受众是机器人开发人员、设计师和教育工作者。
  • 2019年2月,Ignition 的第一个版本发布。
  • 2022年4月,在一场商标纠纷之后,Ignition 品牌名称退役,并恢复为 Gazebo。Gazebo 的网站将最初的独立 Gazebo 模拟器称为 Gazebo Classic,以区别于 Gazebo。Open Robotics 提到 Gazebo 的代码需要进行重大的现代化改造,同时有机会从单片架构转变为松散耦合库的集合。
在这里插入图片描述

2.3 Gazebo 开发遵循的核心原则

  • 通用性:Gazebo 并不专注于某一类型的机器人。其功能旨在尽可能适用于机器人领域的多种用例。
  • 稳定性:定期向社区提供稳定版本。稳定版本的后续改进力求保持 API、ABI 和行为的向后兼容性。重大更改将在即将发布的版本中发布。
  • 更新:只要有可能,就会将新的向后兼容功能添加到稳定版本中。这样,用户就可以利用新功能,而无需升级到更高版本,并且可以推迟升级工作,直到需要进行重大更改为止。
  • 易用性:默认行为应该对初学者友好。例如,默认情况下,Gazebo 会开始运行图形界面。高级用户可以无头运行,但需要额外的配置才能实现此行为。
  • 模块化:Gazebo 软件包尽可能独立,以便它们可用于 Gazebo 之外的各种项目。例如,Gazebo Rendering 的用户不需要安装、编译,甚至不需要了解 Gazebo Physics。
  • 可扩展性:用户无需分叉核心库或从源代码编译即可添加功能。例如,可以将新的渲染引擎作为插件加载。
  • 灵活性:用户可以在合理的情况下选择启用或停用某些功能。例如,物理学作为插件集成到 Gazebo 中,因此用户可以根据需要加载不带物理学的模拟,或者加载带其他物理学的模拟。
  • 可维护性:在开发过程中,我们会考虑代码的长期可维护性。为此,项目遵循严格的测试、文档、代码检查和样式标准。
  • 可移植性:Gazebo 支持所有主流操作系统:Linux、macOS 和 Windows。这会影响依赖项的选择方式和功能的实现方式。

2.4 版本对应关系

https://gazebosim.org/docs/latest/ros_installation/

在这里插入图片描述

3 ubuntu 22 安装 ros2 humble

设置locale

首先要确保本地语言支持UTF-8

sudoapt update &&sudoaptinstall locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 exportLANG=en_US.UTF-8 

设置源

sudoaptinstall software-properties-common sudo add-apt-repository universe 

添加ROS2密钥

sudoapt update &&sudoaptinstallcurl-ysudocurl-sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg 

添加软件源

echo"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release &&echo $UBUNTU_CODENAME) main"|sudotee /etc/apt/sources.list.d/ros2.list > /dev/null 

安装ROS

sudoapt update &&sudoapt upgrade // 完整安装 sudoaptinstall ros-humble-desktop // 精简安装 sudoaptinstall ros-humble-ros-base 
建议安装桌面版(desktop)最全最通用,但也可以选择基础版(基础版不包含图形界面库)

安装其他ROS工具

sudoaptinstall ros-dev-tools 

配置rosdep

rosdep是 ROS2中的一个命令行工具,主要用于自动安装和管理软件包的系统依赖项,它帮助开发者避免手动安装各种库和依赖包。暂时不配置也不会影响ROS2的使用。

// 开始配置 sudo rosdep init // 更新 rosdep update 

配置环境

echo"source /opt/ros/humble/setup.bash">> ~/.bashrc source ~/.bashrc 

查看是否生效

grep"humble" ~/.bashrc 

测试

终端一:

ros2 run demo_nodes_cpp talker 

终端二:

ros2 run demo_nodes_py listener 

4 ubuntu 22 安装 Gazebo

ros2 humble默认是使用 gazebo Fortress

https://gazebosim.org/docs/latest/ros_installation/

更新源+安装基础工具

sudoapt-get update sudoapt-getinstall lsb-release wget gnupg 

安装

// 官网最推荐的安装方式 sudoapt-getinstall ros-${ROS_DISTRO}-ros-gz 

安装单独运行gz指令工具

sudoaptinstall ros-humble-gazebo-ros-pkgs 

测试

ign gazebo shapes.sdf 
在这里插入图片描述

报错处理

context mismatch in svga_surface_destroy

该问题可能是VMware对OpenGL3.3的支持存在问题导致的。
方法一:VMware中对相应虚拟机关闭 3D 加速

在这里插入图片描述


方法二:禁用OpenGL3.3,回退到使用OpenGL2.1【失败,放弃】

echo"export SVGA_VGPU10=0">> ~/.bashrc 

参考

1、官网–Gazebo
2、wiki–Gazebo (simulator)
3、物理引擎–Open Dynamics Engine(ODE)
4、机器人开发–常用仿真软件工具
5、Getting Started with Gazebo?
6、Getting Started with Gazebo?
7、系统ubuntu20.04-ROS2源码安装humble
8、ros2和gazebo
9、Ubuntu22.04安装ROS2 —— ROS2 humble 详细图文教程
10、ROS2-Gazebo

Read more

Re:从零开始的 C++ 入門篇(九)类和对象·最终篇上:缓冲区同步与流绑定、取地址运算符重载、const成员函数、初始化列表

Re:从零开始的 C++ 入門篇(九)类和对象·最终篇上:缓冲区同步与流绑定、取地址运算符重载、const成员函数、初始化列表

◆ 博主名称: 晓此方-ZEEKLOG博客 大家好,欢迎来到晓此方的博客。 ⭐️C++系列个人专栏: Re:从零开始的C++_晓此方的博客-ZEEKLOG博客  ⭐️踏破千山志未空,拨开云雾见晴虹。 人生何必叹萧瑟,心在凌霄第一峰 目录 0.1概要&序論 一,缓冲区同步与流绑定 1.1缓冲区与缓冲区刷新 1.1.1缓冲区的意义 1.1.2缓冲区的定义 1.1.3刷新缓冲区的定义 1.1.4刷新缓冲区的时机 1.2C/C++缓冲区同步刷新 1.2.1同步刷新的缺陷 1.2.2解决同步缺陷的办法 1.3输入输出流绑定 1.3.1C-library官方文档摘要 1.

By Ne0inhk

C++ 设计模式概述及常用模式

C++ 设计模式概述 本文介绍了C++中23种设计模式的分类及实现示例,主要分为三大类: 创建型模式(5个):单例模式(常用)、工厂方法模式(常用)、抽象工厂模式(常用)、建造者模式和原型模式。这些模式专注于对象的创建机制。 结构型模式(7个):适配器模式(常用)、桥接模式、组合模式和装饰器模式(常用)等。这些模式处理类和对象的组合方式。 行为型模式:未完整列出,但包含观察者模式等(未展示完整代码)。 文章通过简洁的C++代码示例展示了常用设计模式的实现方法,如单例模式通过私有构造函数和静态方法确保唯一实例,工厂方法模式通过抽象工厂类创建产品等。这些模式为解决特定设计问题提供了可重用的解决方案。 C++ 设计模式概述及常用模式 设计模式可分为三大类:创建型、结构型、行为型。以下是23个设计模式的分类及代码示例: 一、创建型模式(5个) 1. 单例模式(Singleton)⭐ 常用 classSingleton{private:static

By Ne0inhk
手把手实现 STL Set/Map:从零编写一棵红黑树到完整容器封装

手把手实现 STL Set/Map:从零编写一棵红黑树到完整容器封装

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 架构与实现:总览设计框架,深入源码细节 * 二. 核心设计思路:红黑树的泛型复用 * 2.1 红黑树的模板参数设计 * 2.2 仿函数 KeyOfT:统一 key 提取逻辑 * 2.3 核心约束:key 不可修改 * 三. 基础组件实现:红黑树与仿函数 * 3.1 红黑树节点结构 * 3.2 仿函数实现(map/set 层) * 3.2.1

By Ne0inhk
Re:从零开始的 C++ STL篇(七)二叉搜索树增删查操作系统讲解(含代码)+key/key-value场景联合分析

Re:从零开始的 C++ STL篇(七)二叉搜索树增删查操作系统讲解(含代码)+key/key-value场景联合分析

◆ 博主名称: 晓此方-ZEEKLOG博客大家好,欢迎来到晓此方的博客。⭐️C++系列个人专栏: 主题曲:C++程序设计⭐️ 踏破千山志未空,拨开云雾见晴虹。 人生何必叹萧瑟,心在凌霄第一峰 0.1概要&序論 这里是「此方」,好久不见。 今天我们要学习的是二叉搜索树。它是在普通二叉树的基础上加入特定约束,从而具备了高效的搜索能力。虽然这种结构能够支持高效的插入、删除与查找操作,但其性能背后也隐藏着潜在的 效率风险 。同时,在 key 与 key-value 两种不同的应用场景 下,二叉搜索树的设计与实现方式也会产生不同的变化。这里是「此方」。让我们现在开始吧! 前情提要,没有系统学习过一般二叉树的小伙伴直接看这篇文章可能会有些吃力,此方在这里留一个传送门:Re:从零开始的链式二叉树:建树、遍历、计数、查找、判全、销毁全链路实现与底层剖析 一,二叉搜索树的概念

By Ne0inhk