运行环境:kinect V1,ubuntu14.04,ROS indigo,台式机(具备2个以上USB BUS,不是PORT)
课题需要在一台电脑上同时运行两个kinect,网上有提供方案,但是复现时出现了一些问题,修改了几个地方,整理如下:
首先,需要自己写一个launch文件,test.launch(文件名自定):
<launch>
<!-- Parameters possible to change-->
<arg name="camera1_id" default="#1" /><!--here you can change 1@0 by the serial number -->
<arg name="camera2_id" default="#2" /><!--here you can change 2@0 by the number -->
<!--arg name="camera1_id" default="B00366600710131B" /--><!--here you can change 1@0 by the serial number -->
<!--arg name="camera2_id" default="B00364210621048B" /--><!--here you can change 2@0 by the serial number -->
<!--arg name="camera3_id" default="#3" /--><!--here you can change 3@0 by the serial number -->
<arg name="depth_registration" default="true"/>
<!-- Default parameters-->
<arg name="camera1_name" default="kinect1" />
<arg name="camera2_name" default="kinect2" />
<!--arg name="camera3_name" default="kinect3" /-->
<!-- Putting the time back to realtime-->
<rosparam>
/use_sim_time : false
</rosparam>
<!-- Launching first kinect-->
<include file="$(find openni_launch)/launch/openni.launch">
<arg name="device_id" value="$(arg camera1_id)"/>
<arg name="camera" value="$(arg camera1_name)"/>
<arg name="depth_registration" value="$(arg depth_registration)" />
<node name="rviz" pkg="rviz" type="rviz"/>
</include>
<!-- Launching second kinect-->
<include file="$(find openni_launch)/launch/openni.launch">
<arg name="device_id" value="$(arg camera2_id)"/>
<arg name="camera" value="$(arg camera2_name)"/>
<arg name="depth_registration" value="$(arg depth_registration)" />
<node name="rviz" pkg="rviz" type="rviz"/>
</include>
<!-- Launching third kinect-->
<!--include file="$(find openni_launch)/launch/openni.launch"-->
<!--arg name="device_id" value="$(arg camera3_id)"/-->
<!--arg name="camera" value="$(arg camera3_name)"/-->
<!--arg name="depth_registration" value="$(arg depth_registration)" /-->
<!--/include-->
</launch>
只要电脑配置有多个USB BUS,就可以接3个甚至更多个kinect。
将test.launch文件复制到:/opt/ros/indigo/share/openni_launch/launch
打开终端,运行:
roslaunch openni_launch test.launch
再打开一个终端,运行:
rosrun image_view image_view image:=/kinect1/rgb/image_color
再打开一个终端,运行:
rosrun image_view image_view image:=/kinect2/rgb/image_color
大功告成,运行结果如下图:
当然,也可以在rviz中查看两个kinect的数据。
参考链接:
http://www.aichengxu.com/view/37264
http://answers.ros.org/question/96071/accessing-multiple-kinects-in-ros-hydro/
enjoy!