启动机器人时,运行launch文件突然报错。按照提示是xacro命令出错
打开提示错误的文件description.launch.xml
<!--
Robot description only (used in private and paired master).
-->
<launch>
<arg name="base"/>
<arg name="stacks"/>
<arg name="3d_sensor"/>
<arg name="urdf_file" default="$(find xacro)/xacro --inorder '$(find turtlebot_description)/robots/$(arg base)_$(arg stacks)_hokuyo.urdf.xacro'" />
<param name="robot_description" command="$(arg urdf_file)" />
</launch>
发现文件中的--inorder不被识别。把这里替换成.py如下
<!--
Robot description only (used in private and paired master).
-->
<launch>
<arg name="base"/>
<arg name="stacks"/>
<arg name="3d_sensor"/>
<arg name="urdf_file" default="$(find xacro)/xacro.py '$(find turtlebot_description)/robots/$(arg base)_$(arg stacks)_$(arg 3d_sensor).urdf.xacro'" />
<param name="robot_description" command="$(arg urdf_file)" />
</launch>
如图,不报错了,但是有个警告,意思 .py已经过时了,需要替换
但我这里 --inorder又报错,然后去github看了下xacro更新日志https://github.com/ros/xacro/blob/kinetic-devel/CHANGELOG.rst
1.11.0 (2016-03-25)
- added short option -i as alternative to --inorder
所以直接把 .py 换成 -i,如下
<arg name="urdf_file" default="$(find xacro)/xacro -i '$(find turtlebot_description)/robots/$(arg base)_$(arg stacks)_hokuyo.urdf.xacro'" />
然后没有错误也没有警告,终于ok了。