Lesson 13: 视觉系统-Xtion+Openni

机器视觉目前一般采用深度相机,双目相机等解决方案,但目前较为成熟的是采用深度相机的解决方案。深度相机目前比较流行的有:

  • 微软 Kinect
  • 英特尔 RealSense
  • 华硕 Xtion pro live

在Diego 1#中我们采用了华硕的Xtion作为视觉硬件解决方案,其主要原因是Xtion使用的USB2.0接口,另外两款产品都是USB3.0接口,而树莓派只支持USB2.0的接口;另外Xtion相对体积也比较小巧,不需要额外的电源供电。

软件包我们使用openni,openni是一个开源的3D机器视觉开源库,其提供了方便的而且强大的API接口,而且很重要的是支持Xtion pro,在linux可用通过openni来驱动Xtion 深度摄像头。

1.安装OpenNI

1.1安装OpenNI包

sudo apt-get install ros-kinetic-openni-camera
sudo apt-get install ros-kinetic-openni-launch

1.2.安装Xtion的驱动

sudo apt-get install libopenni-sensor-primesense0

1.3.启动openni节点

roslaunch openni_launch openni.launch

启动成功后终端应该显示如下信息

2.将Openni的点云数据转换为激光数据

Openni可用产生3D的点云数据,同时我们也可以将3D点云数据转换为2D激光数据,可以代替激光雷达。数据的转换我们要使用到pointcloud_to_laserscan(https://github.com/ros-perception/pointcloud_to_laserscan)这个包。

2.1.安装pointcloud_to_laserscan

克隆到~/catkin_ws/src目录下

cd ~/catkin_ws/src
git clone https://github.com/ros-perception/pointcloud_to_laserscan

执行如下代码安装ros-kinetic-tf2-sensor-msgs包

sudo apt-get install ros-kinetic-tf2-sensor-msgs

编译源代码

cd ~/catkin_ws/

catkin_make

修改sample_node.launch

<?xml version="1.0"?>

<launch>

<arg name="camera" default="camera" />

<!-- start sensor-->
<include file="$(find openni_launch)/launch/openni.launch">
<arg name="camera" default="$(arg camera)"/>
</include>

<!-- run pointcloud_to_laserscan node -->
<node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">

<remap from="cloud_in" to="$(arg camera)/depth_registered/points_processed"/>
<remap from="scan" to="$(arg camera)/scan"/>
<rosparam>
target_frame: camera_link # Leave disabled to output scan in pointcloud frame
transform_tolerance: 0.01
min_height: 0.0
max_height: 1.0

angle_min: -1.5708 # -M_PI/2
angle_max: 1.5708 # M_PI/2
angle_increment: 0.087 # M_PI/360.0
scan_time: 0.3333
range_min: 0.45
range_max: 4.0
use_inf: true

# Concurrency level, affects number of pointclouds queued for processing and number of threads used
# 0 : Detect number of cores
# 1 : Single threaded
# 2->inf : Parallelism level
concurrency_level: 1
</rosparam>

</node>

</launch>

2.2.启动pointcloud_to_laserscan的sample节点

roslaunch pointcloud_to_laserscan sample_node.launch

启动成功后会出现如下信息:

执行如下命令查看激光数据

rostopic echo /camera/scan


也可以用rviz查看激光数据

rosrun rviz rviz


对应的深度图片

以上是深度相机及其驱动的安装过程和一个转换为激光数据的简单应用,后续章节会基于视觉系统逐步开发其他的机器人应用

发表评论

Scroll to top
%d 博主赞过: