gazebo
ros中最常用的三维物理仿真平台。
安装
ubuntu版本-ros2版本和Gazebo版本对应关系
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) | 版本号 | ||
---|---|---|---|
harmonic | 8.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:
Wayland 和 X11
Wayland 和 X11 是两种不同的显示服务器协议,用于在 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。