总要学一下 Gazebo 吧!
Published:
环境配置
工欲 Gazebo,必先 ubuntu。因为我的电脑是 windows 系统的,所以需要配一个 ubuntu 环境。我自己不太喜欢双系统要重启的感觉,实验室服务器的虚拟机配出来 Gazebo 的帧率也很低很低,所以这里我用了 wsl。整体流程如下:
- 参考Windows10/11 三步安装wsl2 Ubuntu20.04(任意盘)下载 wsl、创建 ubuntu 环境
- 参考【Gazebo入门教程】第一讲 Gazebo的安装、UI界面、SDF文件介绍安装 Gazebo
- 参考WSL2使用xrdp实现图形桌面配置图形化桌面
wsl + ubuntu + Gazebo
前两步就不多说啦,要记得 ubuntu 20.04 的代号是 noetic,后面安装各种依赖可能会需要。
wsl 的相关操作通过 windows 的 powershell 实现:
wsl --update # 运行更新命令来更新到包含 Linux GUI 支持的最新版本
wsl --shutdown # 重启 wsl,运行如下命令关闭 wsl,要再开启 wsl 时打开 ubuntu.exe 即可
图形化桌面
有了 wsl 但没有图形化界面,也很难操作。所以要搞图形化!一般有 xming 和 xrdp 两种办法,我个人觉得 xrdp 比较好弄,后续用远程连接就可以了。
Linux 图形化操作:使用 WSL 运行 Linux GUI 应用
打开 ubuntu.exe,在窗口中使用以下命令开启 xrdp 的图形化服务:
sudo service xrdp start
在 windows 的远程桌面连接,输入 localhost:xxxx,输入用户名和密码,即可进入图形化桌面。
如果在命令行窗口中无论输入 gazebo 还是 gedit,都没有显示,用以下命令可以解决!!!
export GAZEBO_IP=127.0.0.1
export DISPLAY=:0
export LIBGL_ALWAYS_INDIRECT=0
有的时候找不到 Gazebo,要善用以下命令
gazebo --verbose # 运行 Gazebo 并显示日志
killall gzserver # 关闭 Gazebo 服务进程(有一点风险)
killall gzclient # 关闭 Gazebo 客户进程(有一点风险)
Gazebo 基础知识
基础知识
官方 tutorials:Gazebo: Tutorials
关于 Gazebo 的文件配置,可以参考:
- 使用 Gazebo 导入 world 环境与机器人 给出了 .launch 文件的内容
- Gazebo仿真平台模型搭建与修改 给出了文件详解。.launch 文件实现模型与代码的交互,其中整合了 .world 文件和其他 .launch 文件使其同时运行在 Gazebo 中;.world 文件整合模型,可以调用模型或者直接编写模型相关的参数;Models 文件构建每个子模型。
- 使用roslaunch启动Gazebo、world文件和URDF模型 给出了文件之间的层级关系
如何搭建自己的工作空间
mkdir -p ~/catkin_ws/src # 在 /home/user/ 目录下建立工作空间 catkin_ws(名字可以随便起)
cd ~/catkin_ws
catkin_make # 编译工作空间 在空间中将出现两个文件夹
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc # 告诉系统这个工作空间
source ~/.bashrc
source ~/catkin_ws/devel/setup.bash # 更新一下设置
入门尝试
根据ROS入门(四)——Gazebo的基本使用 - iwehdio - 博客园教程做了一个小车,小车可以动~
其他人的模型库可以直接 git clone 下来。根据 WLKATA 的 readme.md 指南,下载了 WLKATA 的模型库、moveit 和一些相关插件。现在可以使用 rviz 进行 motion planning 了。
# roslaunch 的执行格式:roslaunch 功能包名称 launch文件 [参数设置]
roslaunch gazebo_ros empty_world.launch # 使用 roslaunch 打开 empty_world 的模型
roslaunch mirobot_gazebo mirobot_bringup_moveit.launch # 使用 roslaunch 打开 mirobot 的 Gazebo + rviz
小问题:我的 rviz 的界面看不着机械臂,只能看到末端执行器
解决?:估计是 rviz 的图像显示问题,不知道怎么解决。目前打开 link 的 show axes 能看到关节的坐标系,能比较间接地展现机械臂的姿态。虽然丑,但比没有好。
常用命令
常用 ROS 命令
rostopic list # 列出所有正在通信的 topic 名称
rostopic info topic_name # 查看通过指定 topic 通信的双方的信息
rostopic echo topic_name # 显示实时消息,包括时间戳、数据等
rostopic pub topic_name topic_type arg1 arg2 # 发布信息
常用 linux 命令
cp /mnt/c/xxx /home/xxx # 把 windows 上的文件复制到 wsl 的 ubuntu 系统中
ln /A /B # 把文件夹 A 的快捷方式放到 B 中
sudo rm -r xxx.zip # 删除 xx 文件