在通过roslaunch启动gazebo的时候,通过命令行窗口调用spawn_model出现下面的问题:
[INFO] [1696492231.313216, 0.000000]: Loading model XML from ros parameter robot_description
Traceback (most recent call last):
File "/opt/ros/melodic/lib/gazebo_ros/spawn_model", line 239, in <module>
exit_code = sm.run()
File "/opt/ros/melodic/lib/gazebo_ros/spawn_model", line 149, in run
xml_parsed = xml.etree.ElementTree.fromstring(model_xml)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1311, in XML
parser.feed(text)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1657, in feed
self._parser.Parse(data, 0)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 59-63: ordinal not in range(128)
这个错误通常是由于字符编码问题引起的。我的python版本是2.7的。找了一些解决办法。网上的说法是找到“/opt/ros/melodic/lib/python2.7/dist-packages”文件夹,然后新建一个sitecustomize.py文件,里面的内容为“
#coding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
但是我搞了很久就是不能在里面新建文件,呜呜呜~后面去问了chatgpt才知道里面的文件都必须要有root权限,否则是不能修改的,害!
方法:现在桌面新建一个sitecustomize.py文件,然后在里面编辑好内容,见上。
保存好之后,我们再直接打开一个终端,将这个文件直接复制到“/opt/ros/melodic/lib/python2.7/dist-packages”文件夹里面,由于需要权限,我们的指令如下:
sudo cp /home/lin/Desktop/sitecustomize.py /opt/ros/melodic/lib/python2.7/dist-packages
#注意修改账号 还有ros的版本号,我的是melodic,如果你是noetic记得修改