一、使用环境:
- 电脑系统:Ubuntu14.04 LTS
- ROS版本:indigo
- 传感器:Kinect v1
- 机器人:Turtlebot2
二、安装Kinect1.0驱动
1、将Kinect与电脑USB端口连接后,查看是否识别该设备。
$ lsusb
显示的设备厂商是 Microsoft ,就是Kinect1
注意:Kinect1.0使用USB2.0或者USB3.0;而Kinect2.0则只能使用USB3.0 。区别USB2.0和3.0的方法是查看端口的颜色,黑色的就是USB2.0,蓝色的就是USB3.0 。如下图:
2、安装openni和freenect驱动
$ sudo apt-get install ros-indigo-openni-* ros-indigo-openni2-* ros-indigo-freenect-*
$ rospack profile
3、检查环境变量。在使用Kinect设备之前,首先通过下面命令的输出结果,检查turtlebot默认的3D传感器的环境变量(仅在TUrtlebot上网本操作)
$ echo $TURTLEBOT_3D_SENSOR
# Kinect
在该配置中由于使用的是微软的Kinect传感器,所以如果结果显示为:Kinect,则表示默认的3D传感器环境变量是正确的。若显示的是 asus_xtion_pro ,则需要执行该命令:echo "export TURTLEBOT_3D_SENSOR=kinect" >> .bashrc ,来修改3D传感器环境变量的默认值,并重新启动终端。但是如果使用的是 asus_xtion_pro相机,则设置为 asus_xtion_pro 。
三、测试Kinect相机
1、由于电脑USB端口的电压很低,不能使Kinect进行工作。所以需要用转接线连接Kinect的梯形USB接口,然后一端通过电源对Kinect进行供电,另一端连接电脑的USB接口。在使用Kinect相机时,需要为其提供12V,1.5A的电源。将对Kinect供电的线头接到turtlebot的12V,1.5A的端口(注意:褐色接正极,白色接负极),然后打开turtlebot的开关,若转换线接头上的信号灯点亮,则表示供电正常。
2、启动相机(只是测试相机的话,无需在电脑上启动turtlebot的节点,也无需连接电脑和机器人,只要打开机器人的开关供电即可)
$ roscore
#打开新终端
$ roslaunch freenect_launch freenect-registered-xyzrgb.launch
3、查看 rgb 图
#打开新终端
$ rosrun image_view image_view image:=/camera/rgb/image_color
可以运行:rosrun rqt_reconfigure rqt_reconfigure ,来调整分辨率。
4、查看depth(深度图)
#打开新终端
$ rosrun image_view image_view image:=/camera/depth_registered/image
四、使用Kinect构建地图
1、在ROS indigo 版本下,使用Kinect传感器来构建环境的二维地图。其原理是将Kinect的深度数据转换成伪激光数据,然后使用Gmapping算法来进行建图。具体操作如下:
2、将Turtlebot机器人、Kinect传感器与电脑连接好,打开机器人的开关后执行如下命令:
# 打开新终端,启动机器人
$ roslaunch turtlebot_bringup minimal.launch
# 打开新终端,运行gmapping算法
$ roslaunch turtlebot_navigation gmapping_demo.launch
# 打开新终端,启动无线手柄控制
$ roslaunch turtlebot_teleop ps3_teleop.launch
# 打开新终端,启动 rviz观察Kinect构建的二维地图,同时可以操纵手柄来构建环境地图
$ roslaunch turtlebot_rviz_launchers view_navigation.launch
3、建好地图后可以执行如下命令来将地图进行保存:
# 打开新终端,保存地图到 ~/map/kinect
$ rosrun map_server map_saver -f ~/map/kinect
[注] Kinect的两个版本对比:
参考资料:
[2] Turtlebot入门-硬件安装