作者: Sam (甄峰) sam_code@hotmail.com
ASUS Xtion是华硕使用PrimeSense技术发布的RGBD
3D设备。在机器人导航设备中,除了激光雷达,也可以使用3D摄像头来做环境采集设备。现把实际使用过程和遇到的一些问题记录如下。
问题1.
Xtion插入USB口后,未能正常驱动起来。
#lsusb
可以看到设备:1D27:0600 ASUS
#dmesg
Not enough bandwidth for new device
state.
怀疑有二。
A: 记得Linux Kernel在32bit
系统中,确实有个Bug。对多个摄像头插入同一个Hub时,确实会导致带宽不足。
B: XHCI和EHCI的问题。设备也许不支持XHCI。
要解决A,需要重新安装系统到64Bit。工程巨大。所以先测试下B。
进入BISO. xHCI模式关闭掉。 XHCI Hand-off, EHCI
Hand-off 都关闭。重新启动系统。果然能解决问题。看来猜测B是正确的。
软件和驱动安装过程:
#apt-get install ros-indigo-openni-launch
#apt-get install ros-indigo-openni-camera
#apt-get install
ros-indigo-openni2-launch
#apt-get install
ros-indigo-openni2-camera
硬件测试过程:
Sam这里,有两个运行环境:
A:台式机中安装ROS。
B:TK1中安装ROS。
TK1内存较小,无法运行大型的X11程序,例如rviz,
rqt等。
A1:本地可以运行Rviz,rqt等:
1. roslaunch openni2_launch
openni2.launch
2. rosrun rqt_image_view
rqt_image_view
此时,在下来窗口中,可以看到非常多数据源。/camera/depth/image_raw ,
/camera/rgb/image_raw 分别可以看到深度图像和RGB图像。
如此,则证明驱动,设备,数据均正常。
A2: 本地运行Rviz,并尝试把深度数据转换成雷达数据:
要用到depthimage_to_laserscan 这个Package。
1.
roslaunch openni2_launch openni2.launch
2. rosrun depthimage_to_laserscan depthimage_to_laserscan image:=/camera/depth/image_raw
3. rosrun rviz rviz
在rviz中Fixed Frame选择camera_depth_optical_frame,Add选择By
topic,选择LaserScan,在LaserScan中的Color
Transformer中选择AxisColor。
这里提一下,rviz
可以通过Topic获取ROS消息,并直观反应在可视画面上。如xtion的点云,可见光image, 由depthimage_to_laserscan转换出来的雷达数据(/scan)
等。
B:TK1上采集数据,远端察看:
因为在TK1上无法运行