PX4 SIM HOST: localhost INFO [simulator] Waiting for simulator to accept connection on TCP port 4560 [INFO] [1731465732.662210]: Loading model XML from ros parameter sdf_p450_0 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 16486-16488: ordinal not in range(128) [uav1/p450_1_spawn-4] process has died [pid 9371, exit code 1, cmd /opt/ros/melodic/lib/gazebo_ros/spawn_model -sdf -param sdf_p450_0 -model p450_0 -x 0.0 -y 0.0 -z 0.15 -Y 0.0 __name:=p450_1_spawn __log:=/home/xt/.ros/log/de90c4ee-a168-11ef-a223-e4fd453d86af/uav1-p450_1_spawn-4.log]. log file: /home/xt/.ros/log/de90c4ee-a168-11ef-a223-e4fd453d86af/uav1-p450_1_spawn-4*.log
打开 spawn_model
脚本: 编辑 /opt/ros/melodic/lib/gazebo_ros/spawn_model
文件:
sudo nano /opt/ros/melodic/lib/gazebo_ros/spawn_model
找到解析 XML 的部分: 找到以下行,通常在第 149 行左右
xml_parsed = xml.etree.ElementTree.fromstring(model_xml)
修改为带编码的解析方式: 将上述代码替换为:
xml_parsed = xml.etree.ElementTree.fromstring(model_xml.encode('utf-8'))
保存修改,然后退出编辑器。再重新运行你的程序,看看错误是否已解决。