目录:
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
参考ros wiki安装教程
配置你的Ubuntu软件仓库(repositories)以允许使用“restricted”“universe”和“multiverse”存储库。你可以根据Ubuntu软件仓库指南来完成这项工 作。
打开软件和更新
,设置成如下图所示:
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'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt install ros-melodic-desktop-full
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc
# 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 #保存后退出再尝试
其它也许可行的方法可参考这里
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
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安装
参考:https://github.com/stevengj/nlopt
安装方法:
git clone https://github.com/stevengj/nlopt.git cd nlopt mkdir build cd build cmake .. make sudo make install
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
参考: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
若还有类似的报错,则处理方法同上
/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
终端运行
roscore
另起一终端,运行
source ~/catin_ws/devel/setup.bash rosrun calibration_camera_lidar calibration_toolkit
标定工具的具体使用方法参考:这里和这里
# 启动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
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调整画面的背景色(默认是黑色的,将其调成浅色的,会更好),其次按一下下箭头
,使雷达图能正常的显 示出来。效果如下所示:
6)加载数据进行标定
回到播放ros包数据的终端,安空格开始播放数据,当视频和点云都出现为一个较好的位置时,空格暂停,然后点击右上角的Grab
,下方会出现捕获到的图像 和点云,注意图像应该正确的识别了棋盘格(即在图像上有画线),在右下角的点云图中,找到棋盘格并左击,若点错了,可右击取消,至此,一帧就已经标定 好了。继续播放数据,重复上述步骤,直到数据播放结束(可多选择一些帧标定使标定结果更准确)
7)数据标定完成后,点击右上角的Calibration按钮,进行联合标定计算相机的内参和外参
8)验证标定的结果
点击右上角的Project按钮,将联合标定的点云投影到相机图像中,在左下角的图像区查看结果,若激光点均落在标定版上,则标定结果较好
9)保存标定结果
左上角的Save按钮,保存标定结果。
在弹出的Save LIDAR Calibration Data?
和Save Camera Calibration Data?
框都选No
,不保存标定的图像和点云
参考:CalibrationToolkit Manual
1)选中雷达播放画面(右上角),按b可调整雷达图的背景色;
2)选中(右击)雷达捕获画面(右下角),安n可调整雷达图的颜色;
3)旋转:a,d,w,s,q,e;
4)平移:上箭头,下箭头,左箭头,右箭头,PgUp,PgDn;
5)雷达图点大小:o小,p大;