xacro文件中加入了中文注释
运行launch文件,会出现以下错误:
Traceback (most recent call last):
File "/opt/ros/kinetic/lib/xacro/xacro", line 33, in <module>
xacro.main()
File "/opt/ros/kinetic/lib/python2.7/dist-packages/xacro/__init__.py", line 1073, in main
out.write(doc.toprettyxml(indent=' '))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 946-947: ordinal not in range(128
Invalid <param> tag: Cannot load command parameter [robot_description]: command [/opt/ros/kinetic/lib/x
acro/xacro --inorder /home/daniel/ROS_Learning/smartcar_description/src/moveit_learning/urdf/arm.xacro]
returned with code [1].
Param xml is <param command="$(find xacro)/xacro --inorder $(find moveit_learning)/urdf/arm.xacro" name
="robot_description"/>
The traceback for the exception was written to the log file
解决办法:
在目录/opt/ros/kinetic/lib/python2.7/dist-packages下,新建一个sitecustomize.py文件,内容为:
#coding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
重启ROS,发现Python解释器的编码已被设置为utf8;这是因为系统在Python启动的时候,自行调用该文件,设置系统的默认编码。