roslaunch及roscore 报错 roslaunch.xmlloader.XmlParseException: Invalid <param> tag: Cannot load

问题描述

运行 roslaunch 或者 roscore命令时,无法正常运行,提示错误
运行roslaunch

Traceback (most recent call last):
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/__init__.py", line 347, in main
    p.start()
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/parent.py", line 305, in start
    self._start_infrastructure()
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/parent.py", line 254, in _start_infrastructure
    self._load_config()
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/parent.py", line 156, in _load_config
    self.config = roslaunch.config.load_config_default(self.roslaunch_files, self.port,
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/config.py", line 451, in load_config_default
    load_roscore(loader, config, verbose=verbose)
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/config.py", line 94, in load_roscore
    loader.load(f_roscore, config, core=True, verbose=verbose)
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/xmlloader.py", line 763, in load
    self._load_launch(launch, ros_config, is_core=core, filename=filename, argv=argv, verbose=verbose)
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/xmlloader.py", line 735, in _load_launch
    self._recurse_load(ros_config, launch.childNodes, self.root_context, None, is_core, verbose)
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/xmlloader.py", line 670, in _recurse_load
    self._recurse_load(ros_config, tag.childNodes, child_ns, \
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/xmlloader.py", line 681, in _recurse_load
    self._param_tag(tag, context, ros_config, verbose=verbose)
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/xmlloader.py", line 96, in call
    return f(*args, **kwds)
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/xmlloader.py", line 285, in _param_tag
    raise XmlParseException(
roslaunch.xmlloader.XmlParseException: Invalid <param> tag: Cannot load command parameter [rosversion]: command [['rosversion', 'roslaunch']] returned with code [1]. 

运行roscore

roscore  
WARNING: unable to configure logging. No log files will be generated
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.

Traceback (most recent call last):
  File "/usr/bin/rosversion", line 33, in <module>
    sys.exit(load_entry_point('rospkg==1.4.0', 'console_scripts', 'rosversion')())
  File "/usr/lib/python3/dist-packages/rospkg/rosversion.py", line 136, in main
    version = get_version_from_package_name(args.package)
  File "/usr/lib/python3/dist-packages/rospkg/rosversion.py", line 75, in get_version_from_package_name
    version = rosstack.get_stack_version(package)
  File "/usr/lib/python3/dist-packages/rospkg/rospack.py", line 426, in get_stack_version
    return get_stack_version_by_dir(self.get_path(stack))
  File "/usr/lib/python3/dist-packages/rospkg/rospack.py", line 205, in get_path
    self._update_location_cache()
  File "/usr/lib/python3/dist-packages/rospkg/rospack.py", line 188, in _update_location_cache
    list_by_path(self._manifest_name, path, cache)
  File "/usr/lib/python3/dist-packages/rospkg/rospack.py", line 71, in list_by_path
    root = ElementTree(None, os.path.join(d, PACKAGE_FILE))
  File "/usr/lib/python3.8/xml/etree/ElementTree.py", line 555, in __init__
    self.parse(file)
  File "/usr/lib/python3.8/xml/etree/ElementTree.py", line 595, in parse
    self._root = parser._parse_whole(source)
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 1
RLException: Invalid <param> tag: Cannot load command parameter [rosversion]: command [['rosversion', 'roslaunch']] returned with code [1]. 

Param xml is <param name="rosversion" command="rosversion roslaunch"/>
The traceback for the exception was written to the log file
Traceback (most recent call last):
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/xmlloader.py", line 271, in _param_tag
    value = self.param_value(verbose, name, ptype, *vals)
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/loader.py", line 543, in param_value
    raise ValueError("Cannot load command parameter [%s]: command [%s] returned with code [%s]"%(name, command, p.returncode))
ValueError: Cannot load command parameter [rosversion]: command [['rosversion', 'roslaunch']] returned with code [1]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/__init__.py", line 347, in main
    p.start()
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/parent.py", line 305, in start
    self._start_infrastructure()
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/parent.py", line 254, in _start_infrastructure
    self._load_config()
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/parent.py", line 156, in _load_config
    self.config = roslaunch.config.load_config_default(self.roslaunch_files, self.port,
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/config.py", line 451, in load_config_default
    load_roscore(loader, config, verbose=verbose)
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/config.py", line 94, in load_roscore
    loader.load(f_roscore, config, core=True, verbose=verbose)
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/xmlloader.py", line 763, in load
    self._load_launch(launch, ros_config, is_core=core, filename=filename, argv=argv, verbose=verbose)
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/xmlloader.py", line 735, in _load_launch
    self._recurse_load(ros_config, launch.childNodes, self.root_context, None, is_core, verbose)
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/xmlloader.py", line 670, in _recurse_load
    self._recurse_load(ros_config, tag.childNodes, child_ns, \
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/xmlloader.py", line 681, in _recurse_load
    self._param_tag(tag, context, ros_config, verbose=verbose)
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/xmlloader.py", line 96, in call
    return f(*args, **kwds)
  File "/opt/ros/noetic/lib/python3/dist-packages/roslaunch/xmlloader.py", line 285, in _param_tag
    raise XmlParseException(
roslaunch.xmlloader.XmlParseException: Invalid <param> tag: Cannot load command parameter [rosversion]: command [['rosversion', 'roslaunch']] returned with code [1]. 

Param xml is <param name="rosversion" command="rosversion roslaunch"/>

原因分析

经过仔细排查,网上参考了很多教程,有的人说是重新指定一下setup.sh(注意,noetic为你自己的ros版本),

source /opt/ros/noetic/setup.bash

但是每个人的情况可能不同,经过测试重新source 一下无法解决问题

问题解决

恰好看到一个没有被人点赞的回答,https://answers.ros.org/question/218699/invalid-param-tag-cannot-load-command-parameter-rosversion-command-rosversion-roslaunch-returned-with-code1/
在这里插入图片描述

这个回答指出,尽可能排除自己之前是否有对任意空间中的package.xml进行修改
经过回忆和尝试,确实是这个问题(将package中的错误修改后,便可以正常使用)

猜你喜欢

转载自blog.csdn.net/Xu_Huitong/article/details/130501574