一、情况说明:
1.文章概况:
这个报错我自己找了好几天,但是最终解决的办法却很轻松。我这里主要是做一个记录,也为大家整合一下这个报错我这几天所找到的个人认为比较好的解决办法,并提供一个我自己解决方法。第二、三、四都是我这几天找解决的情况,个人的解决办法在第五。
---------- 一个ros刚入门的专科生,如果有错误的地方,真诚希望大家能够指点,非常感谢 ---------
2.版本信息说明:
·VMware 虚拟机
·ubuntu 20.04
·ROS noetic
3.报错前说明:
用urdf文件,在gazebo上生成一个长方体。运行gazebo_ros的empty_world和spawn_model节点
二、修改<sim_time>参数
网上很多人说将该参数的值修改为0。因此我就去找改参数,看到别人说这个参数是在.world文件内的,加载模型都会有一个.world文件。由于运行的empty_world.launch有一个world文件。于是就去找到了一个gazebo中内置world文件启动存储文件夹,找到empty_world.launch对应的.world文件,一进去发现没有根本就没有<sime_time>参数。
完蛋,参数都没有,我该怎么修改? 只能再去找,发现手动设计保存模型,会有.world文件 ,然后就自己去测试了一下
结果保存的时候他就一直卡着不动。解决见下文。保存之后,对应的world文件终于有了world参数,但可惜的是我自己的urdf文件编写的。没有任何作用
问题解决:
(1)加一个这个export SVGA_VGPU10=0(那片文章找不到了)
(2)命令行就启动gazebo之前加sudo就好了(参考文章1)
三、修改gazebo_ros_api_plugin.cpp文件
又是垃圾堆里找食物,终于又被我看到这个大佬说修改gazebo_ros功能包中的gazebo_ros_api_plugin.cpp文件里面等待时间能解决(参考文章2),很开心。但根本就不知道这个文件在哪里,翻遍了整个linux系统,还是没找到。
后面发现原来用sudo apt install 安装的功能包都是二进制文件,.cpp文件属于源文件,要进行修改,就必须下载源码功能包。github的克隆就是其中一种,但是我也不知道这个要怎么下载,OK。翻教程(参考视频3)
找到这个教程。对应这下载之后,编译,不出意外的话就要出意外了,又报错。
原来是左上角那里要选择对应的版本信息(我的是noetic)。最后终于编译成功。然后就将里面的编译好的gazebo_ros_api_plugin.cpp文件(名为gazebo_ros_api_plugin.so)
覆盖原本功能包的gazebo_ros_api_plugin.so文件。测试,终于成功了。
四、再测试:
上文那里还有一个问题就是,我是直接github上面的功能包的,并没有修改gazebo_ros_api_plugin.cpp文件,为什么就顺利运行了呢。所以我想将原本的gazebo_ros_pkgs删了重装一次。
直接用sudo apt-get remove删,结果就只删了配置文件。然后直接手动删gazebo_ros,删完了但其他功能包还在。重装gazebo_ros_pkgs,显示已安装,但是gazebo_ros却没给我装。又以为是gazebo-ros-control的问题,又将这个功能包删掉了,重装。结果还是没有gazebo_ros。最后我直接将gazebo、gazeob_ros_pkgs、gazebo-ros-control都删掉了,重装。重新运行之后,又成功了。这个我很不解,因为我第一次装gazebo及对应功能包 和 第二次装用的都是相同的命令,装的东西都相同,可他就是不报错了。这里希望有大佬帮忙解释一下。感激不尽。
五、最终解决方法:
将gazebo、gazeob_ros_pkgs、gazebo-ros-control都删掉了,重装。
六、参考文章:
参考文章1 :
gazebo save world as 之后卡死问题的解决方法_gazebo保存 save world 卡死-优快云博客
参考文章2:
参考视频3:
这个视频教会你如何下载使用GitHub上的项目源码,帮你节约一大笔开支!!!_哔哩哔哩_bilibili