对应的是重德智能的教程,运行roslaunch robot_sim_demo robot_spawn.launch 后的报错
出现的错误:
出现错误的文件路径(就是上图中红色前两行显示的路径):
/home/chester/catkin_ws/src/ROS-Academy-for-Beginners/robot_sim_demo/launch/include/xbot-u.launch.xml
根据路径找到 xbot-u.launch.xml 文件并用文本编辑器打开,如下:
<launch>
<arg name="x" default="5.0" />
<arg name="y" default=".0" />
<arg name="z" default="0.0" />
<arg name="yaw" default="-2.0" />
<!-- Setup controllers -->
<!-- rosparam file="$(find fetch_gazebo)/param/freight_controllers.yaml" command="load" / -->
<!-- URDF and TF support -->
<param name="robot_description" command="$(find xacro)/xacro.py $(find robot_sim_demo)/urdf/robot.xacro" />
<!-- Put a robot in gazebo, make it look pretty -->
<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
args="-urdf -x $(arg x) -y $(arg y) -z $(arg z) -Y $(arg yaw) -model xbot-u -param robot_description"/>
<!--node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
<param name="use_gui" value="false"/>
</node-->
<!--Load the joint controllers to param server-->
<rosparam file="$(find robot_sim_demo)/param/xbot-u_control.yaml" command="load"/>
<!--Load controllers-->
<node name="spawner" pkg="controller_manager" type="spawner" respawn="false"
output="screen" ns="/xbot" args="joint_state_controller
yaw_platform_position_controller
pitch_platform_position_controller
"/> <!--mobile_base_controller-->
<!-- convert joint states to TF transforms for rviz, etc -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" ns="/xbot" respawn="false" output="screen">
<param name="publish_frequency" value="20.0"/>
</node>
<!-- Publish base_scan_raw if anything subscribes to it -->
<!--node name="publish_base_scan_raw" pkg="topic_tools" type="relay" args="base_scan base_scan_raw" >
<param name="lazy" type="bool" value="True"/>
</node-->
<!-- Start a mux between application and teleop, but the switch must be called by service rather than automatically -->
<!--<node pkg="topic_tools" type="mux" name="cmd_vel_mux" respawn="true" args="/cmd_vel /cmd_vel_mux/input/teleop /cmd_vel_mux/input/navi">
<remap from="mux" to="cmd_vel_mux"/>
</node>-->
<!-- To make the interface of simulation identical to real XBot -->
<node pkg="nodelet" type="nodelet" name="mobile_base_nodelet_manager" args="manager"/>
<node pkg="nodelet" type="nodelet" name="cmd_vel_mux" args="load yocs_cmd_vel_mux/CmdVelMuxNodelet mobile_base_nodelet_manager">
<param name="yaml_cfg_file" value="$(find robot_sim_demo)/param/mux.yaml"/>
<remap from="cmd_vel_mux/output/cmd_vel" to="cmd_vel"/>
</node>
</launch>
找到与错误中对应的一行代码,本例如下:
<param name="robot_description" command="$(find xacro)/xacro.py $(find robot_sim_demo)/urdf/robot.xacro"/>
将其中的 xacro.py 的.py去掉后保存文档,如下:
<param name="robot_description" command="$(find xacro)/xacro $(find robot_sim_demo)/urdf/robot.xacro"/>
终端重新运行roslaunch文件即可。
参考:https://blog.youkuaiyun.com/qq_29710939/article/details/117035802