Xtion深度相机驱动安装+相机标定

Ubuntu18.04安装华硕ASUS Xtion驱动

1.安装相关Xtion驱动
 

sudo apt-get install ros-melodic-rgbd-launch ros-melodic-openni2-camera ros-melodic-openni2-launch

2.安装可视化交互插件qrt

sudo apt-get install ros-melodic-rqt ros-melodic-rqt-common-plugins ros-melodic-rqt-robot-plugins

 3.相关软件包更新

sudo apt-get update
sudo apt-get dist-upgrade

4.测试

roscore
roslaunch openni2_launch openni2.launch
rqt_image_view或rosrun rviz rviz
//tips:需要看深度消息将话题名称切换即可

Ubuntu16.04安装华硕ASUS Xtion驱动并简单使用

rostopic list:

/camera/depth/points: point cloud without color information
/camera/depth_registered/points: xyzrgb point cloud (Currently, RGB-D regestration supports default resolution only)
————————————————
 

/camera/depth/image_raw是深度图像
/camera/depth_registered/image_raw是和彩色图像配准之后的深度图像
/camera/ir/image_raw是红外图像
/camera/rgb/image_raw是彩色图像

rosrun camera_calibration cameracalibrator.py --size 8x5 --square 0.027 image:=/camera`/rgb/image_raw camera:=/camera/rgb

说明:

  • size:棋盘内部角点个数。size是方格几列几行(需要减1), 比如我是9*6,则是8*5
  • square:棋盘格的单元格的边长,单位为m(我是27*27mm)
  • image:图像的话题路径
  • camera:选择图像类型

标定的结果到什么程度算是合格,最好的情况是【X】、【Y】、【Size】、【Skew】下面的线条变为绿色后就成功了。当认为当前标定图像的数目已经够了,(六七十张就差不多了,太多容易卡死),点击【CALIBRATE】计算相机内参。计算完内参后,接着点击save 和 commit进行保存。

点save后,终端会显示('Wrote calibration data to', '/tmp/calibrationdata.tar.gz')。
标定结束后,标定结果存在【/tmp/calibrationdata.tar.gz】,可以移动出来看看内容。里面存放的是标定的图片和求得参数的txt文件和yaml文件。

如果对标定结果满意,点击Save将结果保存到默认文件夹,点击COMMIT,数据会自动导入下次启动相机驱动节点时,会自动调用保存的.yaml。

 各标定参数的意义:
image_width、image_height代表图片的长宽
camera_name为摄像头名
camera_matrix规定了摄像头的内部参数矩阵
distortion_model指定了畸变模型
distortion_coefficients指定畸变模型的系数
rectification_matrix为矫正矩阵,一般为单位阵
projection_matrix为外部世界坐标到像平面的投影矩阵

使用camera_calibration_parsers可以进行标定文件格式转换。

[ERROR] [1700296472.007190511]: "ar_marker_6" passed to lookupTransform argument target_frame does not exist.

cam_image_topic是什么

rosrun camera_calibration cameracalibrator.py --size 8x5 --square 0.027 image:=/camera/depth/image_raw camera:=/camera/depth --no-service-check
<launch>
	<arg name="marker_size" default="10.0" />
	<arg name="max_new_marker_error" default="0.08" />
	<arg name="max_track_error" default="0.2" />

	<arg name="cam_image_topic" default="/kinect2/qhd/image_color" />
	<arg name="cam_info_topic" default="/kinect2/qhd/camera_info" />
	<arg name="output_frame" default="/kinect2_link" />

	<node name="ar_track_alvar" pkg="ar_track_alvar" type="individualMarkersNoKinect" respawn="false" output="screen">
		<param name="marker_size"           type="double" value="$(arg marker_size)" />
		<param name="max_new_marker_error"  type="double" value="$(arg max_new_marker_error)" />
		<param name="max_track_error"       type="double" value="$(arg max_track_error)" />
		<param name="output_frame"          type="string" value="$(arg output_frame)" />

		<remap from="camera_image"  to="$(arg cam_image_topic)" />
		<remap from="camera_info"   to="$(arg cam_info_topic)" />
	</node>
</launch>
<arg> 元素:定义了一些参数,它们可以在运行launch文件时被用户指定。在这个文件中,参数包括 marker_size(标记的大小),max_new_marker_error(新标记的最大误差),max_track_error(最大跟踪误差),cam_image_topic(相机图像的ROS话题),cam_info_topic(相机信息的ROS话题),以及 output_frame(输出的坐标系帧名)。

<node> 元素:启动一个ROS节点。这个节点的名称是 ar_track_alvar,它属于 ar_track_alvar 软件包。节点类型是 individualMarkersNoKinect,这是 ar_track_alvar 软件包中用于检测和跟踪ArUco标记的节点。

在 <param> 元素中,一些参数被设置为在 <arg> 元素中定义的参数的值。这些参数包括 marker_size、max_new_marker_error、max_track_error 和 output_frame。

在 <remap> 元素中,相机图像和相机信息的ROS话题被重映射到 <arg> 元素中定义的对应参数的值,分别是 cam_image_topic 和 cam_info_topic。

最后,respawn="false" 表示如果节点非正常退出,不会自动重启节点。output="screen" 表示节点的输出将被打印到屏幕上。

猜你喜欢

转载自blog.csdn.net/cocapop/article/details/134443760