ubuntu20.04+kalibr_相机与imu联合标定

这篇具有很好参考价值的文章主要介绍了ubuntu20.04+kalibr_相机与imu联合标定。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


本文使用的相机是 Realsense D435i,imu是轮趣科技的 N100
基于 ubuntu20.04+kalibr+imu_utils标定相机和imu以及联合标定。

1、安装kalibr

安装依赖

sudo apt-get install -y \
    git wget autoconf automake nano \
    libeigen3-dev libboost-all-dev libsuitesparse-dev \
    doxygen libopencv-dev \
    libpoco-dev libtbb-dev libblas-dev liblapack-dev libv4l-dev
   
 sudo apt-get install -y python3-dev python3-pip python3-scipy \
    python3-matplotlib ipython3 python3-wxgtk4.0 python3-tk python3-igraph

建立工作空间

mkdir kalibr_workspace
cd kalibr_workspace
mkdir src
cd src

下载kalibr并编译

git clone https://github.com/ethz-asl/kalibr.git
catkin_make
source devel/setup.bash

或者直接把setup.bash加到~/.bashrc

2、相机标定

2.1 制作标定版

rosrun kalibr kalibr_create_target_pdf --type apriltag --nx 6 --ny 6 --tsize 0.025 --tspace 0.3 --eps
  • –type apriltag 标定板类型
  • –nx [NUM_COLS] 列个数 6
  • –ny [NUM_ROWS] 行个数 6
  • –tsize [TAG_WIDTH_M] 二维码方格长度,单位m 0.025
  • –tspace [TAG_SPACING_PERCENT] 小方格与二维码方格长度比例 0.3
  • –eps 生成eps文件

最终会在kalibr的工作空间下生成target.pdf文件。

2.2 使用ROS启动相机节点

安装相机节点

sudo apt-get install ros-noetic-usb-cam

修改配置文件(主要是相机编号video_device和分辨率,有时也需要修改图像编码pixel_format

roscd usb_cam
sudo gedit launch/usb_cam-test.launch

imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享
可以查询所有相机编号,我用的realsense D435i,RGB相机是video6(一个一个试出来的QAQ)

<launch>
  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
    <param name="video_device" value="/dev/video6" />
    <param name="image_width" value="640" />
    <param name="image_height" value="480" />
    <param name="pixel_format" value="yuyv" />
    <param name="camera_frame_id" value="usb_cam" />
    <param name="io_method" value="mmap"/>
  </node>
  <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
    <remap from="image" to="/usb_cam/image_raw"/>
    <param name="autosize" value="true" />
  </node>
</launch>

启动相机节点

roslaunch usb_cam usb_cam-test.launch 

imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享
此时的ros节点如下图所是,后面需要用到的topic是图中红框圈起来的。
imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享
降低相机输出频率为4Hz

# rosrun topic_tools throttle messages [相机话题] 4.0 [自定义改变频率的相机话题名字]
# 此时要保证相机节点是启动的
rosrun topic_tools throttle messages /usb_cam/image_raw 4.0 /usb_cam/image_raw_throttle

此时的ros节点
imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享

录制bag

# rosbag record [相机话题] -O [保存的bag名字]
rosbag record /usb_cam/image_raw_throttle -O cam_calib.bag

2.3 用kalibr标定相机

设置标定板配置文件,保存为.yaml文件

target_type: 'aprilgrid' #gridtype
tagCols: 6               #number of apriltags
tagRows: 6               #number of apriltags
tagSize: 0.025           #size of apriltag, edge to edge [m]
tagSpacing: 0.3          #ratio of space between tags to tagSize

相机标定
支持的相机模型

rosrun kalibr kalibr_calibrate_cameras \
--bag bag/cam_calib.bag  \
--topics /usb_cam/image_raw_throttle \
--models pinhole-radtan \
--target config/apriltag.yaml \
--show-extraction 
  • –bag [录制的包]
  • –topics [(降频后的)相机话题]
  • –models [相机模型-畸变模型,可以参考上面的连接]
  • –target [标定板配置文件]
  • –show-extraction(设置表示展示角点提取过程)
  • –bag-from-to 选择bag的时间段

标定结果一般与bag文件保存在一起,以YAML格式储存的标定结果,它可以直接用来作为相机-IMU校正的输入;txt文件是相机标定的详细参数,重投影误差小于1个像素,该结果可用。
imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享
imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享
如果生成reporter报错,那么需要修改~/.config/qt5ct/qt5ct.conf配置文件,将style=Fusion改为 style=gtk3
imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享

3、imu标定

3.1 使用ROS启动imu节点

**安装imu串口通信 **

sudo apt install ros-noetic-serial

获取imu串口号,图中是ttyACM0,有些教程显示的是ttyUSB0,是一样的。
imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享

使用轮趣科技N100_imu,下载官方的ROS_SDK,百度网盘链接:https://pan.baidu.com/s/1TLguF28svpFfcGHnBRzLgQ?pwd=q9dp,提取码:q9dp

建立新的工作空间,把/fdilink_ahrs_ROS1/fdilink_ahrs复制到工作空间/src下,然后catkin_make编译,编译成功后记得把/devel/setup.bash文件source一下,或者加到~/.bashrc中。

修改/home/zxc/imu_workspace/src/fdilink_ahrs/launch目录下的ahrs_data.launch文件,主要修改端口号,与上一步的串口号对应。

<param name="port" value="/dev/ttyACM0"/>

注意:每次重新接IMU时要设置一下权限

sudo chmod 666 /dev/ttyACM0

启动imu节点

roslaunch fdilink_ahrs ahrs_data.launch

imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享
可以用rostopic echo /imu打印信息
imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享
rviz可视化
打开rviz,添加imu,设置话题,Global Options 固定坐标系设置为gyro_link
imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享
静置imu,录制bag,尽量时间长一点,录制2h左右。

rosbag record /imu -O imu.bag

3.2 安装imu_utils

由于imu_utils依赖code_utils,所以必须先编译code_utils,后编译imu_utils,此外code_utils依赖ceres,需要先全局安装ceres

3.2.1 安装ceres-solver

安装依赖

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev

下载编译

wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
tar -zxvf ceres-solver-1.14.0.tar.gz
cd ceres-solver-1.14.0
mkdir build
cd build
cmake ..
make -j8
sudo make install

3.2.2 安装code_utils

安装依赖

sudo apt-get install libdw-dev

下载code_utils

git clone https://github.com/gaowenliang/code_utils.git

编译code_utils
需要修改部分文件

  • CMakeLists.txt

修改set(CMAKE_CXX_FLAGS “-std=c++11”)为set(CMAKE_CXX_FLAGS “-std=c++14”)

  • src/sumpixel_test.cpp

修改头文件#include "backward.hpp"#include “code_utils/backward.hpp”

添加头文件:#include"opencv2/imgcodecs/legacy/constants_c.h"

CV_MINMAX 改为 NORM_MINMAX

  • src/mat_io_test.cpp

CV_LOAD_IMAGE_UNCHANGED 改为 cv::IMREAD_UNCHANGED
CV_LOAD_IMAGE_GRAYSCALE 改为cv::IMREAD_GRAYSCALE

由于我把这个包放在之前imu的工作空间下了,所以单独编译

catkin_make -DCATKIN_WHITELIST_PACKAGES="code_utils"

3.2.3 安装imu_utils

下载imu_utils

git clone https://github.com/gaowenliang/imu_utils.git

编译imu_utils
需要修改2个文件

  • CMakeLists.txt

修改set(CMAKE_CXX_FLAGS "-std=c++11")set(CMAKE_CXX_FLAGS "-std=c++14")

  • src/imu_an.cpp

添加头文件:#include <fstream>

也单独编译

catkin_make -DCATKIN_WHITELIST_PACKAGES="imu_utils"

3.3 用imu_utils标定imu

新建一个launch文件
按照如下设置,主要修改IMU话题名称和标定文件保存的位置。

<launch>
    <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
        <param name="imu_topic" type="string" value= "/imu"/>	<!--IMU话题名-->
        <param name="imu_name" type="string" value= "N100"/>	 <!--相应名字-->
        <param name="data_save_path" type="string" value= "$(find imu_utils)/bag/"/>   <!--存放数据的文件路径可以根据自己需要修改-->
        <param name="max_time_min" type="int" value= "120"/>		<!--设置bag最大时间为120min-->
        <param name="max_cluster" type="int" value= "100"/>
    </node>
</launch>

启动标定

roslaunch imu_utils calibrate.launch

imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享
出现上述界面后,播放录制的imu包

rosbag play -r 200 imu.bag		// 200 倍速播放rosbag

imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享
imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享

标定完结果会保存在launch文件设置的存储位置,一堆txt文件和一个yaml文件。

  • IMU标定这部分参考博主学无止境的小龟,写的很细,参考链接放在最后面了。

4、imu和相机联合标定

启动相机、imu节点

roslaunch usb_cam usb_cam-test.launch
rosrun topic_tools throttle messages /usb_cam/image_raw 4.0 /cam
roslaunch fdilink_ahrs ahrs_data.launch

录制bag

rosbag record /imu /cam -O cam_imu.bag

充分激励imu六个轴的运动,参考B站搬运视频,俯仰角、偏航角、横滚角、上下平移、左右平移、前后平移,各弄三次,幅度尽量大一点,之后再混合运动三次,录制时间大概一两分钟。

Kalibr标定
需要三个配置文件:标定板配置文件、imu内参文件、相机内参文件;
一个bag文件:imu和相机联合录制的bag

rosrun kalibr kalibr_calibrate_imu_camera \
--imu /home/zxc/kalibr_workspace/config/imu.yaml \
--cam /home/zxc/kalibr_workspace/config/cam_calib-camchain.yaml \
--target /home/zxc/kalibr_workspace/config/apriltag.yaml \
--bag /home/zxc/kalibr_workspace/bag/cam_imu.bag --show-extraction

注意:
(1)imu和相机内参文件包含了imu和相机节点话题,要和录制bag时候的话题对应
(2)相机的配置文件可以直接用相机标定生成的.yaml文件,imu的配置文件需要修改成如下格式👇

#Accelerometers
accelerometer_noise_density: 5.43036e-03   #Noise density (continuous-time)
accelerometer_random_walk:   1.44598e-04   #Bias random walk
#Gyroscopes
gyroscope_noise_density:     4.9700e-03   #Noise density (continuous-time)
gyroscope_random_walk:       6.8522e-05   #Bias random walk
rostopic:                    /imu      #the IMU ROS topic
update_rate:                 200.0      #Hz (for discretization of the values above)

imu-camera联合标定,经验教训,传感器标定,环境搭建,相机,经验分享
标定完成出现上图界面。

参考链接

相机标定https://blog.csdn.net/yangjinghui2019/article/details/130727459
N100在ROS下通信 http://www.jnnr.cn/a/605589.html
ubuntu安装ceres库https://blog.csdn.net/szylight2022/article/details/127313907
IMU标定https://blog.csdn.net/qq_39607707/article/details/125061020#t7
IMU和相机联合标定https://rupingcen.blog.csdn.net/article/details/109592631文章来源地址https://www.toymoban.com/news/detail-779185.html

到了这里,关于ubuntu20.04+kalibr_相机与imu联合标定的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Kalibr标定相机和IMU(ZED+px4)外参

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文仅使用kalibr中cam-imu的联合标定,关于camera内参默认已经知道了。主要会总结一些标定上的小经验,有不对的地方,希望网友可以指出。文章最后将使用标定的cam-imu外参在VINS-Fusion中进行验证 Kalibr是

    2023年04月19日
    浏览(65)
  • 【Ubuntu18.04】激光雷达与相机联合标定(Livox+HIKROBOT)(一)相机内参标定

    Livox Lidar + HIKROBOT Camera 联合标定 参考链接:相机雷达标定文档 安装ROS环境,参考笔者的博客:【ROS】Ubuntu18.04安装Ros 参考链接:海康Camera MVS Linux SDK二次开发封装ROS packge过程记录(c++) 海康的相机没有ros驱动,且对linux开发不太友好(但支持windows),因此需要重写了sdk接口

    2024年02月04日
    浏览(36)
  • 使用kaliber与imu_utils进行IMU、相机+IMU联合标定

    目录 1 标定工具编译 1.1 IMU标定工具 imu_utils 1.2 相机标定工具 kaliber 2 标定数据录制 3 开始标定 3.1 IMU标定 3.2 相机标定 3.3 相机+IMU联合标定 4 将参数填入ORBSLAM的文件中         标定IMU我们使用imu_utils软件进行标定:         首先我们安装标定软件的依赖项:Eigen、Ceres

    2024年02月07日
    浏览(29)
  • 【ZED&SLAM】Ubuntu18.04系统ZED 2i双目相机SDK安装、联合标定、SLAM测试

    笔记本电脑i5-8300H、GTX 1060、32G RAM 后续一些工作转移到了PC上:i7-12700 因为后面要测试Vins-Fusion和ORB-SLAM3,所以推荐安装 Ubuntu 18.04(或者Ubuntu 20.04) + ROS 1 (不建议用比Ubuntu18更低的版本) ROS一键安装命令: ZED 2i:双目相机配有9轴IMU 此前电脑已经配置好:Ubuntu 18.04,ROS 1,

    2024年01月18日
    浏览(37)
  • jetson orin+livox mid-70+imu+云台相机联合标定和数据采集

    将之前无人机上的x86多源数据采集和联合标定算法重建在新板子jetson orin上,解决之前多传感器采集数据时间戳没对齐的问题。 安装ros环境,推荐小鱼:http://fishros.com/#/fish_home,大佬的包避免了自己安装的很多坑; 安装livoxsdk: https://github.com/Livox-SDK/Livox-SDK; 安装云台相机s

    2024年02月11日
    浏览(33)
  • 在Ubuntu20.04下安装Autoware.universe和Carla并进行联合仿真

    1、安装 Carla 0.9.13 1、进入UE网页,按照顺序完成以下6步。 https://www.unrealengine.com/en-US/ue-on-github 2、进入EpicGame的Github https://github.com/EpicGames 点击UnrealEngine 2、直接clone出来是最新版,需要设置classic token,可以参考: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/

    2023年04月15日
    浏览(38)
  • 海康威视工业相机Linux SDK开发指南详细步骤(Ubuntu20.04+单目、双目相机单次、连续拍照)

    由于实验需要使用双目相机同步采集图像,实验室准备的设备是海康威视的工业相机,对其进行二次开发,其中花了大部分时间查找资料,以及代码进行反复调试,最后到达了想要的效果,并写博客记录一下。 首先是资料的查找,我们要注意的是海康威视一共有两个官网,一

    2024年02月16日
    浏览(70)
  • 【PX4】Ubuntu20.04+ROS Noetic 配置PX4-v1.13和Gazebo11联合仿真环境【教程】

    写在前面,目前中文互联网上关于 PX4 飞控的学习资料较少,笔者查阅了大量的资料整理成这篇博客,贡献一些学习内容,码字不易,如果帮助到您,请您帮我点点赞。 安装Ubuntu可以查看这篇教程,安装ros可以查看这篇教程,这里就不再赘述了。 ● 在使用apt安装的过程中(

    2024年02月08日
    浏览(39)
  • Ubuntu20.04中ros运行ORBSLAM2_with_pointcloud_map(采用D435相机实时运行)

    第一次运行,有些坑,然后告诉一下大家该如何自己解决的思路,毕竟每个人的实际运行环境不一样。 系统:联想Y7000,Ubunru20.04(已经安装ros noetic,推荐小鱼的一键安装ros)直接终端输入: 显卡驱动已经安装好,采用的GPU1050Ti 显卡安装,建议就用系统自带的安装方式(设

    2024年02月08日
    浏览(32)
  • 工程(十)——github代码ubuntu20.04在ROS环境运行单目和RGBD相机ORB-SLAM3稠密

    博主创建了一个科研互助群Q:772356582,欢迎大家加入讨论交流一起学习。 加稠密建图:git@github.com:huashu996/ORB_SLAM3_Dense_YOLO.git 纯净版:git@github.com:huashu996/ORB_SLAM3.git orb-slam3的整个环境配置还是比较麻烦的,先将一些坑写在前面,供大家参考和避开这些坑。 orb-slam3的配置要求

    2024年01月25日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包