本节描述了若何在ROS 1环境中配置和使用多个Orbbec摄像头。。。。。。。
为了确定摄像头衔接到哪些USB端口,,,,,,,,您能够使用以下bash剧本。。。。。。。此剧本列出了衔接到系统的所有Orbbec设备及其USB端口和序列号。。。。。。。
#!/bin/bash
VID="2bc5"
for dev in /sys/bus/usb/devices/*; do
if [ -e "$dev/idVendor" ]; then
vid=$(cat "$dev/idVendor")
if [ "$vid" == "${VID}" ]; then
port=$(basename $dev)
product=$(cat "$dev/product" 2>/dev/null) # 产品名称
serial=$(cat "$dev/serial" 2>/dev/null) # 序列号
echo "找到Orbbec设备 $product,,,,,,,,usb端口 $port,,,,,,,,序列号 $serial"
fi
fi
done
将此剧本保留到文件中,,,,,,,,并在终端执行它以输出衔接的摄像头列表。。。。。。。
或者您能够运行以下号令来列出所有衔接的Orbbec摄像头:
rosrun orbbec_camera list_ob_devices.sh
您能够通过为每个摄像头指定分歧的USB端口来启动多个摄像头。。。。。。。以下是一个使用ROS 1启动系统启动两个拥有个别配置的摄像头的示例XML文件。。。。。。。
<launch>
<include file="$(find orbbec_camera)/launch/gemini_330_series.launch">
<arg name="camera_name" value="camera_01"/>
<arg name="usb_port" value="2-3.4.4.4.1"/>
<arg name="device_num" value="2"/>
<arg name="sync_mode" value="free_run"/>
</include>
<include file="$(find orbbec_camera)/launch/gemini_330_series.launch">
<arg name="camera_name" value="camera_02"/>
<arg name="usb_port" value="2-3.4.4.4.3"/>
<arg name="device_num" value="2"/>
<arg name="sync_mode" value="free_run"/>
</include>
</launch>
要执行多摄像头的启动配置,,,,,,,,请使用号令:
roslaunch orbbec_camera multi_camera.launch
使用多个摄像头时,,,,,,,,校准它们并为每个摄像头颁布一个静态TF树是必不成少的。。。。。。。以下ROS 1 XML启动配置基于您的校准了局设置TF树:
<launch>
<node pkg="tf" type="static_transform_publisher" name="camera_01_tf" args="0 0 0 0 0 0 base_link camera_01_link" />
<node pkg="tf" type="static_transform_publisher" name="camera_02_tf" args="0 0 0 0 0 0 base_link camera_02_link" />
</launch>
将此配置保留为Orbbec摄像头包的启动目录中的。。。。。。。要运行它,,,,,,,,使用:
roslaunch orbbec_camera multi_camera_tf.launch