相机和激光雷达的联合标定方法

目录:

1、ros的安装

1.1 配置Ubuntu软件仓库

1.2 设置sources.list

1.3 设置密钥

1.4 安装

1.5 设置环境

1.6 初始化rosdep

1.7 安装依赖

2、autoware标定工具的安装

2.1 安装nlopt

2.2 安装标定工具箱

2.3 编译报错://home/hyellice/anaconda3/lib/libfontconfig.so.1:对‘FT_Done_MM_Var’未定义的引用

2.4 运行rosrun calibration_camera_lidar calibration_toolkit报错

2.5 打开标定工具

3、标定工具的使用

3.1 录制ros数据包

3.2 使用安装的工具进行相机与雷达的联合标定

3.3 Calibration Tool Kit操作键

使用的系统为Ubuntu 18.04, ROS版本为melodic

1、ros的安装

参考ros wiki安装教程

1.1 配置Ubuntu软件仓库

配置你的Ubuntu软件仓库(repositories)以允许使用“restricted”“universe”和“multiverse”存储库。你可以根据Ubuntu软件仓库指南来完成这项工 作。

打开软件和更新,设置成如下图所示:

相机和激光雷达的联合标定方法_第1张图片

1.2 设置sources.list

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

1.3 设置密钥

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

1.4 安装

sudo apt install ros-melodic-desktop-full

1.5 设置环境

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

1.6 初始化rosdep

# install rosdep
sudo apt install python-rosdep
​
# initialize rosdep
sudo rosdep init
rosdep update

若运行报错:ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down. 

解决方法一:(使用代理)

本方法需要有代理

sudo apt install proxychains4
​
# 查看配置文件所在的路径
proxychains4 printenv | grep PROXYCHAINS_CONF_FILE
​
# 根据上一步查找到的路径,打开配置文件,将最后一行修改为(192.168.233.33换成你自己的代理ip,8123换成你自己的端口号)
http 192.168.233.33 8123
​

解决方法二:

出现这个问题的可能原因是raw.githubusercontent.com被墙了

修改hosts文件,添加这个网站的ip地址

#打开hosts文件
sudo gedit /etc/hosts
#在文件末尾添加
151.101.84.133  raw.githubusercontent.com
#或者 151.101.76.133  raw.githubusercontent.com
#保存后退出再尝试

其它也许可行的方法可参考这里

1.7 安装依赖

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

2、autoware标定工具的安装

ubuntu 18.04 autoware 1.14 安装calibration_camera_lidar

参考教程:http://www.cxyzjd.com/article/qq_43509129/109327157

标定工具ros包:https://github.com/XidianLemon/calibration_camera_lidar

默认已经安装好melodic版ROS,若没有则可参考ros wiki安装

2.1 安装nlopt

参考:https://github.com/stevengj/nlopt

安装方法:

git clone https://github.com/stevengj/nlopt.git
cd nlopt
mkdir build
cd build
cmake ..
make
sudo make install

2.2 安装标定工具箱

1)下载源码

cd path/to/catkin_ws/src
git clone https://github.com/XidianLemon/calibration_camera_lidar.git
or git clone https://github.com/huangbinz/calibration_camera_lidar.git

2)由于该工具默认不支持melodic版ros,所以需要对calibration_camera_lidar/ls_calibration/calibration_camera_lidar功能包下的CMakeLists.txt进行修改,把所有的

if ("${ROS_VERSION}" MATCHES "(indigo|jade|kinetic)")

改成

if ("${ROS_VERSION}" MATCHES "(indigo|jade|kinetic|melodic)")

3)由于我电脑上有多个opencv版本,默认会使用4.5.1版本,使用该版本编译一直会报opencv的错,所以将opencv的版本指定为3.2.0版本就好了

打开calibration_camera_lidar/ls_calibration/calibration_camera_lidar功能包下的CMakeLists.txt文件,将

find_package(OpenCV REQUIRED)

改成

find_package(OpenCV 3.2.0 REQUIRED)

可使用以下代码查看catkin_make默认使用的opencv的版本:

#include "opencv2/opencv.hpp"

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
  cout << "OpenCV version : " << CV_VERSION << endl;
  cout << "Major version : " << CV_MAJOR_VERSION << endl;
  cout << "Minor version : " << CV_MINOR_VERSION << endl;
  cout << "Subminor version : " << CV_SUBMINOR_VERSION << endl;

  if ( CV_MAJOR_VERSION < 3)
  {
      // Old OpenCV 2 code goes here. 
  } else
  {
      // New OpenCV 3 code goes here. 
  }
}
# 新建rospkg
catkin_create_pkg check_opencv roscpp std_msgs
# 将上述代码复制到check_opencv/src/check_opencv.cpp中
# 在CMakeLists.txt中添加
find_package(OpenCV REQUIRED) 
add_executable(check_opencv src/main.cpp)  
target_link_libraries(check_opencv ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})
# 运行
rosrun check_opencv check_opencv

4)之后就可以像编译ros包一样编译该工具包了:

cd path/to/catkin_ws
catkin_make

2.3 编译报错://home/hyellice/anaconda3/lib/libfontconfig.so.1:对‘FT_Done_MM_Var’未定义的引用

参考:Err:undefined symbol:FT_Done_MM_Var 及 .so 文件替换方法_cutest piggy 的博客-CSDN博客

cd path/to/anaconda3/lib
rm libfontconfig.so.1
sudo cp /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 libfontconfig.so.1

若还有类似的报错,则处理方法同上

2.4 运行rosrun calibration_camera_lidar calibration_toolkit报错

/home/hyellice/catkin_ws/devel/lib/calibration_camera_lidar/calibration_toolkit: error while loading shared libraries: libnlopt.so.0: cannot open shared object file: No such file or directory

这是链接的问题,解决办法如下:

cd /etc/ld.so.conf.d
sudo touch libnlopt.conf
sudo gedit libnlopt.conf 

在libnlopt.conf 文件中添加内容:/usr/local/lib,保存退出,然后时配置生效:

suod ldconfig

2.5 打开标定工具

终端运行

roscore

另起一终端,运行

source ~/catin_ws/devel/setup.bash
rosrun calibration_camera_lidar calibration_toolkit

3、标定工具的使用

标定工具的具体使用方法参考:这里和这里

3.1 录制ros数据包

# 启动ros
roscore

# 另起一终端,启动雷达节点(以雷神16线雷达为例)
roslaunch lslidar_c16_decoder lslidar_c16_v2.launch --screen

# 再起一终端,启动相机节点(需根据自己的相机修改相应命令,此处只为示例)
rosrun learning_image_transport my_publisher 0

# 再起一终端,启动rviz,并配置好
rviz

# 再起一终端,录制数据包(后面的话题名根据自己的进行修改)
rosbag record -O path/to/save/demo.bag /lslidar_point_cloud /camera/image

3.2 使用安装的工具进行相机与雷达的联合标定

1)启动ros

roscore

2)另起一终端,播放录制好的bag数据

rosbag play path/to/demo.bag /lslidar_poing_cloud:=/points_raw

/lslidar_poing_cloud为你的雷达的话题名

加载成功后,立马空格暂停

3)另起一终端,启动标定工具

rosrun calibration_camera_lidar calibration_toolkit

启动之后,在第一个出现的框 Select Input Image Topic 中选定你的相机话题名,一般默认是选中的

在第二个出现的框 Calibration Type 中选择 Camera -> Velodyne

4)打开标定工具后,设置参数

在Pattern Size(m)的两个框中分别输入棋盘的边长,单位米,在Pattern Number中分别输入棋盘个的角点数

设置好后,关闭Calibration Tool Kit,重启以加载配置

5)页面介绍

调整页面大小。页面有4个显示框,上面两个为数据播放时的图像和雷达显示框,下面两个为Grab(具体见下一介绍)后捕获到的图像和雷达图显示。当启 动了该界面后,首先应该左击选中雷达播放框,按b调整画面的背景色(默认是黑色的,将其调成浅色的,会更好),其次按一下下箭头,使雷达图能正常的显 示出来。效果如下所示:

相机和激光雷达的联合标定方法_第2张图片

6)加载数据进行标定

回到播放ros包数据的终端,安空格开始播放数据,当视频和点云都出现为一个较好的位置时,空格暂停,然后点击右上角的Grab,下方会出现捕获到的图像 和点云,注意图像应该正确的识别了棋盘格(即在图像上有画线),在右下角的点云图中,找到棋盘格并左击,若点错了,可右击取消,至此,一帧就已经标定 好了。继续播放数据,重复上述步骤,直到数据播放结束(可多选择一些帧标定使标定结果更准确)

7)数据标定完成后,点击右上角的Calibration按钮,进行联合标定计算相机的内参和外参

8)验证标定的结果

点击右上角的Project按钮,将联合标定的点云投影到相机图像中,在左下角的图像区查看结果,若激光点均落在标定版上,则标定结果较好

9)保存标定结果

左上角的Save按钮,保存标定结果。

在弹出的Save LIDAR Calibration Data?Save Camera Calibration Data?框都选No,不保存标定的图像和点云

3.3 Calibration Tool Kit操作键

参考:CalibrationToolkit Manual

1)选中雷达播放画面(右上角),按b可调整雷达图的背景色;

2)选中(右击)雷达捕获画面(右下角),安n可调整雷达图的颜色;

3)旋转:a,d,w,s,q,e;

4)平移:上箭头,下箭头,左箭头,右箭头,PgUp,PgDn;

5)雷达图点大小:o小,p大;

你可能感兴趣的:(ubuntu,linux,运维)