ubuntu22.04的conda 环境下gazebo打开不正常
一、问题描述:
在跟学古月居老师B站视频教程时,出现在Gazebo安装完成但无法打开的情况,具体有如下两种情况:
问题一:第一次输入Gazebo指令可以打开,但是再次输入指令无报错,也无显示界面。
此时使用的安装指令如下:
| sudo apt install ros-humble-gazebo-* |
问题2:运行Gazebo指令时出现下面的报错
运行指令:
| ros2 launch gazebo_ros gazebo.launch.py |
报错信息:
westar@legion:~$ ros2 launch gazebo_ros |
二、排查记录
1.问题一决解决办法:
打开系统自带的“系统监视器”,找到gzserver,右键kill,杀死进程。
并且关闭该终端,重启终端之后就可以再次打开。
参考如下博客:
https://blog.csdn.net/qq_48580785/article/details/135821380
2.问题二决解决办法:
查询当前系统所有python版本
cd /usr/bin
ls -l python*
输出如下,我的电脑只有一个版本,这不合理。
westar@legion:~$ cd /usr/bin |
分别在根目录和conda环境下查询python版本和路径
python3 --version
which python3
输出中发现都是指向/usr/bin/python3也就是主目录下的python
westar@legion:/usr/bin$ python3 --version Python 3.10.12 westar@legion:/usr/bin$ which python3 /usr/bin/python3 westar@legion:/usr/bin$ conda activate slam (slam) westar@legion:/usr/bin$ which python3 /usr/bin/python3 |
且conda的包中也没有python信息
(slam) westar@legion:/usr/bin$ conda list # packages in environment at /home/westar/miniconda3/envs/slam: # # Name Version Build Channel |
可以确定是创建conda环境时没有指定该环境的python 版本,一直使用的是根目录下的python..(hhh想起来当时是不确定要装什么版本,后来就忘记装了)
立刻在虚拟环境i下安装了一个3.9版本的
(slam) westar@legion:/usr/bin$ conda install python=3.9
但是上述运行不了Gazebo的问题还在...只能说没装python不是主要原因。
查询到一篇比较官方的文章:
https://gazebosim.org/docs/latest/ros_installation/
联想到我使用过很多不同的指令来解决问题,系统中已经有两个Gazebo的图标了,可能是Gazebo版本不对的问题:

我的是ROS2 Humble因此支持的只有GZ Fortress,但是我的安装方式下有两种图标Gazebo,可能是有冲突。输入下列指令查找所有的gazebo包:
dpkg -l | grep gazebo
我有如下界面:

既有gazebo又有gazebo6,输入下面指令卸载所有的包:
sudo apt-get remove gazebo gazebo-common gazebo-plugin-base libgazebo11:amd64 libgazebo-dev ros-humble-gazebo-* libignition-gazebo6:amd64 libignition-gazebo6-dev:amd64 libignition-gazebo6-plugins:amd64
卸载配置和数据文件
rm -rf ~/.gazebo/
清除配置文件(谨慎使用,可能误删除系统主题之类的)
sudo apt autoremove
卸载之后两个gazebo的图标都不见了。
接下来按照官网教程安装:
sudo apt-get install ros-humble-ros-gz
按照这个指令安装的是:默认的 与ROS版本配对的gazebo
最终图标长这样:

双击运行后成功RUN目标示例:


至此问题解决!
测试运行:
ign gazebo shapes.sdf

三、后记
通过查阅资料发现,gazebo和Ignition gazebo指令都不匹配,且后者是前者的升级版,对比如下
- Gazebo Classic:指机器人仿真软件Gazebo,一共有11个主要版本。
- Ignition Gazebo:指Ignition中Gazebo模拟器的部分。
- Ignition:一个包含了各种软件库和服务的平台,Gazebo模拟器是其中的一部分。
介绍参考如下博客:
http://www.lxshaw.com/tech/iginition/2021/06/29/ignition-gazebo%E4%BB%8B%E7%BB%8D/
虽然Ignition是Gazebo的未来,但是依然有很长的路要走。有许多Gazebo Classic中存在的功能,还没有被复刻到Ignition Gazebo中去。

问题一:第一次输入Gazebo指令可以打开,但是再次输入指令无报错,也无显示界面。
问题2:运行Gazebo指令时出现下面的报错file 'None' was not found in the share directory of package 'gazebo_ros' which is at '/opt/ros/humble/share/gazebo_ros'
浙公网安备 33010602011771号