问题描述:
在搭建ROS机器人的时候,要使用关节控制器joint_state_publisher,发现会出现以下错误
Traceback (most recent call last):
File "/opt/ros/melodic/lib/joint_state_publisher/joint_state_publisher", line 44, in <module>
jsp = joint_state_publisher.JointStatePublisher()
File "/opt/ros/melodic/lib/python2.7/dist-packages/joint_state_publisher/__init__.py", line 159, in __init__
robot = xml.dom.minidom.parseString(description)
File "/usr/lib/python2.7/xml/dom/minidom.py", line 1929, in parseString
return expatbuilder.parseString(string)
File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 940, in parseString
return builder.parseString(string)
File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 223, in parseString
parser.Parse(string, True)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 30-31: ordinal not in range(128)
原因分析:
搜了一圈网上,发现应该是python2到python3中出现的编码问题
解决方案:
先更新一下软件
sudo apt-get update
sudo apt-get upgrade
然后安装unicode
sudo apt-get install unicode
网上有的安装完unicode后,问题就能解决,自己试试问题有没有解决。
我后来是找到报错里的文件,加了编码语句解决的。
sudo gedit /opt/ros/melodic/lib/python2.7/dist-packages/joint_state_publisher/__init__.py
打开文件后,在文件头加上
reload(sys)
sys.setdefaultencoding("utf-8")