本節(jié)描述了如何在ROS 1環(huán)境中配置和使用多個(gè)Orbbec攝像頭。
為了確定攝像頭連接到哪些USB端口,您可以使用以下bash腳本。此腳本列出了連接到系統(tǒng)的所有Orbbec設(shè)備及其USB端口和序列號(hào)。
#!/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) # 產(chǎn)品名稱
serial=$(cat "$dev/serial" 2>/dev/null) # 序列號(hào)
echo "找到Orbbec設(shè)備 $product,usb端口 $port,序列號(hào) $serial"
fi
fi
done
將此腳本保存到文件中,并在終端執(zhí)行它以輸出連接的攝像頭列表。
或者您可以運(yùn)行以下命令來列出所有連接的Orbbec攝像頭:
rosrun orbbec_camera list_ob_devices.sh
您可以通過為每個(gè)攝像頭指定不同的USB端口來啟動(dòng)多個(gè)攝像頭。以下是一個(gè)使用ROS 1啟動(dòng)系統(tǒng)啟動(dòng)兩個(gè)具有個(gè)別配置的攝像頭的示例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>
要執(zhí)行多攝像頭的啟動(dòng)配置,請(qǐng)使用命令:
roslaunch orbbec_camera multi_camera.launch
使用多個(gè)攝像頭時(shí),校準(zhǔn)它們并為每個(gè)攝像頭發(fā)布一個(gè)靜態(tài)TF樹是必不可少的。以下ROS 1 XML啟動(dòng)配置基于您的校準(zhǔn)結(jié)果設(shè)置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攝像頭包的啟動(dòng)目錄中的。要運(yùn)行它,使用:
roslaunch orbbec_camera multi_camera_tf.launch