Version
5.2.4. 使用Orbbec ROS包配置多相机(Nodelet)
本节描述如何在ROS 1环境中在同一个Nodelet Manager中设置多个相机节点。请确保您已经阅读了多相机文档。
本节使用的示例启动文件是multi_camera_nodelet.launch和gemini_330_series_nodelet.launch。
5.2.4.1. 配置Nodelet Manager
您可以通过设置manager参数来启动特定的Nodelet Manager。以下是在ROS 1中启动名为orbbec_camera_manager的Nodelet 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_manager的Nodelet 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>