D435i与速腾聚创(rslidar-16)标定

0 环境

Ubuntu18.04 ROS

一、相机及雷达安装

1、相机安装

链接:Ubuntu18.04 https://blog.csdn.net/weixin_45702256/article/details/108673424
TX2:https://blog.csdn.net/weixin_45702256/article/details/109329644

2、rslidar_16(速腾聚创)

IP:RS-lidar默认IP是192.168.1.200

mkdir -p ~/catkin_ws/src 
cd ~/catkin_ws/src 
git clone https://github.com/RoboSense-LiDAR/ros_rslidar
cd ..
catkin_make 

一、 imu标定

1.imu的launch文件设置

复制rs_camera.launch文件命名rs_imu_calibration.launch,修改内容
显示话题:打开imu相关话题
在这里插入图片描述
其中影响IMU数据同步的为:unite_imu_method
若使用linear_interpolation选项,可以将加速计的数据以插值的方式对齐到陀螺仪数据时间轴上;

若使用copy选项,则是在每一个陀螺仪数据上,附加上时间最近邻的加速计数据。

默认选项为:None。
在该文件中将unite_imu_method对应设置为“linear_interpolation”,两路数据即可以同步为同一个topic: /camera/imu:
在这里插入图片描述
使用命令行rostopic echo /camera/imu查看IMU数据,同一个数据中同时包含两个传感器数据
在这里插入图片描述

2 Ceres-Solver安装

git clone https://github.com/ceres-solver/ceres-solver

依赖

# Cmake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev
# BLAS & LAPAC
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse和CXSparse(可选)
# - 如果您希望将Ceres构建为*static*库(默认),则可以在Ubuntu主包repository中使用SuiteSparse包
sudo apt-get install libsuitesparse-dev
sudo apt-get update
sudo apt-get install libsuitesparse-dev

安装

mkdir build
cd build
camke ..
make
sudo make install

2 code_utils 安装

在这里插入图片描述
修改:在~/catkin_biao/src/code_utils/CMakeLists.txt中,添加:include_directories(“include/code_utils”)
或者:修改~/catkin_biao/src/code_utils/src/sumpixel_test.cpp 文件中的#include "backward.hpp"为#include “code_utils/backward.hpp”
在这里插入图片描述修改:
sudo apt-get install libdw-dev

3 imu_utils安装

4 标定参数文件撰写

cd ~/catkin_biao/src/imu_utils/launch
touch d435i_imu_calibration.launch
gedit d435i_imu_calibration.launch

文件内容:

<launch>
    <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
        <param name="imu_topic" type="string" value= "/camera/imu"/>
        <param name="imu_name" type="string" value= "d435i_imu_calibration"/>
        <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
        <param name="max_time_min" type="int" value= "10"/>
        <param name="max_cluster" type="int" value= "100"/>
    </node>
</launch>

max_time_min代表的是标定时间,这里的单位是分钟

5 录制IMU数据包

保持相机静止

roslaunch roslaunch realsense2_camera rs_imu_calibration.launch
cd ~/相机标定结果存储
rosbag record -O imu_calibration /camera/imu 

6 标定

添加环境标量:

sudo  gedit ~/.bashrc
source ~/catkin_biao/devel/setup.bash
# 更新
source ~/.bashrc

标定

roslaunch imu_utils d435i_imu_calibration.launch 
# 2
cd ~/相机标定结果存储
rosbag play -r 200 imu_calibration.bag

结束后标定结果保存在cd ~/catkin_biao/src/imu_utils/data文件夹下,文件名为d435i_imu_calibration_imu_param.yaml
结果如下:

%YAML:1.0
---
type: IMU
name: d435i_imu_calibration
Gyr:
   unit: " rad/s"
   avg-axis:
      gyr_n: 2.9731456108076613e-03
      gyr_w: 4.6757866248202665e-05
   x-axis:
      gyr_n: 1.9146867645158580e-03
      gyr_w: 4.0793210309672591e-05
   y-axis:
      gyr_n: 4.3985139109595879e-03
      gyr_w: 7.0425101846912364e-05
   z-axis:
      gyr_n: 2.6062361569475388e-03
      gyr_w: 2.9055286588023026e-05
Acc:
   unit: " m/s^2"
   avg-axis:
      acc_n: 7.1287226520511573e-02
      acc_w: 1.2369641418984393e-03
   x-axis:
      acc_n: 6.5809731513744446e-02
      acc_w: 1.1504376872998382e-03
   y-axis:
      acc_n: 8.0287824597207832e-02
      acc_w: 1.4939345312911317e-03
   z-axis:
      acc_n: 6.7764123450582442e-02
      acc_w: 1.0665202071043480e-03

在与相机标定中用到参数:陀螺仪和加速度计的随机游走和 高斯白噪声的平均值

Gyr:
   avg-axis:
      gyr_n: 2.9731456108076613e-03
      gyr_w: 4.6757866248202665e-05
Acc:
   avg-axis:
      acc_n: 7.1287226520511573e-02
      acc_w: 1.2369641418984393e-03

7 查看imu默认参数

rostopic echo /camera/gyro/imu_info
rostopic echo /camera/accel/imu_info
rostopic echo /camera/color/camera_info #相机参数

在这里插入图片描述

二、相机标定

1 kalibr ubuntu18.04安装

cd ~/catkin_biao/src
git clone https://github.com/ethz-asl/Kalibr.git
cd ..
catkin_make

1 编译出错
在这里插入图片描述
解决:修改CMakeLists.txt内容:

ExternalProject_Add(suitesparse_src
  CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
  DOWNLOAD_COMMAND rm -f SuiteSparse-${VERSION}.tar.gz && wget http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-${VERSION}.tar.gz
  PATCH_COMMAND tar -xzf ../SuiteSparse-${VERSION}.tar.gz && rm -rf ../suitesparse_src-build/SuiteSparse && sed -i.bu "s/\\/usr\\/local\\/lib/..\\/lib/g" SuiteSparse/SuiteSparse_config/SuiteSparse_config.mk && sed -i.bu "s/\\/usr\\/local\\/include/..\\/include/g" SuiteSparse/SuiteSparse_config/SuiteSparse_config.mk && mv SuiteSparse ../suitesparse_src-build/
  CONFIGURE_COMMAND ""
  BUILD_COMMAND cd SuiteSparse && make library -j8 -l8
  INSTALL_COMMAND cd SuiteSparse && mkdir -p lib && mkdir -p include && make install && cd lib && cp libamd.2.3.1.a libcamd.2.3.1.a libcholmod.2.1.2.a libcxsparse.3.1.2.a libldl.2.1.0.a libspqr.1.3.1.a libumfpack.5.6.2.a libamd.a	libcamd.a libcholmod.a	libcxsparse.a libldl.a libspqr.a libumfpack.a libbtf.1.2.0.a	libccolamd.2.8.0.a libcolamd.2.8.0.a libklu.1.2.1.a librbio.2.1.1.a libsuitesparseconfig.4.2.1.a libbtf.a	libccolamd.a libcolamd.a		libklu.a librbio.a libsuitesparseconfig.a  ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_LIB_DESTINATION}/ && cd .. && mkdir -p ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_INCLUDE_DESTINATION}/suitesparse && cd include && cp amd.h cholmod_matrixops.h SuiteSparseQR_definitions.h umfpack_load_symbolic.h umfpack_save_symbolic.h btf.h cholmod_modify.h SuiteSparseQR.hpp umfpack_numeric.h umfpack_scale.h camd.h cholmod_partition.h umfpack_col_to_triplet.h umfpack_qsymbolic.h umfpack_solve.h ccolamd.h cholmod_supernodal.h umfpack_defaults.h umfpack_report_control.h umfpack_symbolic.h cholmod_blas.h cholmod_template.h umfpack_free_numeric.h umfpack_report_info.h umfpack_tictoc.h cholmod_camd.h colamd.h umfpack_free_symbolic.h umfpack_report_matrix.h umfpack_timer.h cholmod_check.h cs.h umfpack_get_determinant.h umfpack_report_numeric.h umfpack_transpose.h cholmod_cholesky.h klu.h umfpack_get_lunz.h umfpack_report_perm.h umfpack_triplet_to_col.h cholmod_complexity.h ldl.h umfpack_get_numeric.h umfpack_report_status.h umfpack_wsolve.h cholmod_config.h RBio.h umfpack_get_symbolic.h umfpack_report_symbolic.h cholmod_core.h spqr.hpp umfpack_global.h umfpack_report_triplet.h cholmod.h SuiteSparse_config.h umfpack.h umfpack_report_vector.h cholmod_io64.h SuiteSparseQR_C.h umfpack_load_numeric.h umfpack_save_numeric.h ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_INCLUDE_DESTINATION}/suitesparse 
)

修改为:

  ExternalProject_Add(suitesparse_src
  CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
  DOWNLOAD_COMMAND rm -f SuiteSparse-${VERSION}.tar.gz && wget -O SuiteSparse-${VERSION}.tar.gz "https://github.com/jluttine/suitesparse/archive/v${VERSION}.tar.gz"
  #DOWNLOAD_COMMAND wget "https://www.baidu.com"
  PATCH_COMMAND tar -xzf ../SuiteSparse-${VERSION}.tar.gz && mv suitesparse-${VERSION} ./SuiteSparse && rm -rf ../suitesparse_src-build/SuiteSparse && sed -i.bu "s/\\/usr\\/local\\/lib/..\\/lib/g" SuiteSparse/SuiteSparse_config/SuiteSparse_config.mk && sed -i.bu "s/\\/usr\\/local\\/include/..\\/include/g" SuiteSparse/SuiteSparse_config/SuiteSparse_config.mk && mv SuiteSparse ../suitesparse_src-build/
  CONFIGURE_COMMAND ""
  BUILD_COMMAND cd SuiteSparse && make library -j8 -l8
  INSTALL_COMMAND cd SuiteSparse && mkdir -p lib && mkdir -p include && make install && cd lib && cp libamd.2.3.1.a libcamd.2.3.1.a libcholmod.2.1.2.a libcxsparse.3.1.2.a libldl.2.1.0.a libspqr.1.3.1.a libumfpack.5.6.2.a libamd.a	libcamd.a libcholmod.a	libcxsparse.a libldl.a libspqr.a libumfpack.a libbtf.1.2.0.a	libccolamd.2.8.0.a libcolamd.2.8.0.a libklu.1.2.1.a librbio.2.1.1.a libsuitesparseconfig.4.2.1.a libbtf.a	libccolamd.a libcolamd.a		libklu.a librbio.a libsuitesparseconfig.a  ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_LIB_DESTINATION}/ && cd .. && mkdir -p ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_INCLUDE_DESTINATION}/suitesparse && cd include && cp amd.h cholmod_matrixops.h SuiteSparseQR_definitions.h umfpack_load_symbolic.h umfpack_save_symbolic.h btf.h cholmod_modify.h SuiteSparseQR.hpp umfpack_numeric.h umfpack_scale.h camd.h cholmod_partition.h umfpack_col_to_triplet.h umfpack_qsymbolic.h umfpack_solve.h ccolamd.h cholmod_supernodal.h umfpack_defaults.h umfpack_report_control.h umfpack_symbolic.h cholmod_blas.h cholmod_template.h umfpack_free_numeric.h umfpack_report_info.h umfpack_tictoc.h cholmod_camd.h colamd.h umfpack_free_symbolic.h umfpack_report_matrix.h umfpack_timer.h cholmod_check.h cs.h umfpack_get_determinant.h umfpack_report_numeric.h umfpack_transpose.h cholmod_cholesky.h klu.h umfpack_get_lunz.h umfpack_report_perm.h umfpack_triplet_to_col.h cholmod_complexity.h ldl.h umfpack_get_numeric.h umfpack_report_status.h umfpack_wsolve.h cholmod_config.h RBio.h umfpack_get_symbolic.h umfpack_report_symbolic.h cholmod_core.h spqr.hpp umfpack_global.h umfpack_report_triplet.h cholmod.h SuiteSparse_config.h umfpack.h umfpack_report_vector.h cholmod_io64.h SuiteSparseQR_C.h umfpack_load_numeric.h umfpack_save_numeric.h ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_INCLUDE_DESTINATION}/suitesparse 
)

2 编译出错fatal error: libv4l2.h: No such file or directory #include <libv4l2.h>
解决:sudo apt install libv4l-dev

2.标定板制作

2.1

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 速腾聚创16雷达是一种激光雷达传感器,用于测量周围环境的距离和位置信息。而lego-loam是一种基于激光雷达数据的SLAM算法,用于实现机器人的自主定位和建图。这两种技术可以结合使用,实现更精确的定位和建图效果。 ### 回答2: 速腾聚创16雷达 lego-loam 是一种用于自动驾驶的传感器系统。该系统使用激光雷达技术来捕获车辆周围的环境信息,包括车道、地面高度、障碍物等。 该系统使用的是速腾聚创 16 线激光雷达,这是一种高精度的激光雷达,能够在不同光照条件下工作,具有长距离探测能力。它具有 360 度视角,可以同时扫描车辆周围的环境,并提供高分辨率的地图。 而 lego-loam 是一种自主车辆定位与地图建立算法。它利用激光雷达、惯性测量单元和视觉传感器来实现实时的车辆定位和地图构建,并且可以适应不同的路况和地形。该算法还可以利用视觉传感器来跟踪车辆的运动,从而提高自主驾驶系统的精度和可靠性。 但是同时速腾聚创16雷达 lego-loam 在使用过程中也存在一些问题,比如激光雷达会受到天气和光照条件的影响,可能会失效或数据质量较差;同时,算法也需要不断优化和更新,以适应不同场景和路况。 总之,速腾聚创16雷达 lego-loam 是自动驾驶技术中必不可少的传感器和算法系统,但是在实际使用中需要综合考虑各种因素,不断优化和改进,以确保自动驾驶技术的安全和可靠性。 ### 回答3: 速腾聚创16雷达 lego-loam是一种用于自主驾驶的传感器技术,它可以帮助汽车感知周围的环境和障碍物,从而实现智能驾驶。该技术采用了多模式感知技术,包括激光雷达、视觉传感器、GPS等,可以实现高精度的环境感知和实时地图构建。 速腾聚创16雷达 lego-loam作为一种多模式传感器技术,具有高精度、快速响应、低功耗等优点。它可以在各种天气和光照条件下正常工作,可以实现实时定位和精确地图绘制。此外,该技术在多车道和复杂路况下也能够实现稳定和可靠的感知和控制。 总之,速腾聚创16雷达 lego-loam的出现对于自主驾驶技术的发展有着重要的促进作用。它能够充分利用多模式感知技术来实现高精度和实时的环境感知,同时还可以优化系统的计算和通信效率,从而提高自主驾驶系统的安全性和可靠性。随着技术不断的发展和完善,相信未来将会有更多更先进、更智能的自主驾驶系统问世,为人类的出行和生活带来更大的便利和效益。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值