相机雷达的标定

  • ros环境的安装
  • 1.PCL的安装
  • 2.Eigen3
  • 3.编译安装Ceres-Solver
  • 4. 安装Licox_SDK和Livox_ros_driver
  • 安装Livox_SDK
  • 安装livox_ros_driver
  • 5. 相机内参标定
  • 6 标定准备和数据采集
  • 6.3..1 参数设置
  • 6.3.2 获得照片中的角点坐标
  • 6.6.3 获得雷达点云中的角点坐标



1.安装ros环境和驱动


2.安装pcl


3.安装Eigen


4.安装Ceres-solver

ros环境的安装

以下是基于ubuntu16.04安装的教程,具体可以参考官网(http://wiki.ros.org/kinetic/Installation/Ubuntu):

  1. 设置你的 sources.list :

sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list’

  1. 设置你的keys

sudo apt-key adv --keyserver ‘hkp://keyserver.ubuntu.com:80’ --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

或者,可以使用curl代替apt-key命令,如果您位于代理服务器后面,则可能会有所帮助:

curl -sSL ‘http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654’ | sudo apt-key add -

  1. 安装install

sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full (安装所有的ros包括 ROS、rviz、rqt…)
sudo apt-get install ros-kinetic-desktop (仅安装部分ros)

  1. 环境设置
    每次启动新的shell时,如果将ROS环境变量自动添加到bash会话中,将很方便:

echo “source /opt/ros/kinetic/setup.bash” >> ~/.bashrc
source ~/.bashrc

  1. **安装依稀依赖包 **

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

rosdep使您能够轻松地为要编译的源安装系统依赖性,并且是运行ROS中某些核心组件所必需的。
安装:

sudo apt install python-rosdep
初始化:
sudo rosdep init
rosdep update

至此基于ubuntu16.04的ros的开发环境安装完成。

1.PCL的安装

自己编译源码

  1. 安装依赖

sudo apt-get update
sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common
sudo apt-get install libflann1.8 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev
sudo apt-get install libqhull* libgtest-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev
sudo apt-get install mono-complete
sudo apt-get install qt-sdk openjdk-8-jdk openjdk-8-jre

  1. **下载源码 **

git clone https://github.com/PointCloudLibrary/pcl.git

  1. **编译源码 **

cd pcl
mkdir build
cd build

cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr
-DBUILD_GPU=ON -DBUILD_apps=ON -DBUILD_examples=ON
-DCMAKE_INSTALL_PREFIX=/usr …

make

安装

sudo make install

  1. **PCLVisualizer(需要可以安装) **

sudo apt-get install libopenni-dev
sudo apt-get install libopenni2-dev

2.Eigen3

  1. ** 简单命令安装**

sudo apt-get install libeigen3-dev

3.编译安装Ceres-Solver

  1. 下载

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

  1. **依赖安装 **

$ sudo apt-get install cmake
$ sudo apt-get install libgoogle-glog-dev
$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install libeigen3-dev
$ sudo apt-get install libsuitesparse-dev
$ sudo add-apt-repository ppa:bzindovic/suitesparse-bugfix-1319687
$ sudo apt-get update
$ sudo apt-get install libsuitesparse-dev

  1. ** 安装 ceres-solver**

tar zxf ceres-solver-1.14.0.tar.gz
mkdir ceres-bin && cd ceres-bin
cmake …/ceres-solver-1.14.0
make -j32
make install

至此需要的库安装完毕

4. 安装Licox_SDK和Livox_ros_driver

安装Livox_SDK

git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
sudo ./third_party/apr/apr_build.sh
cd build && cmake …
make
sudo make install

安装livox_ros_driver

git clone https://github.com/Livox-SDK/livox_ros_driver.git ws_livox/src
cd ws_livox
catkin_make

5. 相机内参标定

(自行百度matlab标定教程)

6 标定准备和数据采集

检查标定板角点是否在点云中,输入点云可视化的命令查看点云
6.1 连接雷达

roslaunch livox_ros_driver livox_lidar_rviz.launch

需要录制rosbag时输入另一个命令

roslaunch livox_ros_driver livox_lidar_msg.launch

注意根据链接 https://github.com/Livox-SDK/livox_ros_driver 确认保存的rosbag数据格式是customMsg,后续程序中处理rosbag是对应的“livox custom msg format”格式。

6.2 ** 采集照片和点云 **

  1. 拍摄照片
  2. 运行指令录制点云
rosbag record /livox/lidar
  1. 每个位置保存一张照片和10s左右的rosbag即可。
  2. 数据采集完成后,将照片放在data/photo文件夹下; 雷达rosbag放在data/lidar文件夹下。

6.3 ** 标定数据获取**

6.3…1 参数设置

首先需要把步骤2得到的内参和畸变纠正参数以下图的格式保存在data/parameters/intrinsic.txt文件下 [注 4]。distortion下面对应5个畸变纠正参数,按顺序是k1和k2 (RadialDistortion),p1和p2 (TangentialDistortion),最后一个是k3,一般默认是0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5eiW43cs-1603801368267)(livox-camera-calibration.assets/intrinsic_format.png)]

6.3.2 获得照片中的角点坐标

备注:每一次标定数据的时候,获取角点坐标之前清除data/corner_photo.txt中内容

  1. 配置cornerPhoto.launch文件中的照片路径,运行
roslaunch camera_lidar_calibration cornerPhoto.launch
  1. 程序会在UI中打开对应的照片 [注 5]。在这个UI界面上只要把鼠标移到标定板的各个角上,窗口左下角就会显示对应的坐标数据(此处的UI显示,其实就是直接调用opencv的imshow方法,但是实际测试中imshow方法并不能显示像素数据,因此需要自己写mouseclick事件,显示像素数据)。确定一个顺序,一般从左上角的角点开始,逆时针旋转按顺序记录下四个角点坐标。

参考物的选取,要注意最好是物体表面最好是全黑或全白,避免后面程序计算更精确的float类型坐标时产生干扰。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jDkIQGLF-1603801368276)(livox-camera-calibration.assets/photo.png)]

  1. 记录完毕后选中显示的图片按任意键,进入坐标输入流程。把记录下的四个坐标”x y”按顺序输入,x和y中间要有空格(比如: “635 487”),输入完成后输入”0 0”即可结束输入流程(如下图例所示)。程序会算出四个更精确的float类型坐标显示出来,并保存在data/corner_photo.txt中。然后按任意键结束整个流程。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yhmgZj9d-1603801368277)(livox-camera-calibration.assets/photo_corner.png)]

  1. 更改cornerPhoto.launch文件中的照片路径,重复上述流程,直至获得所有照片的角点坐标。
6.6.3 获得雷达点云中的角点坐标

备注:每一次标定数据的时候,获取点云角点坐标之前清除data/corner_photo.txt中内容

  1. 检查pcdTransfer.launch文件中的rosbag路径,设置rosbag的数量,并将rosbag以0.bag, 1.bag…命名。
  2. 运行指令将rosbag批量转化成PCD文件,PCD文件默认保存在data/pcdFiles文件夹中
roslaunch camera_lidar_calibration pcdTransfer.launch
  1. 使用pcl_viewer打开PCD文件,按住shift+左键点击即可获得对应的点坐标。注意和照片采用相同的角点顺序[注 6]。
pcl_viewer -use_point_picking xx.pcd
  1. 将xyz角点坐标按如下格式保存在data/corner_lidar.txt中,将所有PCD文件中雷达点云的角点坐标保存下来。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3lUnnzJr-1603801368279)(livox-camera-calibration.assets/corner_lidar.png)]

除了pcl_viewer之外也可以根据个人使用习惯使用别的点云可视化程序,能获得角点坐标即可。