上一次将kinect v2进行配置后,可以正常使用kinect v2.
其实在
roslaunch kinect2_bridge kinect2_bridge.launch
会报错,主要是由于他内部默认的gpu,cpu,opencl等配置问题。
在该网站
https://github.com/code-iai/iai_kinect2后面也涉及到了gpu/opencl的安装问题,这次干脆一次性安装完成。
OpenCL/CUDA with Nvidia
1 首先根据要求安装对应版本的cuda 10.0:
https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=deblocal
我选择的是 deb(local),下载完成后该文件夹下在终端中打开:
sudo dpkg -i cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64.deb sudo apt-key add /var/cuda-repo-/7fa2af80.pub //将 转换成自己的版本,可按tab补齐 sudo apt-get update sudo apt-get install cuda
等待后终端最后几行结果,表示完成:
正在处理用于 ca-certificates (20210119~16.04.1) 的触发器 ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. done.
2 回到github继续之前的安装
sudo apt-get install nvidia-modprobe opencl-headers
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:${LD_LIBRARY_PATH}"
export PATH="/usr/local/cuda/bin:${PATH}"
echo "/usr/local/cuda/lib64" | sudo tee /etc/ld.so.conf.d/cuda.conf
sudo ldconfig
到这里终端没有任何报错,OpenCL/CUDA with Nvidia安装应该是完成了。
下面还有一个OpenCL with Intel,暂时先不装。
3 正式开始内参标定
在之前的kinect驱动配置时,由于iai_kinect2包安装时没有安装cuda相关内容,导致启动有关命令时报错:
rosrun kinect2_bridge kinect2_bridge _fps_limit:=2
[ERROR] [DepthRegistrationOpenCL::init] [depth_registration_opencl.cpp](216) data->program.build(options.c_str()) failed: -11 [ERROR] [DepthRegistrationOpenCL::init] failed to build program: -11 [ERROR] [DepthRegistrationOpenCL::init] Build Status: -1 [ERROR] [DepthRegistrationOpenCL::init] Build Options: [ERROR] [DepthRegistrationOpenCL::init] Build Log:
在经过上述正确安装后可进行内参标定,其实也可以直接修改默认的启动项,将gpu改为cpu。
下面为详细的内参标定步骤:
新建终端,启动roscore。
新建终端,到相关工作空间下:
rosrun kinect2_bridge kinect2_bridge _fps_limit:=2 //新建一个文件夹用于存放数据 mkdir ~/kinect_cal_data cd ~/kinect_cal_data rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record color //按空格键进行图片保存,我保存了近20多张,下面步骤同理。 rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate color //开始进行计算 rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record ir rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate ir rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record sync //这里必须两个摄像界面都出现标定信息 rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate sync rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate depth roslaunch kinect2_bridge kinect2_bridge.launch //通过终端输出信息找出自己的device serial,例如 012526541941 roscd kinect2_bridge/data mkdir 012526541941 //这里应当是自己的序列号 将kinect_cal_data文件夹下的:calib_color.yaml calib_depth.yaml calib_ir.yaml calib_pose.yaml拷贝到上面新建的文件夹下。 重新启动roslaunch 相关文件,查看效果。
github链接:
https://github.com/code-iai/iai_kinect2/tree/master/kinect2_calibration



