ros2--gazebo

gazebo

ros中最常用的三维物理仿真平台。

安装

官网

ubuntu版本-ros2版本和Gazebo版本对应关系

ubuntu和ros2

gazebo的安装需要考虑和ros2以及ubuntu版本的兼容性,所以需要查看自己的ubuntu版本和,ros2版本:

查看ubuntu版本:

lsb_release -a

ubuntu22.04----安装ros2的humble版本----gazebo的Fortress版本;

ubuntu24.04----安装ros2的Jazzy版本----gazebo的Harmonic版本;

ros2和gz:

安装Gazebo版本

查看当前的ros版本:

echo $ROS_DISTRO

本人:

echo $ROS_DISTRO
humble

humble版本安装:

官网

sudo apt-get update
sudo apt-get install curl lsb-release gnupg

sudo curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null

sudo apt-get update
sudo apt-get install gz-fortress

jazzy的ros版本安装:

sudo apt-get update
sudo apt-get install curl lsb-release gnupg

sudo curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null

sudo apt-get update
sudo apt-get install gz-harmonic

安装gz功能包

安装:

sudo apt-get install ros-${ROS_DISTRO}-ros-gz

查看gazebo版本

gz sim --versions

gazebo版本和数字代号对应:

代号 (Codename)版本号
harmonic8.x

卸载

harmonic:

sudo apt remove gz-harmonic && sudo apt autoremove

fortress

sudo apt remove gz-fortress && sudo apt autoremove

问题

gazebo对x11的依赖

gz sim报错:

Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.

原因:

这是因为你的系统正在使用 Wayland 显示服务器协议,而 Gazebo(或 Ignition Gazebo)默认使用的是 X11 后端。Gazebo 目前对 Wayland 的支持可能不完全,因此会忽略 Wayland 并尝试使用 X11。

解决办法:

1,切换系统显示服务协议为X11:

链接

2,禁用Wayland:

链接

WaylandX11

WaylandX11 是两种不同的显示服务器协议,用于在 Linux 系统中管理图形显示和输入设备(如鼠标、键盘)。它们是 Linux 图形栈的核心组件,负责将应用程序的图形输出渲染到屏幕上,并处理用户的输入事件。

X11(X Window System)

  • X11 是 Linux 和 Unix 系统上最传统的显示服务器协议,于 1984 年发布。

  • 它采用客户端-服务器架构:

    • X Server:负责管理显示和输入设备。

    • X Client:应用程序(如 Gazebo、Firefox 等)通过 X 协议与 X Server 通信,发送图形数据并接收输入事件。

Wayland

  • Wayland 是一种现代的显示服务器协议,旨在取代 X11。它于 2008 年发布,逐渐成为 Linux 图形栈的未来。

  • 它采用更简单的架构:

    • Wayland Compositor:既是显示服务器,也是窗口管理器(如 Weston、GNOME 的 Mutter、KDE 的 KWin)。

    • 应用程序直接与 Wayland Compositor 通信,减少了中间层的复杂性。

启动

纯gazebo启动:

gz sim

gz sim will run the latest version of Gazebo you have installed.

ros功能包的方式启动:

ros2 launch ros_gz_sim gz_sim.launch.py

启动参数

查看启动参数:

gz sim --help

-r

启动后立即运行仿真(不暂停)。

gz sim -r my_world.sdf

查看版本

gz sim --versions

Harmonic (8.x.x), Garden (7.x.x), and Fortress (6.x.x)

gazebo的界面操控

链接

gazebo使用问题

官网问题解决方案

网络闪烁

原因:

ubuntu中运行gazebo不支持3D硬件加速会使OpenGL版本降低,不符合gazebo运行要求导致黑屏。

解决办法:

echo "export LIBGL_DRI3_DISABLE=1" >> ~/.bashrc

source ~/.bashrc

链接

gazebo_ros

gazebo是独立于ROS/ROS2之外的仿真软件,我们可以独立使用Gazebo。如果我们想要通过ROS2和Gazebo进行交互,需要通过gazebo_ros插件来进行。

gazebo节点

gazebo节点启动

ros_gz_sim节点启动

查看ros_gz_sim中的可执行文件:

create

用于在 Gazebo 仿真中生成(spawn)模型/实体。

  • 功能:

    • /robot_description Topic 读取 URDF/SDF 模型数据。

    • 在 Gazebo 中生成指定名称和初始位姿的模型。

终端方式启动:

ros2 run ros_gz_sim create -topic /robot_description -name my_robot -x 0 -y 0 -z 0.5 -world /home/wjy/Workspace/tmp/empty.sdf

必须指定的参数:

urdf模型文件的来源,必须使用-topic,-file,-string,-param其中之一指定。

-wolrd必须。

launch方式启动:

可以通过以下指令查看create的启动参数和信息:

ros2 run ros_gz_sim create --help

test_stopwatch

/ros_gz_sim节点

作用:

1,spawn entity,通过加载urdf模型文件在gazebo中生成一个模型实体。

gazebo的topic

通过ros_gz_sim功能包启动create。

之有订阅urdf的"/robot_description"。

gazebo的service

通过ros_gz_sim功能包启动create。

gazebo的action

通过ros_gz_sim功能包启动create。

没有action。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值