执行roslaunch命令时出现RLException递归深度超限错误求助
问题排查:ROS Launch递归调用导致的RLException错误
问题现象
执行命令 roslaunch urs_wearable world.launch 时触发RLException错误,核心报错信息为:
maximum recursion depth exceeded while calling a Python object
完整报错日志:
awesometech@awesometech:~/catkin_ws$ roslaunch urs_wearable world.launch ... logging to /home/awesometech/.ros/log/165b93fc-9d30-11ed-967c-a99cf3fa13f4/roslaunch-awesometech-4851.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. RLException: while processing /home/awesometech/catkin_ws/src/URSSimEnvironments/urs_wearable/launch/world.launch: while processing /home/awesometech/catkin_ws/src/URSSimEnvironments/urs_wearable/launch/world.launch: .. Invalid tag: maximum recursion depth exceeded while calling a Python object. Arg xml is The traceback for the exception was written to the log file
问题根源
提供的world.launch代码中,文件自身通过<include>标签引用了自己,形成无限递归调用:
<?xml version="1.0"?> <launch> <include file="$(find urs_wearable)/launch/world.launch"> <arg name="world" value="$(find urs_wearable)/worlds/test.world" /> <arg name="reference_latitude" value="32.319939" /> <arg name="reference_longitude" value="-106.763657" /> </include> </launch>
每次启动时,ROS解析该文件后会再次加载自身,循环往复直到超出Python递归深度限制,触发报错。
解决方案
- 打开
/home/awesometech/catkin_ws/src/URSSimEnvironments/urs_wearable/launch/world.launch文件 - 删除内部的
<include>标签,替换为实际需要启动的节点或正确的launch文件引用。
示例修改(以启动Gazebo世界并加载自定义参数为例):
<?xml version="1.0"?> <launch> <!-- 定义可覆盖的默认参数 --> <arg name="world" default="$(find urs_wearable)/worlds/test.world" /> <arg name="reference_latitude" default="32.319939" /> <arg name="reference_longitude" default="-106.763657" /> <!-- 引用Gazebo官方启动文件加载指定世界 --> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="world_name" value="$(arg world)" /> </include> <!-- 可添加自定义节点,比如发布经纬度参考参数 --> <node name="gps_reference_pub" pkg="urs_wearable" type="gps_ref_node" output="screen"> <param name="lat" value="$(arg reference_latitude)" /> <param name="lon" value="$(arg reference_longitude)" /> </node> </launch>
- 保存修改后,重新执行
roslaunch urs_wearable world.launch即可正常启动。
内容的提问来源于stack exchange,提问作者jun-gil
相关产品推荐
相关产品推荐

