报错:
Invalid roslaunch XML syntax: not well-formed (invalid token): line 11, column 10 The traceback for the exception was written to the log file
我的ros版本kinetic,安装了cartograther 准备用我的激光雷达构图,需要修改/cartographer_ros/myself_backpack_2d_localization.launch
文件,当我在运行roslaunch cartographer_ros myself_backpack_2d_localization.launch出现以上错误。
主要是出现了两个问题导致的:
原因1:标签打错了结束标签或者没打结束标签,我是没有打结束标签
<launch>
<arg name="load_state_filename" default="/home/zzr/carto_ws/map.pbstream" >
<param name="/use_sim_time" value="false" />
<?ignore
<!--加载机器人模型-->
<param name="robot_description"
textfile="$(find cartographer_ros)/urdf/myself_robot.urdf" />
<!--发布tf-->
<node name="robot_state_publisher" pkg="robot_state_publisher"
type="robot_state_publisher" />
?>
<!--启动建图节点-->
<node name="cartographer_node" pkg="cartographer_ros"
type="cartographer_node" args="
-configuration_directory $(find cartographer_ros)/configuration_files
-configuration_basename myself_backpack_2d_localization.lua
-load_state_filename $(arg load_state_filename)"
output="screen">
<!--重映射话题-->
<remap from="scan" to="/rslidar/scan" />
</node>
<!--需要注释下面所示文件的源码,然后重新编译-->
<!--cartographer_ros/cartographer_ros/occupancy_grid_node_main.cc //occupancy_grid_publisher_.publish(*msg_ptr); /-->
<!--发布地图-->
<node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
type="cartographer_occupancy_grid_node" args="-resolution 0.05" />
<!--启动RVIZ-->
<node name="rviz" pkg="rviz" type="rviz" required="true"
args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" />
</launch>
第二行结束标签未打,修改如下
<arg name="load_state_filename" default="/home/zzr/carto_ws/map.pbstream" />
原因2:myself_backpack_2d_localization.launch中,注释语法错误
<launch>
<arg name="load_state_filename" default="/home/zzr/carto_ws/map.pbstream" />
<param name="/use_sim_time" value="false" />
<!--加载机器人模型-->
<!-- param name="robot_description"
textfile="$(find cartographer_ros)/urdf/myself_robot.urdf" /-->
<!--发布tf-->
<!-- node name="robot_state_publisher" pkg="robot_state_publisher"
type="robot_state_publisher" /-->
<!--启动建图节点-->
<node name="cartographer_node" pkg="cartographer_ros"
type="cartographer_node" args="
-configuration_directory $(find cartographer_ros)/configuration_files
-configuration_basename myself_backpack_2d_localization.lua
-load_state_filename $(arg load_state_filename)"
output="screen">
<!--重映射话题-->
<remap from="scan" to="/rslidar/scan" />
</node>
<!--需要注释下面所示文件的源码,然后重新编译-->
<!--cartographer_ros/cartographer_ros/occupancy_grid_node_main.cc //occupancy_grid_publisher_.publish(*msg_ptr); /-->
<!--发布地图-->
<node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
type="cartographer_occupancy_grid_node" args="-resolution 0.05" />
<!--启动RVIZ-->
<node name="rviz" pkg="rviz" type="rviz" required="true"
args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" />
</launch>
这两个注释错误
<!--加载机器人模型-->
<!-- param name="robot_description"
textfile="$(find cartographer_ros)/urdf/myself_robot.urdf" /-->
<!--发布tf-->
<!-- node name="robot_state_publisher" pkg="robot_state_publisher"
type="robot_state_publisher" /-->
后来发现launch文件不能用 <!-- .... -->不能用这个注释。可以用launch文件的注释方法:<?ignore ..........?>
修改如下:
<launch>
<arg name="load_state_filename" default="/home/zzr/carto_ws/map.pbstream" />
<param name="/use_sim_time" value="false" />
<?ignore
<!--加载机器人模型-->
<param name="robot_description"
textfile="$(find cartographer_ros)/urdf/myself_robot.urdf" />
<!--发布tf-->
<node name="robot_state_publisher" pkg="robot_state_publisher"
type="robot_state_publisher" />
?>
<!--启动建图节点-->
<node name="cartographer_node" pkg="cartographer_ros"
type="cartographer_node" args="
-configuration_directory $(find cartographer_ros)/configuration_files
-configuration_basename myself_backpack_2d_localization.lua
-load_state_filename $(arg load_state_filename)"
output="screen">
<!--重映射话题-->
<remap from="scan" to="/rslidar/scan" />
</node>
<!--需要注释下面所示文件的源码,然后重新编译-->
<!--cartographer_ros/cartographer_ros/occupancy_grid_node_main.cc //occupancy_grid_publisher_.publish(*msg_ptr); /-->
<!--发布地图-->
<node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
type="cartographer_occupancy_grid_node" args="-resolution 0.05" />
<!--启动RVIZ-->
<node name="rviz" pkg="rviz" type="rviz" required="true"
args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" />
</launch>
然后再重新编译一下源代码,就可以roslaunch了