上一篇介绍了如何使用数据集跑lsd-slam,这篇介绍如何用一个普通的usb摄像头跑lsd-slam,默认ubuntu12.04,fuerte已经安装好,workspace也已设置,如果没有,请参考上一篇数据集下跑lsd-slam的博文。
我使用的摄像头是罗技c310 usb摄像头,其他的usb摄像头应该也没什么问题。
1.测试摄像头好坏。安装cheese,执行
$ sudo apt-get install cheese
运行cheese,执行
$ cheese
确认摄像头是否能在ubuntu下正常工作
2.安装ros下对应的驱动。执行
$ sudo apt-get install ros-fuerte-camera-umd
接着执行
$ roscd uvc_camera
如果现在在uvc_camera文件夹,说明安装成功。
3.查找摄像头对应的设备号。执行
$ ls /dev/video*
如果只有一个摄像头,看到的应该是 /dev/video0
4.更改launch文件。进入uvc_camera下的launch文件夹,打开camera_node.launch文件,更改为
<launch><arg name="device" default="/dev/video0"/> <node pkg="uvc_camera" type="camera_node" name="uvc_camera" output="screen"> <param name="width" type="int" value="640" /> <param name="height" type="int" value="480" /> <param name="fps" type="int" value="30" /> <param name="frame" type="string" value="wide_stereo" /> <param name="device" type="string" value="/dev/video0" /> </node> </launch>
不放心的话可以将原文件备份一份, 其中/dev/video0这个要和自己上一步查询到的对应
5.执行
$ roscore
如果已经有一个shell在执行这个命令,再次执行会报错,只允许执行一个roscore
6.打开一个新的终端,执行
$rosrun lsd_slam_viewer viewer
出现point cloud viewer
7.打开一个新的终端,执行
$ roslaunch uvc_camera camera_node.launch
可能中间会有错误提示,不用管。此时,如果摄像头有工作指示灯,指示灯应该是亮的
8.打开一个新的终端。执行
$ rosrun lsd_slam_core live_slam /image:=<yourstreamtopic> _calib:=<calibration_file>
其中 yourstreamtopic我也不是很懂,calibration_file是校正文件,我直接用了数据集中的校正文件(可能原理上有问题,但是可以跑通)。我的
$ rosrun lsd_slam_core live_slam /image:=image_raw _calib:=/home/xtl/fuerte_workspace/sandbox/LSD_room_images/LSD_room/cameraCalibration.cfg
结果
point cloud viewer中显示点云:
时间: 2024-10-21 04:48:07