RM新时代网站

ROS 1 教程 使用多臺相機

使用Orbbec ROS包配置多個(gè)攝像頭

本節描述了如何在ROS 1環(huán)境中配置和使用多個(gè)Orbbec攝像頭。

識別攝像頭USB端口

列出已連接攝像頭的腳本

為了確定攝像頭連接到哪些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) # 產(chǎn)品名稱(chēng)
      serial=$(cat "$dev/serial" 2>/dev/null) # 序列號
      echo "找到Orbbec設備 $product,usb端口 $port,序列號 $serial"
    fi
  fi
done

將此腳本保存到文件中,并在終端執行它以輸出連接的攝像頭列表。
或者您可以運行以下命令來(lái)列出所有連接的Orbbec攝像頭:

rosrun orbbec_camera list_ob_devices.sh

啟動(dòng)多個(gè)攝像頭

多攝像頭啟動(dòng)設置

您可以通過(guò)為每個(gè)攝像頭指定不同的USB端口來(lái)啟動(dòng)多個(gè)攝像頭。以下是一個(gè)使用ROS 1啟動(dò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>

運行啟動(dòng)文件

要執行多攝像頭的啟動(dòng)配置,請使用命令:

roslaunch orbbec_camera multi_camera.launch

配置多攝像頭的TF樹(shù)

兩個(gè)攝像頭的TF配置示例

使用多個(gè)攝像頭時(shí),校準它們并為每個(gè)攝像頭發(fā)布一個(gè)靜態(tài)TF樹(shù)是必不可少的。以下ROS 1 XML啟動(dòng)配置基于您的校準結果設置TF樹(shù):

<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)目錄中的。要運行它,使用:

roslaunch orbbec_camera multi_camera_tf.launch


RM新时代网站