我的目标是在一台PC上使用2个kinects,一个用于获取SLAM的激光扫描,另一个用于骨架跟踪。
现在,我可以在一台PC上使用2个kinect从一个kinect获取彩色图像,并在另一个kinect上实现骨架跟踪。
但是,如果我从第一个kinect获得激光扫描并同时实现骨架跟踪,那么骨架跟踪效果很好,而我无法在rviz中获取激光扫描数据。
我没有得到laserscan的事实使我怀疑是否有可能第一次用于激光扫描和第二次kinect用于在一台PC上进行骨架跟踪。或者我的方法是否错误。以下是我的方法:
roslaunch openni_launch test.launch(run 2 kinects in test.launch)
rosrun openni_tracker openni_tracker
rosrun rviz rviz(to see the skeleton tracking)
rosrun depthimage_to_laserscan depthimage_to_laserscan image:=/kinect1/depth/image_raw
rosrun rviz rviz(to see the laserscan data)
和test.launch:
<launch>
<!-- Parameters possible to change-->
<arg name="camera1_id" default="#1" />
<arg name="camera2_id" default="#2" />
<arg name="depth_registration" default="true"/>
<!-- Default parameters-->
<arg name="camera1_name" default="kinect1" />
<arg name="camera2_name" default="openni" />
<!-- 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)" />
</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)" />
</include>
</launch>
任何想法或建议表示赞赏!并提前感谢!