RGBD摄像头实验

HandsFree支持多种摄像头,包括Xtion Pro,Xtion 2,Kinect 1等.本节教程为Xtion Pro及Xtion 2的配置使用教程,Kinect 1请参考其他教程。若使用HandsFree提供的工控机,则可以直接进行测试,若使用自己的PC,则需要先安装驱动。
本节还将讲解如何使用Asus Xtion 2进行建图。在雷达建图章节建图时我们使用激光雷达扫描周围环境,提供距离数据从而生成地图。除了使用激光雷达进行建图,我们也可以使用深度摄像头模拟激光雷达进行建图。

1 配置环境

  • 1) 安装驱动
sudo apt-get install libopenni2-dev libopenni2-0 ros-indigo-openni2-launch ros-indigo-openni2-camera
cd ASUS-Linux-x64-OpenNI2.2
sudo sh install.sh
sudo cp ASUS/Xtion2/lib/libSenDuck.so  /usr/lib/OpenNI2/Drivers/
  • 3) 因为Xtion 2对ubuntu usb3.0不太友好,所以我们要设置带宽才可以同时接收rgbd,所以需要做以下设置:
sudo rmmod uvcvideo
sudo modprobe uvcvideo quirks=640

这个设置在重启之后会失效,需要重新设置.建议将其加入开机启动项.

2 测试摄像头

如果安装了我们的镜像或者已经按照前面的步骤安装了我们的ROS驱动包和上面的驱动,则可以开始测试,因为Xtion 2对ubuntu USB 3.0的支持还不是特别好,所以需要将摄像头连接到USB 2.0上,然后执行下面的命令:

roslaunch handsfree_bringup xtion.launch

运行结果如下所示:

ROS_MASTER_URI=http://Robot:11311

setting /run_id to b5ad0dc4-0630-11e8-8254-56847afe9799
process[rosout-1]: started with pid [9028]
started core service [/rosout]
process[camera/camera_nodelet_manager-2]: started with pid [9045]
process[camera/driver-3]: started with pid [9046]
process[camera/rgb_rectify_color-4]: started with pid [9047]
process[camera/depth_rectify_depth-5]: started with pid [9048]
process[camera/depth_metric_rect-6]: started with pid [9049]
process[camera/depth_metric-7]: started with pid [9050]
process[camera/depth_points-8]: started with pid [9051]
process[camera/depth_registered_rectify_depth-9]: started with pid [9057]
process[camera/points_xyzrgb_hw_registered-10]: started with pid [9062]
process[camera/depth_registered_hw_metric_rect-11]: started with pid [9067]
process[camera/depth_registered_metric-12]: started with pid [9078]
process[camera_base_link-13]: started with pid [9080]
process[camera_base_link1-14]: started with pid [9090]
process[camera_base_link2-15]: started with pid [9092]
process[camera_base_link3-16]: started with pid [9102]
[ INFO] [1517366692.165227976]: Initializing nodelet with 4 worker threads.
open device fail
open rts video device fail
Video Camera at /dev/video1 Detected
Depth Camera at /dev/video2 Detected
[ INFO] [1517366698.357743962]: Device "5Voxel.com" found.
Creating IR stream
Creating color stream
Creating Depth stream
v4l2_query_control: error 9, Bad file descriptor
v4l2_query_control: error 9, Bad file descriptor
v4l2_query_control: error 9, Bad file descriptor
[ WARN] [1517366699.161181724]: Reconnect has been enabled, only one camera should be plugged into each bus

不用担心,这个err是正常的,可以忽略。

查看图片有两种方法,第一种在rqt中可以查看图像,在终端中运行'rqt':

如果打开rqt之后,没有image_view,可以手动添加:在窗口上,Plugins -> Visualization -> Image View即可添加成功。如果想切换不同topic查看,可以在/camera/rgb/image/raw那个窗口进行不同图像的切换.

查看图片的第二种方法,在终端打开image_viewer

rosrun image_view image_view image:=/camera/rgb/image_raw
rosrun image_view image_view image:=/camera/depth/image_raw

若RGB图像和深度图像都可以正常显示,则Xtion 2节点工作正常,接下来进行建图。

3 RGBD 建图

使用深度摄像头建图和使用激光雷达进行建图的过程基本相同,只是将打开激光雷达节点更换为打开Xtion虚拟激光节点。相关命令如下:

  • 1) 运行机器人抽象节点:
roslaunch handsfree_hw handsfree_hw.launch
  • 2) 运行Xtion虚拟激光节点
roslaunch handsfree_bringup xtion_fake_laser_openni2.launch

运行结果和运行Xtion驱动节点时相同,但是还此文件还将启动一个depthimage_to_laserscan的节点,发布虚拟激光数据。

  • 3) 运行建图节点:
roslaunch handsfree_2dnav move_base_gmapping.launch
  • 4) 利用RVIZ可视化建图过程
rosrun rviz rviz -d `rospack find handsfree_2dnav`/rviz/HANDSFREE_Robot.rviz

如果正常的话,可以在RVIZ中看到机器人模型及激光雷达扫描到的可视化数据。
picture

  • 5) 打开键盘控制节点:

    roslaunch handsfree_hw keyboard_teleop.launch
    

    利用键盘遥控机器人在准备导航的环境中缓慢移动,使RVIZ中显示的地图逐渐补全,直到将整个环境的地图建好为止。当地图建好之后就要对地图进行保存。

  • 6) 保存地图
    在你打算保存地图的目录运行下面的命令:

rosrun map_server map_saver -f my_map

将生成两个文件.pgm和.yaml文件,建议将地图放在handsfree/handsfree_2dnav/map/目录下便于统一管理。到此,使用Xtion虚拟建图过程完成,之后可以使用保存的地图进行导航功能的实现。

Xtion虚拟激光与激光雷达建图的区别

Xtion虚拟激光扫描的角度相对较窄,Xtion一般在57°左右,而一般的激光雷达的扫描范围能达到240°甚至更大。

Copyright © handsfree.org.cn 2017 all right reserved,powered by Gitbook该文件修订时间: 2018-02-02 07:22:38

results matching ""

    No results matching ""