相机雷达的标定
- 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):
- 设置你的 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’
- 设置你的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 -
- 安装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)
- 环境设置
每次启动新的shell时,如果将ROS环境变量自动添加到bash会话中,将很方便:
echo “source /opt/ros/kinetic/setup.bash” >> ~/.bashrc
source ~/.bashrc
- **安装依稀依赖包 **
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的安装
自己编译源码
- 安装依赖
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
- **下载源码 **
git clone https://github.com/PointCloudLibrary/pcl.git
- **编译源码 **
cd pcl
mkdir build
cd buildcmake -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
- **PCLVisualizer(需要可以安装) **
sudo apt-get install libopenni-dev
sudo apt-get install libopenni2-dev
2.Eigen3
- ** 简单命令安装**
sudo apt-get install libeigen3-dev
3.编译安装Ceres-Solver
- 下载
git clone https://github.com/ceres-solver/ceres-solver/issues
- **依赖安装 **
$ 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
- ** 安装 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 ** 采集照片和点云 **
- 拍摄照片
- 运行指令录制点云
rosbag record /livox/lidar
- 每个位置保存一张照片和10s左右的rosbag即可。
- 数据采集完成后,将照片放在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中内容
- 配置cornerPhoto.launch文件中的照片路径,运行
roslaunch camera_lidar_calibration cornerPhoto.launch
- 程序会在UI中打开对应的照片 [注 5]。在这个UI界面上只要把鼠标移到标定板的各个角上,窗口左下角就会显示对应的坐标数据(此处的UI显示,其实就是直接调用opencv的imshow方法,但是实际测试中imshow方法并不能显示像素数据,因此需要自己写mouseclick事件,显示像素数据)。确定一个顺序,一般从左上角的角点开始,逆时针旋转按顺序记录下四个角点坐标。
参考物的选取,要注意最好是物体表面最好是全黑或全白,避免后面程序计算更精确的float类型坐标时产生干扰。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jDkIQGLF-1603801368276)(livox-camera-calibration.assets/photo.png)]
- 记录完毕后选中显示的图片按任意键,进入坐标输入流程。把记录下的四个坐标”x y”按顺序输入,x和y中间要有空格(比如: “635 487”),输入完成后输入”0 0”即可结束输入流程(如下图例所示)。程序会算出四个更精确的float类型坐标显示出来,并保存在data/corner_photo.txt中。然后按任意键结束整个流程。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yhmgZj9d-1603801368277)(livox-camera-calibration.assets/photo_corner.png)]
- 更改cornerPhoto.launch文件中的照片路径,重复上述流程,直至获得所有照片的角点坐标。
6.6.3 获得雷达点云中的角点坐标
备注:每一次标定数据的时候,获取点云角点坐标之前清除data/corner_photo.txt中内容
- 检查pcdTransfer.launch文件中的rosbag路径,设置rosbag的数量,并将rosbag以0.bag, 1.bag…命名。
- 运行指令将rosbag批量转化成PCD文件,PCD文件默认保存在data/pcdFiles文件夹中
roslaunch camera_lidar_calibration pcdTransfer.launch
- 使用pcl_viewer打开PCD文件,按住shift+左键点击即可获得对应的点坐标。注意和照片采用相同的角点顺序[注 6]。
pcl_viewer -use_point_picking xx.pcd
- 将xyz角点坐标按如下格式保存在data/corner_lidar.txt中,将所有PCD文件中雷达点云的角点坐标保存下来。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3lUnnzJr-1603801368279)(livox-camera-calibration.assets/corner_lidar.png)]
除了pcl_viewer之外也可以根据个人使用习惯使用别的点云可视化程序,能获得角点坐标即可。