kalibr的编译bug

本文详细记录了在Ubuntu16中安装Kalibr标定工具遇到的问题及解决方案,包括处理Nomoudlenamedpyx错误和解决numpy/arrayobject.h文件缺失问题。通过正确的依赖安装和路径配置,成功解决了编译器报错。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统ubuntu16
BUG1.No moudule named pyx
BUG2. fatal error: numpy/arrayobject.h: 没有那个文件或目录

BUG1.No moudule named pyx
下载好了kalibr,先用它的python工具产生标定板,以下命令

python kalibr_create_target_pdf --type apriltag --nx 4 --ny 5 --tsize 0.04 

编译器报错,import不到pyx这个包(pyx这个python包用于产生pdf文件),然后我就按照常规的pip方法安装python的依赖

sudo pip install pyx

安装完这个包之后还是报错,python语法上的,类似下面这些,反正都是与pyx相关的,因为我电脑上有两个版本的python,我就怀疑是不是pip安装的路径不对,后来参考了n多博客,发现依然没用。

Traceback (most recent call last):
  File "kalibr_create_target_pdf", line 206, in <module>
    generateAprilBoard(canvas, parsed.n_cols, parsed.n_rows, parsed.tsize, parsed.tagspacing, parsed.tagfamiliy, parsed.skipIds)
  File "kalibr_create_target_pdf", line 122, in generateAprilBoard
    c.text(pos[0]+tagSize*0.3, pos[1], "x")
  File "/usr/local/lib/python2.7/dist-packages/pyx/canvas.py", line 324, in text
    return self.insert(self.texrunner.text(x, y, atext, *args, **kwargs))
  File "/usr/local/lib/python2.7/dist-packages/pyx/text.py", line 1194, in text
    self.execute(expr, self.defaulttexmessagesdefaultrun + self.texmessagesdefaultrun + texmessages)
  File "/usr/local/lib/python2.7/dist-packages/pyx/text.py", line 951, in execute
    self.defaulttexmessagesstart + self.texmessagesstart)
  File "/usr/local/lib/python2.7/dist-packages/pyx/text.py", line 1005, in execute
    self.texinput.write(self.expr)
IOError: [Errno 32] Broken pipe
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
  File "/usr/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
    func(*targs, **kargs)
  File "/usr/local/lib/python2.7/dist-packages/pyx/text.py", line 748, in _cleantmp
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/local/lib/python2.7/dist-packages/pyx/text.py", line 663, in run
    raise RuntimeError("TeX/LaTeX finished unexpectedly")
RuntimeError: TeX/LaTeX finished unexpectedly
    texrunner.texinput.write("\n\\end\n")

IOError: [Errno 32] Broken pipe
Error in sys.exitfunc:
Traceback (most recent call last):
  File "/usr/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
    func(*targs, **kargs)
  File "/usr/local/lib/python2.7/dist-packages/pyx/text.py", line 748, in _cleantmp
    texrunner.texinput.write("\n\\end\n")
IOError: [Errno 32] Broken pipe

然后就玄学了,我用了这个命令来安装pyx,然后再生成pdf,直接就好了,真的是玄学。

sudo apt-get install python-pyx

BUG2. fatal error: numpy/arrayobject.h: 没有那个文件或目录
首先确认安装了numpy,然后使用下面的命令

ln -s /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy /usr/local/include/numpy

这个时参考了这位大神的解释

https://github.com/ethz-asl/kalibr/issues/123
### Kalibr 工具概述 Kalibr 是一款用于多传感器校准的强大工具,支持相机与 IMU 的联合标定以及多个摄像头之间的相对外参标定。它基于 ROS(Robot Operating System),能够处理多种类型的传感器数据并提供精确的标定结果。 #### 安装与配置 为了使用 Kalibr 进行标定,需先完成安装和环境配置。具体操作如下: 1. 构建 Catkin 工作空间后,运行以下命令以加载必要的环境变量: ```bash source ~/kalibr_workspace/devel/setup.bash ``` 2. 如果遇到编译错误,可能需要调整源码中的头文件路径。例如,在 `code_utils` 下找到 `sumpixel_test.cpp` 文件,并将其包含的头文件从 `#include "backward.hpp"` 修改为目标系统的兼容版本[^3]。 #### 相机与 IMU 联合标定流程 以下是使用 Kalibr 对相机和 IMU 进行联合标定的主要步骤说明: 1. **准备硬件设备** 使用支持 ROS 驱动的相机(如 Realsense)和惯性测量单元(IMU)。确保两者的时间戳同步良好。 2. **创建标定板描述文件** 标定过程中需要用到棋盘格图案作为目标物。定义其尺寸和布局信息到 YAML 文件中,例如: ```yaml checkerboard: rows: 8 columns: 6 size: 0.045 ``` 3. **录制数据集** 利用 ROS bag 记录实验期间采集的数据流。这些记录应覆盖足够的运动范围以便充分估计内外参数关系。 4. **执行标定程序** 启动 kalibr_calibration 命令来启动实际计算过程。此阶段会解析之前提到过的 imu.yaml 参数文件内容[^4],其中包含了关于加速度计及陀螺仪噪声特性的重要设定项。 5. **分析结果输出** 成功完成后,软件包将生成一系列报告文档,展示各个组件间的转换矩阵以及其他统计指标。 #### 示例代码片段 下面给出一段简单的 Python 脚本示例,演示如何通过 rospy 接收来自 IMU 主题的消息: ```python import rospy from sensor_msgs.msg import Imu def callback(data): print(f"Received IMU data:\n{data}") rospy.init_node('imu_listener', anonymous=True) sub = rospy.Subscriber('/imu0', Imu, callback) if __name__ == '__main__': try: rospy.spin() except KeyboardInterrupt: pass ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值