ORB-SLAM2,ORB-SLAM3,ROS编译的Syntax check of ORB_SLAM2/manifest.xml failed解决

2023-05-16

  • OpenCV version: 3.x
  • Eigen version: 3.x
  • Ubuntu version: 20.04
  • ros version: noetic
  • python -V: 2.7.18
  • python3 -V: 3.8.10

build.sh正常编译,但build_ros.sh编译不通过,报错如下:

[rosbuild] Building package ORB_SLAM2
[rosbuild] Error from syntax check of ORB_SLAM2/manifest.xml
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/opt/ros/noetic/lib/python3/dist-packages/roslib/__init__.py", line 53, in <module>
    import roslib.stacks  # noqa: F401, I100
  File "/opt/ros/noetic/lib/python3/dist-packages/roslib/stacks.py", line 45, in <module>
    import roslib.packages
  File "/opt/ros/noetic/lib/python3/dist-packages/roslib/packages.py", line 48, in <module>
    from catkin.find_in_workspaces import find_in_workspaces as catkin_find
  File "/opt/ros/noetic/lib/python3/dist-packages/catkin/find_in_workspaces.py", line 39, in <module>
    from catkin_pkg.packages import find_packages
  File "/opt/ros/noetic/lib/python3/dist-packages/catkin_pkg/packages.py", line 38, in <module>
    from .package import _get_package_xml
  File "/opt/ros/noetic/lib/python3/dist-packages/catkin_pkg/package.py", line 44, in <module>
    from catkin_pkg.condition import evaluate_condition
  File "/opt/ros/noetic/lib/python3/dist-packages/catkin_pkg/condition.py", line 17, in <module>
    import pyparsing as pp
  File "/opt/ros/noetic/lib/python3/dist-packages/pyparsing/__init__.py", line 101
    major: int
         ^
SyntaxError: invalid syntax
CMake Error at /opt/ros/noetic/share/ros/core/rosbuild/private.cmake:77 (message):
  [rosbuild] Syntax check of ORB_SLAM2/manifest.xml failed; aborting
Call Stack (most recent call first):
  /opt/ros/noetic/share/ros/core/rosbuild/public.cmake:174 (_rosbuild_check_manifest)
  CMakeLists.txt:4 (rosbuild_init)


-- Configuring incomplete, errors occurred!

CMake Error at /opt/ros/noetic/share/ros/core/rosbuild/private.cmake:77 (message):
[rosbuild] Syntax check of ORB_SLAM2/manifest.xml failed; aborting
Call Stack (most recent call first):
/opt/ros/noetic/share/ros/core/rosbuild/public.cmake:174 (_rosbuild_check_manifest)
CMakeLists.txt:4 (rosbuild_init)

下面是 /opt/ros/noetic/share/ros/core/rosbuild/private.cmake的部分内容:

# Check validity of manifest.xml, to avoid esoteric build errors
macro(_rosbuild_check_manifest)
  execute_process(
    COMMAND ${PYTHON_EXECUTABLE} -c "import roslib.manifest; roslib.manifest.parse_file('manifest.xml')"
    OUTPUT_VARIABLE _manifest_error
    ERROR_VARIABLE _manifest_error
    RESULT_VARIABLE _manifest_failed
    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
    OUTPUT_STRIP_TRAILING_WHITESPACE
  )
  if(_manifest_failed)
    message("[rosbuild] Error from syntax check of ${PROJECT_NAME}/manifest.xml")
    message("${_manifest_error}")
    message(FATAL_ERROR "[rosbuild] Syntax check of ${PROJECT_NAME}/manifest.xml failed; aborting")
  endif(_manifest_failed)
endmacro(_rosbuild_check_manifest)

可以看到manifest的error应该就是"import roslib.manifest; roslib.manifest.parse_file('manifest.xml')"的问题;

估计是ros的python版本问题,noetic将内容都放在了python3,而ORB-SLAM2的写法可能是在用python2.7;为此做一下测试:

~$ python3
Python 3.8.10 (default, Jun 22 2022, 20:18:18) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import rospkg
>>> import roslib.manifest
>>> exit()

可以看到python3的import过程完全没有问题;

~$ python
Python 2.7.18 (default, Jul  1 2022, 12:27:04) 
[GCC 9.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import rospkg
>>> import roslib.manifest
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/ros/noetic/lib/python3/dist-packages/roslib/__init__.py", line 53, in <module>
    import roslib.stacks  # noqa: F401, I100
  File "/opt/ros/noetic/lib/python3/dist-packages/roslib/stacks.py", line 45, in <module>
    import roslib.packages
  File "/opt/ros/noetic/lib/python3/dist-packages/roslib/packages.py", line 48, in <module>
    from catkin.find_in_workspaces import find_in_workspaces as catkin_find
  File "/opt/ros/noetic/lib/python3/dist-packages/catkin/find_in_workspaces.py", line 39, in <module>
    from catkin_pkg.packages import find_packages
  File "/opt/ros/noetic/lib/python3/dist-packages/catkin_pkg/packages.py", line 38, in <module>
    from .package import _get_package_xml
  File "/opt/ros/noetic/lib/python3/dist-packages/catkin_pkg/package.py", line 44, in <module>
    from catkin_pkg.condition import evaluate_condition
  File "/opt/ros/noetic/lib/python3/dist-packages/catkin_pkg/condition.py", line 17, in <module>
    import pyparsing as pp
  File "/opt/ros/noetic/lib/python3/dist-packages/pyparsing/__init__.py", line 101
    major: int
         ^
SyntaxError: invalid syntax

很奇怪python2可以调用到rospkg,但在roslib上出了问题;

思路一是换默认python为python3.8,然后进入到ORB_SLAM2/Examples/ROS/ORB_SLAM2的目录下,做如下测试:

hazyparker@hazyparker-Lenovo-Air-14IML-2019:~/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2$ python
Python 3.8.10 (default, Jun 22 2022, 20:18:18) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import roslib.manifest
>>> roslib.manifest.parse_file('manifest.xml')
<roslib.manifest.Manifest object at 0x7fbb72a16b40>

一切都很正常了,但是再运行./build_ros.sh还是报相同的manifest错误

解决

python版本原因,核心思想是让系统变量python指向python3而不是原来的python2;

不能是使用alias python="/usr/bin/python3.8",而是使用修改软连接的方式,让python指向python3;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ORB-SLAM2,ORB-SLAM3,ROS编译的Syntax check of ORB_SLAM2/manifest.xml failed解决 的相关文章

随机推荐

  • 补码和原码的转化过程

    在计算机系统中 xff0c 数值一律用补码来表示 xff08 存储 xff09 主要原因 xff1a 使用补码 xff0c 可以将符号位和其它位统一处理 xff1b 同时 xff0c 减法也可按加法来处理 另外 xff0c 两个用补 码表示
  • 在ubuntu系统下安装缺少的字体(一般缺少中文字体)

    在ubuntu系统下安装缺少的字体 cite Ubuntu LaTeX 环境配置 https www cnblogs com xqmeng p 13931222 html 第一步 xff1a 下载缺少的字体 xff08 这里保证下载字体的名
  • 【数学知识】质数与质因子

    一 质数 1 概念 质数又称素数 一个大于1的自然数 xff0c 除了1和它自身外 xff0c 不能被其他自然数整除的数叫做质数 xff0c 否则称为合数 规定1既不是质数也不是合数质数的个数是无穷的 2 例题 xff1a AcWing 3
  • ElasticSearch7.6.2安装与简单操作

    ElasticSearch7 6 2安装与简单操作 Es系列工具都是开箱即用 xff0c 所以安装比较简单 xff0c 各个系统下都是解压即可 前置环境 xff1a windows10 ES7 6 2 Kibana7 6 2 xff1a E
  • 【填坑】海思wifi平台Hi3861开发(上) -- 搭建环境篇

    文章目录 背景处处坑1 编译环境Ubuntu Python报错去找客户新虚拟机OK 2 开发SDK 背景 近期在海思的一款wifi模组Hi3861V100上开发 xff0c 想来和ESP模组应该很像 xff0c 心情还是很放松的 xff0c
  • 小白带你入坑四旋翼无人机——物料篇

    之前就想写了 xff0c 但是比赛挺忙 xff0c 就搁置下来了 xff0c 现在比完了刚好在记录一下 就在一个月前 xff0c 我真正开始了和四旋翼无人机打交道 当时 xff0c 我还是一个小白 xff0c 对无人机什么都不了解 xff0
  • 无人机pid调节顺口溜

    今天无意中找到 xff0c 具体那位大佬编的我也不清楚 xff0c 先感谢一下吧 参数整定找最佳 xff0c 从小到大顺序查 先是比例后积分 xff0c 最后再把微分加 曲线振荡很频繁 xff0c 比例度盘要放大 曲线漂浮绕大弯 xff0c
  • 锐捷(五)交换机简单网络管理协议(SNMP)的配置

    要求 xff1a 在交换机上部署SNMP功能 1 向主机 172 16 0 254 发送 Trap 消息 xff0c 版本采用V2C 2 读写的Community为 admin 只读的Community为 public 3 开启Trap消息
  • torch-geometric使用过程中的问题

    这次记录自己在使用torch geometric时 xff0c 出现的各种问题 xff1a 1 安装问题 xff1a Python 3 8torch geometric 1 6 1pytorch 1 6 0pandas 1 0 5numpy
  • Jetson Xavier NX

    Jetson Xavier NX 96 提示 xff1a 记录学习过程 xff0c 倘若有抄袭请原谅 文章目录 Jetson Xavier NX前言一 安装系统二 烧镜像三 启动系统打开风扇先 四 配置VNC xff08 此处借鉴 xff0
  • 破片飞散角矢量绘制

    破片飞散角仿真 Gurney公式 xff1a 计算破片初速度 v 0 61 2 E
  • MATLAB二维图形坐标变换

    图形绘制及坐标变换 矩形的绘制和坐标变换示例 MATLAB代码 思考为什么用MATLAB xff1f 矩阵适合作坐标变换 xff0c 而C语言的数组则较为麻烦 xff0c 需要创建二维数组 xff0c 写for循环 xff1b 方法一 xf
  • 毁伤评估总结

    毁伤评估总结 计算部分 xff08 1 xff09 破片飞散速度计算 Gurney公式 xff1a 计算破片初速度 v 0 61 2
  • ORB_SLAM2编译及试运行(含ROS)

    ORB SLAM2 github project linkORB SLAM2的安装与运行 Build and examples span class token function cd span ORB SLAM2 span class t
  • 基于gazebo的四旋翼无人机iris双目相机ORB_SLAM2

    gazebo环境中的四旋翼双目ORB仿真 ORB SLAM2的编译 github project linkORB SLAM2的安装与运行 Build span class token function cd span ORB SLAM2 s
  • CAS 数据库校验

    1 UnknownUsernameAuthenticationException gt BadUsernameOrPasswordAuthenticationException gt BadCredentialsAuthentication
  • VINS-Fusion、CCM-SLAM、COVINS、ORB-SLAM3编译

    VINS Fusion project link on github Build span class token builtin class name cd span catkin ws src span class token func
  • CCM_SLAM多无人机视觉SLAM仿真(gazebo环境)

    0 偷师学艺 follow instructions For using you own datasets or camera you need to create according calibration and launch file
  • Mavros控制无人机在gazebo环境下进行双目SLAM

    Mavros控制无人机在gazebo环境下进行双目SLAM 在这里先放参考 xff0c 键盘控制主要是从初接触ROS时的turtlesim功能包下的键盘控制节点得到的方法 参考 ROS tutorial turtle teleop key
  • ORB-SLAM2,ORB-SLAM3,ROS编译的Syntax check of ORB_SLAM2/manifest.xml failed解决

    OpenCV version 3 xEigen version 3 xUbuntu version 20 04ros version noeticpython V 2 7 18python3 V 3 8 10 build sh正常编译 xf