张家港网站设计建设,python做网站快吗,泉州网站制作方案,电子商务型网站LivoxHIKROBOT联合标定——相机内参标定 引言1 海康机器人HIKROBOT SDK二次开发并封装ROS1.1 介绍1.2 安装MVS SDK1.3 封装ROS packge 2 览沃Livox SDK二次开发并封装ROS3 相机雷达联合标定——相机内参标定3.1 环境配置3.1.1 安装依赖——PCL 安装3.1.2 安装依赖——Eigen 安装… LivoxHIKROBOT联合标定——相机内参标定 引言1 海康机器人HIKROBOT SDK二次开发并封装ROS1.1 介绍1.2 安装MVS SDK1.3 封装ROS packge 2 览沃Livox SDK二次开发并封装ROS3 相机雷达联合标定——相机内参标定3.1 环境配置3.1.1 安装依赖——PCL 安装3.1.2 安装依赖——Eigen 安装3.1.3 安装依赖——Ceres-solver 安装3.1.4 下载源码编译准备3.1.5 程序节点概括 3.2 相机内参标定3.2.1 前期准备3.2.2 cameraCalib标定**报错** 若无报错则跳过此步骤 引言
Livox Lidar HIKROBOT Camera 联合标定 参考链接相机雷达标定文档 安装ROS环境参考笔者的博客【ROS】Ubuntu18.04安装Ros
1 海康机器人HIKROBOT SDK二次开发并封装ROS
1.1 介绍
参考链接海康Camera MVS Linux SDK二次开发封装ROS packge过程记录c
海康的相机没有ros驱动且对linux开发不太友好但支持windows因此需要重写了sdk接口并创建了ros节点封装成ros包方便linux环境下ros的调用 完整版ros驱动https://github.com/luckyluckydadada/HIKROBOT-MVS-ROS-package
即使海康的相机是usb传输数据但是不同于其他usb设备的调用海康的相机并不会在/dev/目录下映射ttyUSB或video1这样的设备所以不能用open/read/write这样的system call的方式打开设备所以https://github.com/ros-drivers/usb_cam这样的usb ros驱动无法支持。因此只能自己开发ros驱动包。海康的打开设备的方式在MvUsb3VDevice.h和MvGigEDevice.h中实现分别对应usb3.0相机和以太网相机具体过程并没有开源只提供了相应的so文件海康提供了统一的接口MV_CC_EnumDevices实现对两种设备usb3.0接口和以太网接口的调用因此开发一个ros驱动包是两种相机都适用的。海康的相机sdk虽然不开源但是提供了armhf和aarch64架构编译的so文件。
1.2 安装MVS SDK
参考笔者的博客 【HIKROBOT】海康机器人工业相机SDK二次开发
1.3 封装ROS packge
海康威视工业相机sdk的ros驱动包的安装步骤
step1安装
# 创建catkin工作空间
mkdir ws_hk_mvs_ros
# 克隆源码到工作空间海康机器人的ROS软件包
git clone https://github.com/luckyluckydadada/HIKROBOT-MVS-ROS-package.git ws_hk_mvs_ros/src
cd ws_hk_mvs_ros
# 编译Catkin工作空间中的ROS包
catkin_makestep2直接运行node 需要先启动roscore
source ./devel/setup.bash
rosrun hk_camera hk_camera_nodestep3launch启动node
source ./devel/setup.bash
roslaunch hk_camera hk_camera.launchstep4launch启动node和rviz node 用 rviz 订阅 /hk_camera_node/image_raw 查看照片
source ./devel/setup.bash
roslaunch hk_camera hk_camera_rviz.launch2 览沃Livox SDK二次开发并封装ROS
参考笔者博客【Ubuntu18.04】Livox Tele-15使用教程 安装Livox环境和驱动
# 安装Livox_SDK
git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
cd build cmake ..
make
sudo make install# 安装livox_ros_driver
cd Livox-SDK # 进入Livox-SDK目录
git clone https://github.com/Livox-SDK/livox_ros_driver.git ws_livox/src
cd ws_livox # 进入工作空间
catkin_make3 相机雷达联合标定——相机内参标定
3.1 环境配置
3.1.1 安装依赖——PCL 安装
参考链接Ubuntu18.04安装PCL 1.9.1(图文详解附踩坑和测试)
step1安装依赖
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-jrestep2下载源码 建议安装1.9.1
git clone https://github.com/PointCloudLibrary/pcl.gitstep3编译源码
cd pcl
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPENone -DCMAKE_INSTALL_PREFIX/usr \ -DBUILD_GPUON-DBUILD_appsON -DBUILD_examplesON \ -DCMAKE_INSTALL_PREFIX/usr ..makestep4安装
sudo make installstep5PCLVisualizer(需要可以安装)
sudo apt-get install libopenni-dev
sudo apt-get install libopenni2-dev3.1.2 安装依赖——Eigen 安装
简单命令安装
sudo apt-get install libeigen3-dev3.1.3 安装依赖——Ceres-solver 安装
下载ceres-solver-1.14.0
git clone https://github.com/ceres-solver/ceres-solver依赖安装 sudo apt-get install cmakesudo apt-get install libgoogle-glog-devsudo apt-get install libatlas-base-devsudo apt-get install libeigen3-devsudo apt-get install libsuitesparse-devsudo add-apt-repository ppa:bzindovic/suitesparse-bugfix-1319687sudo apt-get updatesudo 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 -j3
make install至此需要的库安装完毕
3.1.4 下载源码编译准备
# 进入工作空间
cd ws_livox/src
git clone https://github.com/Livox-SDK/livox_camera_lidar_calibration.git
cd .. # 返回上一级目录
catkin_make
source devel/setup.bash此时工作空间的目录结构为 3.1.5 程序节点概括
此项目包括如下节点:
cameraCalib - 标定相机内参pcdTransfer - 将雷达点云rosbag转换成PCD文件cornerPhoto -获得照片角点getExt1 - 计算外参节点只优化外参getExt2 - 计算外参节点同时优化内参和外参projectCloud - 把雷达点云投影到照片上 colorLidar - 雷达点云着色
以下程序节点中如果想修改launch文件需要到src/calibration/launch文件夹中找对应的launch文件。
3.2 相机内参标定
3.2.1 前期准备
准备一块有黑白棋盘格的标定板(如下所示可以打印出来) 笔者实际用的标定版规格是 3.2.2 cameraCalib标定
要准备20张以上的照片数据各个角度和位置都要覆盖拍摄的时候不要距离太近(3米左右)如下图所示。
采集棋盘格图像
方法1直接使用HIKROBOT的上位机来抓取并保存图片
选择指定的保存路径 抓取图片
方法2使用 ROS可视化工具rqt_image_view查看并保存图片
终端1启动相机的ROS驱动以HIKROBOT为例
# 进入工作空间
source devel/setup.bash # 加载环境
# roslaunch [软件包] 启动文件.launch
roslaunch hk_camera hk_camera.launch终端2保存好标定要用的图片
# 加载环境
source devel/setup.bash
# 打开相机画面
rqt_image_view说明 笔者以下数据使用官网下载的数据集来测试
测试数据下载data.zip 获得照片数据后配置cameraCalib.launch中对应的路径和参数默认是把照片数据放在data/camera/photos下然后在data/camera/in.txt中写入所有需要使用的照片名称如下图所示 输入指令开始标定
#进入工作空间
cd ws_livox/
source devel/setup.bash
roslaunch camera_lidar_calibration cameraCalib.launch成功运行显示如下 标定结果中会保存在data/camera/result.txt中包括重投影误差内参矩阵和畸变纠正参数。
内参结果
一个3x3的内参矩阵(IntrinsicMatrix)个畸变纠正参数 k1, k2, p1, p2, k3
报错 若无报错则跳过此步骤 解决方法
参考链接 解决 cv_bridge 与 opencv4 版本冲突问题
下载 cv_bridge
下载 noetic 版本的 cv_bridge。noetic 版本的 cv_bridge 在 melodic 下也能使用不过要做一些修改后续会说明 下载地址https://github.com/ros-perception/vision_opencv/tree/noetic 下载完成后将 cv_bridge 拷贝到 ros 工作空间的 src 文件夹下。 此时工作空间的目录结构为 为了不影响原来的包将该文件夹重命名为 cv_bridge_new并且将cv_bridge_new文件夹下 CMakeLists.txt 文件中 project 名称修改为 cv_bridge_new 在 CMakeLists.txt 文件中指定我们自己的功能包中所用的 opencv4 并且修改 package.xml 中包的名称 报错1 解决方法
直接修改 cv_bridge_new的CMakeLists.txt 文件
...
if(PYTHONLIBS_VERSION_STRING VERSION_LESS 3.8)
# Debian Buster
find_package(Boost REQUIRED python3)
...报错2 解决方法
修改 cv_bridge_new/src/module.hpp 文件下 void* do_numpy_import()函数为 注意*要删除
static void do_numpy_import( )
{import_array( );
}再次编译
catkin_make再次输入指令开始标定
#进入工作空间
cd ws_livox/
source devel/setup.bash
roslaunch camera_lidar_calibration cameraCalib.launch