D435i标定摄像头和IMU笔记一(配置环境篇)

参考视频
D435i标定摄像头和IMU笔记一(配置环境篇)
D435i标定摄像头和IMU笔记二(RGB摄像头标定篇)
D435i标定摄像头和IMU笔记二-2(RGB+双目多摄像头标定篇)
D435i标定摄像头和IMU笔记三(IMU标定篇)
D435i标定摄像头和IMU笔记四(RGB摄像头和IMU联合标定篇)
D435i标定摄像头和IMU笔记四-2(双目摄像头与IMU联合标定篇)

一、标定方案

D435i标定的方案为:使用RealSence官网教程标定IMU的bias和三个轴的对齐、使用港科大imu_utils标定IMU获得随机游走数据、单RGB摄像头标定使用kalibr、单摄像头+IMU联合标定采用kalibr。

二、环境要求

ubuntu16.04/ubuntu18.04、ros kinetic/melodic、python2.7、python3.6及以上。

建议:

  1. 使用ubuntu16.04的版本,因为kalibr实在太久没更新了,ubuntu16.04安装丝滑。ubuntu18.04也成功了,但是使用的不是官方编译方式,官方是python的catkin,我用的是catkin_make
  2. 如果不想单独安装ubuntu16.04,可以使用docker工具来安装一个ubuntu16.04容器。后面补充,docker功能自行百度。
  3. 安装新的ubuntu16.04之后,除了换源,第一件事就是将python3升级到python3.6以上,因为python3.5及以下会报错,很麻烦

三、环境配置

3.1 基本环境安装

3.1.1 for ubuntu16.04

  1. 安装ubuntu16.04,更换源。
  2. 安装python3.7(先查看python3版本,如果是3.6及以上就不用换)
    查看python3版本:python3 --version
1)下载:wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tgz	
2)解压:tar zxvf Python-3.7.1rc2.tgz
3)cd Python-3.7.1rc2
4)编译:
./configure
make
make install
5)删除软链接(可能自带的是python3.5)
sudo rm -r /usr/bin/python3
sudo rm -r /usr/bin/pip3
6)添加软链接
ln -s /usr/local/bin/python3.7 /usr/bin/python3
ln -s /usr/local/bin/pip3.7 /usr/bin/pip3
  1. 传送门:安装ros kinetic
    问题一:rosdep init问题
    PS:解决不了,最后rosdep init和rosdep update不搞也行,反正能用

3.1.2 for ubuntu18.04

啥都不用做。	

3.2 D435i驱动和ROS包安装

3.2.1 驱动安装

1.1 参考教程
官网安装教程

  1. 获取源码
git clone https://github.com/IntelRealSense/librealsense.git
  1. 安装依赖
sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev
sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev at
  1. Run Intel Realsense permissions script from librealsense root directory:
cd librealsense
./scripts/setup_udev_rules.sh
  1. Build and apply patched kernel modules for:
./scripts/patch-realsense-ubuntu-lts.sh

ps:这一步要很长时间

  1. TM1-specific:
echo 'hid_sensor_custom' | sudo tee -a /etc/modules
  1. 编译
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j8
  1. 安装
sudo make install

1.2 测试

realsense-viewer

3.2.2 ros包安装

[官方github] https://github.com/IntelRealSense/realsense-ros

参考一参考二

安装完成后修改lauch文件:

cd ~/catkin_ws/src/realsense-ros/realsense2_camera/launch
sudo gedit rs_camera.launch

修改以下内容

  <arg name="enable_gyro"         default="true"/>
  <arg name="enable_accel"        default="true"/>
  <arg name="enable_sync"         default="false"/>
  <arg name="unite_imu_method"    default="linear_interpolation"/>

PS:unite_imu_method的值为linear_interpolation(插值),copy(复制); enable_sync是同步IMU和图像时间戳,但是后面新的版本好像已经做了,值给false就可以。实际可以分别监听测试。
参数说明

3.3 Kalibr工具安装

官方WIKI,不要用IDE方式安装)

  1. 安装依赖:

for ubuntu16.04

sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-kinetic-vision-opencv ros-kinetic-image-transport-plugins ros-kinetic-cmake-modules python-software-properties software-properties-common libpoco-dev python-matplotlib python-scipy python-git python-pip ipython libtbb-dev libblas-dev liblapack-dev python-catkin-tools libv4l-dev

for ubuntu18.04

sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev  doxygen libopencv-dev ros-melodic-vision-opencv ros-melodic-image-transport-plugins ros-melodic-cmake-modules  software-properties-common libpoco-dev python-matplotlib python-scipy python-git python-pip ipython libtbb-dev libblas-dev liblapack-dev python-catkin-tools libv4l-dev python-pyx

注:libboost-all-dev这个先不装吧,因为安装ros会自动装,如果再装可能后面会出问题
2. 安装python-igraph

sudo apt-get install -y libigraph0-dev
sudo pip install python-igraph

问题:可能会安装错误,原因是版本太新,而python2太老。
解决办法:使用老版本的,具体大家上python官网查看版本。

sudo pip install python-igraph==0.7.0
  1. 创建工作空间(单独建一个工作空间,因为这个是python编译的):

for ubuntu16.04

mkdir -p ~/kalibr_workspace/src
cd ~/kalibr_workspace
source /opt/ros/kinetic/setup.bash
catkin init
catkin config --extend /opt/ros/kinetic
catkin config --merge-devel # Necessary for catkin_tools >= 0.4.
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

for ubuntu18.04

mkdir -p ~/kalibr_workspace/src
cd ~/kalibr_workspace
  1. 下载源码:
cd ~/kalibr_workspace/src
git clone https://github.com/ethz-asl/Kalibr.git
  1. 编译(可以去接杯茶喝了):

for ubuntu16.04

cd ~/kalibr_workspace
catkin build -DCMAKE_BUILD_TYPE=Release -j4

for ubuntu18.04

catkin_make -DCMAKE_BUILD_TYPE=Release

问题:

无法验证 faculty.cse.tamu.edu 的由 “CN=InCommon RSA Server CA,OU=InCommon,O=Internet2,L=Ann Arbor,ST=MI,C=US” 颁发的证书:   无法本地校验颁发者的权限
recipe for target 'Kalibr/suitesparse/suitesparse_src-prefix/src/suitesparse_src-stamp/suitesparse_src-download' failed

原因:suitesparse没办法在这个链接下了
解决办法:更改kalibr/suitesparse下的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"
  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 
)
  1. 添加环境变量
echo "source ~/kalibr_workspace/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
  1. 生成标定板子
kalibr_create_target_pdf --type checkerboard --nx 5 --ny 8 --csx 0.045 --csy --0.045

–type GRIDTYPE表示网格图类型,两种可选apriltag和checkerboard
–nx N_COLS表示x轴方向上的内部角点数,默认为6
–ny N_ROWS表示y轴方向上的内部角点数,默认为7
–csx CHESSSZX表示x轴方向上每个棋盘格的宽度,默认为0.05m
–csy CHESSSZY表示y轴方向上每个棋盘格的宽度,默认为0.05m

  • 12
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nankel Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值