总要学一下 Gazebo 吧!

1 minute read

Published:

环境配置

工欲 Gazebo,必先 ubuntu。因为我的电脑是 windows 系统的,所以需要配一个 ubuntu 环境。我自己不太喜欢双系统要重启的感觉,实验室服务器的虚拟机配出来 Gazebo 的帧率也很低很低,所以这里我用了 wsl。整体流程如下:

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 的文件配置,可以参考:

如何搭建自己的工作空间

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 文件