当前位置: 首页 > news >正文

Ubuntu20.04安装kalibr

文章目录

  • 环境配置
  • 安装wxPython
  • 下载编译
  • 测试
  • 报错1
    • 问题描述
    • 问题分析
    • 问题解决
  • 参考


环境配置

Ubuntu20.04,python3.8.10,boost自带的1.71

sudo apt update
sudo apt-get install python3-setuptools python3-rosinstall ipython3 libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-noetic-vision-opencv ros-noetic-image-transport-plugins ros-noetic-cmake-modules python3-software-properties software-properties-common libpoco-dev python3-matplotlib python3-scipy python3-git python3-pip libtbb-dev libblas-dev liblapack-dev libv4l-dev python3-catkin-tools python3-igraph libsuitesparse-dev 

安装wxPython

先下载 wxPython-4.2.1-cp38-cp38-linux_x86_64.whl

pip3 install wxPython-4.2.1-cp38-cp38-linux_x86_64.whl

下载编译

mkdir ~/kalibr_ws/src
cd ~/kalibr_ws/src
git clone --recursive https://github.com/ori-drs/kalibrcd ~/kalibr_ws
source /opt/ros/noetic/setup.bash
catkin init
catkin config --extend /opt/ros/noetic
catkin config --merge-devel 					# Necessary for catkin_tools >= 0.4.
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Releasecatkin build -DCMAKE_BUILD_TYPE=Release -j16    # 比较耗时,5-6分钟吧,可以喝杯茶。

测试

damon@damon-virtual-machine:/opt/kalibr_ws$ source devel/setup.bash
damon@damon-virtual-machine:/opt/kalibr_ws$ devel/lib/kalibr/kalibr_calibrate_cameras --help
importing libraries
Calibrate the intrinsics and extrinsics of a camera system with non-shared overlapping field of view.usage: Example usage to calibrate a camera system with two cameras using an aprilgrid. cam0: omnidirection model with radial-tangential distortioncam1: pinhole model with equidistant distortionkalibr_calibrate_cameras --models omni-radtan pinhole-equi --target aprilgrid.yaml \--bag MYROSBAG.bag --topics /cam0/image_raw /cam1/image_raw。。。。。。

报错1

问题描述

在使用 Kalibr 的 kalibr_calibrate_cameras 脚本时,执行命令时遇到以下错误:

damon@damon-virtual-machine:~/kalibr_ws$ devel/lib/kalibr/kalibr_calibrate_cameras --help
importing libraries
Traceback (most recent call last):File "devel/lib/kalibr/kalibr_calibrate_cameras", line 15, in <module>exec(compile(fh.read(), python_script, 'exec'), context)File "/home/damon/kalibr_ws/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_calibrate_cameras", line 6, in <module>import smFile "/home/damon/kalibr_ws/devel/lib/python3/dist-packages/sm/__init__.py", line 34, in <module>exec(__fh.read())File "<string>", line 4, in <module>
ImportError: /home/damon/kalibr_ws/devel/lib/python3/dist-packages/sm/libsm_python.so: undefined symbol: _ZN5boost6python15instance_holder8allocateEP7_objectmmm
damon@damon-virtual-machine:~/kalibr_ws$ 

问题分析

这个错误表明,libsm_python.so 文件中依赖的符号 _ZN5boost6python15instance_holder8allocateEP7_objectmmm 无法解析。该符号属于 Boost.Python 库,通常用于处理 Python 和 C++ 之间的交互。

问题解决

1.验证 Boost 版本

检查 /usr/include/boost/version.hpp,确保显示的版本是系统默认版本(1.71):

damon@damon-virtual-machine:~/kalibr_ws$ cat /usr/include/boost/version.hpp | grep BOOST_LIB_VERSION
//  BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
#define BOOST_LIB_VERSION "1_71"
damon@damon-virtual-machine:~/kalibr_ws$ 
  1. 检查是否安装 boost-python
damon@damon-virtual-machine:~/kalibr_ws$ dpkg -l | grep libboost-python
ii  libboost-python-dev                         1.71.0.0ubuntu2                       amd64        Boost.Python Library development files (default version)
ii  libboost-python1.71-dev                     1.71.0-6ubuntu6                       amd64        Boost.Python Library development files
ii  libboost-python1.71.0                       1.71.0-6ubuntu6                       amd64        Boost.Python Library
damon@damon-virtual-machine:~/kalibr_ws$ 

从输出可以看出,系统中已经正确安装了 boost-python 和与 Boost 1.71 匹配的相关开发包:

  • libboost-python-dev:默认的开发文件(与系统的 Boost 版本保持一致)。
  • libboost-python1.71-dev:Boost 1.71 版本的开发文件。
  • libboost-python1.71.0:Boost 1.71 版本的运行时库。

这些包都已经安装完毕,说明 boost-python 的安装环境是正常的。

  1. 检查 boost-python 的库文件是否存在

运行以下命令查看 boost-python 的动态库:

ls /usr/lib | grep boost_python

输出中应包含类似以下内容:

libboost_python1.71.so
libboost_python-py38.so

但运行ls /usr/lib | grep boost_python,没有输出
在这里插入图片描述

从输出可以看出,boost-python 的动态库文件似乎未正确安装或未找到。尽管 dpkg 显示相关开发包已经安装,但动态库文件 (libboost_python*.so) 并未出现在 /usr/lib 目录中。

  1. 确认动态库文件的实际位置

有时动态库可能安装到了其他路径(例如 /usr/lib/x86_64-linux-gnu)。运行以下命令搜索 libboost_python 文件:

damon@damon-virtual-machine:~/kalibr_ws$ sudo find /usr -name "libboost_python*.so"
[sudo] damon 的密码: 
/usr/lib/x86_64-linux-gnu/libboost_python1.71.so
/usr/lib/x86_64-linux-gnu/libboost_python38.so
damon@damon-virtual-machine:~/kalibr_ws$ 

从输出可以看出,boost-python 的动态库文件已正确安装并位于路径 /usr/lib/x86_64-linux-gnu/ 中。具体包括以下文件:

  • /usr/lib/x86_64-linux-gnu/libboost_python1.71.so:Boost Python 1.71 的主动态库。
  • /usr/lib/x86_64-linux-gnu/libboost_python38.so:适配 Python 3.8 的 Boost Python 动态库。

这些文件是正确的,说明 boost-python 已安装成功。

。。。。比较多,不整理了

  1. 创建测试代码文件

在当前目录创建 my_program.cpp

#include <boost/python.hpp>
#include <iostream>// 定义普通函数
std::string greet() {return "Hello, Python!";
}// 模块初始化
BOOST_PYTHON_MODULE(example) {using namespace boost::python;def("greet", greet); // 绑定函数
}int main() {std::cout << "Boost Python test program compiled successfully!" << std::endl;return 0;
}

编译命令

g++ -shared -fPIC -I/usr/include/python3.8 -o example.so my_program.cpp /usr/lib/x86_64-linux-gnu/libboost_python1.71.so

加载并测试模块:

python3.8 -c "import example; print(example.greet())"

预期输出:

Hello, Python!

参考

Ubuntu20.04安装kalibr


http://www.lryc.cn/news/493160.html

相关文章:

  • Flink 任务启动脚本-V2(包括ck启动)
  • 扫雷-完整源码(C语言实现)
  • python -从文件夹批量提取pdf文章的第n页,并存储起来
  • R Excel 文件操作指南
  • RabbitMQ 安装延迟队列插件 rabbitmq_delayed_message_exchange
  • fatal error in include chain (rtthread.h):rtconfig.h file not found
  • Java 反射(Reflection)
  • Python爬取机车网车型数据并存入Mysql数据库
  • fpga 时序分析基础
  • python学习——二维列表的列表生成式
  • 【错误❌】——槽函数定义好但未初始化
  • OpenCV相机标定与3D重建(6)将3D物体点投影到2D图像平面上函数projectPoints()的使用
  • 【Linux】剧幕中的灵魂更迭:探索Shell下的程序替换
  • 38 基于单片机的宠物喂食(ESP8266、红外、电机)
  • Unity中的数学应用 之 角色移动中单位化向量的妙用 (小学难度)
  • 设置ip和代理DNS的WindowsBat脚本怎么写?
  • 字符串分割转换(Java Python JS C++ C )
  • 【Maven】项目创建
  • number的++和--运算 C#
  • 浅谈网络 | 应用层之HTTPS协议
  • 2、Three.js初步认识场景Scene、相机Camera、渲染器Renderer三要素
  • Deepwave 声波正演和弹性波正演
  • 【WRF-Urban】多层建筑能源参数化模型概述:原理
  • 基于Qt实现的自定义树结构容器:设计与应用
  • 网络命令Linux
  • 简单的Activiti Modoler 流程在线编辑器
  • 【NodeJS】Express写接口的整体流程
  • Oracle 锁表的解决方法及避免锁表问题的最佳实践
  • 关于 vue+element 日期时间选择器 限制只能选当天以及30天之前的日期
  • 租辆酷车小程序开发(二)—— 接入微服务GRPC