Version

5.2.4. 使用Orbbec ROS包配置多相机(Nodelet)

本节描述如何在ROS 1环境中在同一个Nodelet Manager中设置多个相机节点。请确保您已经阅读了多相机文档

本节使用的示例启动文件是multi_camera_nodelet.launchgemini_330_series_nodelet.launch

5.2.4.1. 配置Nodelet Manager

您可以通过设置manager参数来启动特定的Nodelet Manager。以下是在ROS 1中启动名为orbbec_camera_managerNodelet Manager的示例。

<launch>
    <arg name="manager" default="orbbec_camera_manager"/>

    <node unless="false" pkg="nodelet" type="nodelet" name="$(arg manager)" args="manager"
              output="screen" required="false" respawn="false"/>
</launch>

5.2.4.2. 配置相机Nodelets

在此示例中,我们启动一个名为orbbec_camera_managerNodelet Manager,然后使用manager参数启动两个gemini_330_series_nodelet.launch文件。通过这样做,两个相机nodelets都将由同一个orbbec_camera_manager管理。

<launch>
    <arg name="camera_name" default="ob_camera"/>
    <arg name="3d_sensor" default="gemini_330_series_nodelet"/>
    <arg name="external_manager" default="true"/>
    <arg name="manager" default="orbbec_camera_manager"/>
    <arg name="camera1_prefix" default="01"/>
    <arg name="camera2_prefix" default="02"/>
    <arg name="camera1_usb_port" default="4-1"/>
    <arg name="camera2_usb_port" default="4-2"/>
    <arg name="device_num" default="2"/>

    <node unless="false" pkg="nodelet" type="nodelet" name="$(arg manager)" args="manager"
              output="screen" required="false" respawn="false"/>

    <include file="$(find orbbec_camera)/launch/$(arg 3d_sensor).launch">
        <arg name="manager" value="$(arg manager)"/>
        <arg name="external_manager" value="$(arg external_manager)"/>
        <arg name="camera_name" value="$(arg camera_name)_$(arg camera1_prefix)"/>
        <arg name="usb_port" value="$(arg camera1_usb_port)"/>
        <arg name="device_num" value="$(arg device_num)"/>
    </include>

    <include file="$(find orbbec_camera)/launch/$(arg 3d_sensor).launch">
        <arg name="manager" value="$(arg manager)"/>
        <arg name="external_manager" value="$(arg external_manager)"/>
        <arg name="camera_name" value="$(arg camera_name)_$(arg camera2_prefix)"/>
        <arg name="usb_port" value="$(arg camera2_usb_port)"/>
        <arg name="device_num" value="$(arg device_num)"/>
    </include>
</launch>

运行启动文件

roslaunch orbbec_camera multi_camera_nodelet.launch

5.2.4.3. 配置相机参数

所有相机的相同参数

当您需要对所有相机应用相同的配置时,由于在multi_camera_nodelet.launch中启动的相机节点基于gemini_330_series_nodelet.launch文件,您只需在gemini_330_series_nodelet.launch中修改相关参数即可。

每个相机的不同参数

当您需要为每个相机配置不同的参数时(例如,修改enable_hardware_noise_removal_filter参数),您可以在multi_camera_nodelet.launch文件中为每个相机设置不同的值。这允许您自定义每个相机的配置。

<launch>
    <arg name="camera_name" default="ob_camera"/>
    <arg name="3d_sensor" default="gemini_330_series_nodelet"/>
    <arg name="external_manager" default="true"/>
    <arg name="manager" default="orbbec_camera_manager"/>
    <arg name="camera1_prefix" default="01"/>
    <arg name="camera2_prefix" default="02"/>
    <arg name="camera1_usb_port" default="4-1"/>
    <arg name="camera2_usb_port" default="4-2"/>
    <arg name="device_num" default="2"/>

    <node unless="false" pkg="nodelet" type="nodelet" name="$(arg manager)" args="manager"
              output="screen" required="false" respawn="false"/>

    <include file="$(find orbbec_camera)/launch/$(arg 3d_sensor).launch">
        <arg name="manager" value="$(arg manager)"/>
        <arg name="external_manager" value="$(arg external_manager)"/>
        <arg name="camera_name" value="$(arg camera_name)_$(arg camera1_prefix)"/>
        <arg name="usb_port" value="$(arg camera1_usb_port)"/>
        <arg name="device_num" value="$(arg device_num)"/>
        <arg name="enable_hardware_noise_removal_filter" default="true"/>
    </include>

    <include file="$(find orbbec_camera)/launch/$(arg 3d_sensor).launch">
        <arg name="manager" value="$(arg manager)"/>
        <arg name="external_manager" value="$(arg external_manager)"/>
        <arg name="camera_name" value="$(arg camera_name)_$(arg camera2_prefix)"/>
        <arg name="usb_port" value="$(arg camera2_usb_port)"/>
        <arg name="device_num" value="$(arg device_num)"/>
        <arg name="enable_hardware_noise_removal_filter" default="false"/>
    </include>
</launch>