1, 启动已经进行单目标定后的相机。
$ roslaunch usb_cam usb_cam-test.launch
检查相机是否是自己需要的相机, 在该路径下的launch文件,修改相关配置
/opt/ros/noetic/share/usb_cam/launch
2,启动livox激光雷达。注意提前检查网络是否接上,并且在同一个网段
注意自己下载的livox的ros包是否是跟随系统时间戳的,还是说自己本身的时间戳
https://github.com/ziv-lin/livox_ros_driver_for_R2LIVE
github: https://github.com/Livox-SDK/Livox-SDK
编译通过后运行
$ roslaunch livox_ros_driver livox_lidar_rviz.launch
调整好相机和雷达对上的位置,朝向。
3,录制bag包,然后运行bag包检查数据对不对,这里只需要录制指定的话题即可
$ rosbag record /livox/lidar /usb_cam/image_raw,这里用的USB相机
播放bag包,然后保存rqt_image_view
保存好标定用的图片。bag包录久一点,大概录个2分钟左右 ,修改bag包名字。
4 关闭相机驱动,将rosbag转换成pcd文件
标定源文件↑
roslaunch livox_camera_calib bag_to_pcd.launch
修改launch文件内bag包的路径,以及获取和转换成pcd文件的路径,
修改标定配置yaml文件。
/home/xianh/workspace/catkin_ws/src/livox_camera_calib/config/<这里自己找一个文件>.yaml
修改其中单目相机已经标定好的内参矩阵,畸变系数,修改一下image pcd文件的路径。
单目相机的标定可以参考ROS下采用camera_calibration进行单目相机标定_Amelie_xiao的博客-CSDN博客
其中标定板不应该选择形变较大的软纸,标定的效果会有较大影响。
检查对应的yaml文件话题是否是我们发布的话题。
修改launch文件,以便调用我们配置好的yaml文件。
运行标定的launch文件。
$ roslaunch livox_camera_calib calib_test.launch
开始标定,有点慢,要等一下,然后会自动跳出很多个窗口。
标定完成后会生成extrinsic.txt文件
结果:
5. 把标定好的数据通过R3LIVE运行起来。
R3Live的具体环境搭建参考了R3LIVE(升级R2LIVE):编译与运行_代码多少钱一两的博客-CSDN博客
但是那个PCL的库安装比较困难,所以直接安装libpcl,发现也能够运行。
搭建了如下环境:
sudo apt-get install libcgal-dev pcl-tools
sudo apt-get install libeigen3-dev
2.7 安装Ceres
官网下载链接:https://github.com/ceres-solver/ceres-solver
安装依赖:
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
cd ceres-solver
mkdir build
cd build
cmake ..
make
sudo make install
pkg-config --modversion opencv 《查看OpenCV版本,大于3.3》
安装R3live
mkdir -p r3live_ws/src
cd r3live_ws/src
git clone https://github.com/hku-mars/r3live.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash
前面标定得出的extrin 矩阵求逆。
把求得的逆放入如下路径的文件里。
左上角3X3放在 camera_ext_R,第四列1X4的前三行放在camera_ext_t。注意修改相机内参,以及畸变参数。
修改launch文件,并启动launch文件。
运行成功,建图有延时。
建图运行成功。