日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

ROS系统——roslaunch发布4个realsense相机的4种方法

發布時間:2023/11/27 生活经验 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS系统——roslaunch发布4个realsense相机的4种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前提條件:

  1. 安裝好ROS系統
  2. 安裝好realsense-ros庫

備注:以下方法僅在PC主機上進行了測試,并且自帶4個USB3.0接口。

方法1:通過serial_no字段,ROS自動去查找并發布主機上全部realsense相機。

方法2:通過serial_no字段,開發者通過指定相機serial_no編號,發布指定數量的realsense相機。

方法3:通過usb_port_id字段,ROS自動去查找并發布主機上全部realsense相機。

方法4:通過usb_port_id字段,開發者通過指定主機的usb_port_id端口號,發布指定數量的realsense相機。

1?通過serial_no開啟4個相機方法

1.1 方法1——自動開啟全部realsense相機

如果要使用roslaunch命令開啟全部realsense相機,需要修改rs_multiple_devices.launch文件。

如果使用apt安裝的realsense-ros,那么該文件路徑在/opt/ros/melodic/share/realsense2_camera/launch/rs_multiple_devices.launch。

具體修改rs_multiple_devices.launch文件后的代碼如下(如果realsense相機超過4個,新增字段即可開啟更多相機):

<launch>
<arg?name="serial_no_camera1"?default=""/>?<!-- Note: Replace with actual serial number -->
<arg?name="serial_no_camera2"?default=""/>?<!-- Note: Replace with actual serial number -->
<arg?name="serial_no_camera3"?default=""/>?<!-- Note: Replace with actual serial number -->
<arg?name="serial_no_camera4"?default=""/>

<arg?name="camera1"?default="camera1"/>?<!-- Note: Replace with camera name -->
<arg?name="camera2"?default="camera2"/>?<!-- Note: Replace with camera name -->
<arg?name="camera3"?default="camera3"/>?<!-- Note: Replace with camera name -->
<arg?name="camera4"?default="camera4"/>

<arg?name="tf_prefix_camera1"?default="$(arg camera1)"/>
<arg?name="tf_prefix_camera2"?default="$(arg camera2)"/>
<arg?name="tf_prefix_camera3"?default="$(arg camera3)"/>
<arg?name="tf_prefix_camera4"?default="$(arg camera4)"/>
<arg?name="initial_reset"?default="false"/>

<group?ns="$(arg camera1)">
<include?file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg?name="serial_no"?value="$(arg serial_no_camera1)"/>
<arg?name="tf_prefix"?value="$(arg tf_prefix_camera1)"/>
<arg?name="initial_reset"?value="$(arg initial_reset)"/>
</include>
</group>

<group?ns="$(arg camera2)">
<include?file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg?name="serial_no"?value="$(arg serial_no_camera2)"/>
<arg?name="tf_prefix"?value="$(arg tf_prefix_camera2)"/>
<arg?name="initial_reset"?value="$(arg initial_reset)"/>
</include>
</group>

<group?ns="$(arg camera3)">
<include?file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg?name="serial_no"?value="$(arg serial_no_camera3)"/>
<arg?name="tf_prefix"?value="$(arg tf_prefix_camera3)"/>
<arg?name="initial_reset"?value="$(arg initial_reset)"/>
</include>
</group>

<group?ns="$(arg camera4)"?>
<include?file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg?name="serial_no"?value="$(arg serial_no_camera4)"/>
<arg?name="tf_prefix"?value="$(arg tf_prefix_camera4)"/>
<arg?name="initial_reset"?value="$(arg initial_reset)"/>
</include>
</group>

</launch>

通過rs_multiple_devices啟動全部相機的命令如下:(至于開啟多少個相機,與rs_multiple_devices.launch中你定義了多少個serial_no_camera字段有關)

roslaunch realsense2_camera rs_multiple_devices.launch?

1.2 方法2——自定義開啟部分的realsense相機

如果你不想開啟主機上所有realsense相機,并且想通過serial_no來指定要開啟的相機,那么就修改rs_multiple_devices.launch文件(如果realsense相機超過4個,新增字段即可開啟更多相機),如下:

<launch>
<arg?name="serial_no_camera1"?default=""/>?<!-- Note: Replace with actual serial number -->
<arg?name="serial_no_camera2"?default=""/>?<!-- Note: Replace with actual serial number -->
<arg?name="serial_no_camera3"?default=""/>?<!-- Note: Replace with actual serial number -->
<arg?name="serial_no_camera4"?default=""/>


<arg?name="camera1"?default="camera1"/>?<!-- Note: Replace with camera name -->
<arg?name="camera2"?default="camera2"/>?<!-- Note: Replace with camera name -->
<arg?name="camera3"?default="camera3"/>?<!-- Note: Replace with camera name -->
<arg?name="camera4"?default="camera4"/>

<arg?name="tf_prefix_camera1"?default="$(arg camera1)"/>
<arg?name="tf_prefix_camera2"?default="$(arg camera2)"/>
<arg?name="tf_prefix_camera3"?default="$(arg camera3)"/>
<arg?name="tf_prefix_camera4"?default="$(arg camera4)"/>
<arg?name="initial_reset"?default="false"/>

<group?ns="$(arg camera1)"??if="$(eval serial_no_camera1 != '')">
<include?file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg?name="serial_no"?value="$(arg serial_no_camera1)"/>
<arg?name="tf_prefix"?value="$(arg tf_prefix_camera1)"/>
<arg?name="initial_reset"?value="$(arg initial_reset)"/>
</include>
</group>

<group?ns="$(arg camera2)"??if="$(eval serial_no_camera2 != '')">
<include?file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg?name="serial_no"?value="$(arg serial_no_camera2)"/>
<arg?name="tf_prefix"?value="$(arg tf_prefix_camera2)"/>
<arg?name="initial_reset"?value="$(arg initial_reset)"/>
</include>
</group>

<group?ns="$(arg camera3)"??if="$(eval serial_no_camera3 != '')">
<include?file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg?name="serial_no"?value="$(arg serial_no_camera3)"/>
<arg?name="tf_prefix"?value="$(arg tf_prefix_camera3)"/>
<arg?name="initial_reset"?value="$(arg initial_reset)"/>
</include>
</group>

<group?ns="$(arg camera4)"??if="$(eval serial_no_camera4 != '')">

<include?file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg?name="serial_no"?value="$(arg serial_no_camera4)"/>
<arg?name="tf_prefix"?value="$(arg tf_prefix_camera4)"/>
<arg?name="initial_reset"?value="$(arg initial_reset)"/>
</include>
</group>

</launch>

通過rs_multiple_devices啟動指定的一批相機的命令如下:(camera編號換成自己相機編號)

roslaunch realsense2_camera rs_multiple_devices.launch serial_no_camera1:=823112060538 serial_no_camera2:=821312062713? 。。。

備注:

  • 查看當前主機插入的realsense相機編號的命令:rs-enumerate-devices | grep Serial


  • 如上圖,主機上插了4個realsense相機,使用Serial Number后面的編號。

2?通過usb_port_id開啟4個相機方法

該方法原理是ROS自動在指定的主機USB端口號上找realsense相機。

具體方法:修改rs_multiple_devices.launch文件(也可以自己創建一個.launch文件),內容變成如下:

<launch>
<arg?name="usb_port_id1"?default="2-5"/>
<arg?name="usb_port_id2"?default="2-6"/>
<arg?name="usb_port_id3"?default="2-7"/>
<arg?name="usb_port_id4"?default="2-8"/>


<arg?name="camera1"?default="camera1"/>?<!-- Note: Replace with camera name -->
<arg?name="camera2"?default="camera2"/>?<!-- Note: Replace with camera name -->
<arg?name="camera3"?default="camera3"/>?<!-- Note: Replace with camera name -->
<arg?name="camera4"?default="camera4"/>

<arg?name="tf_prefix_camera1"?default="$(arg camera1)"/>
<arg?name="tf_prefix_camera2"?default="$(arg camera2)"/>
<arg?name="tf_prefix_camera3"?default="$(arg camera3)"/>
<arg?name="tf_prefix_camera4"?default="$(arg camera4)"/>
<arg?name="initial_reset"?default="false"/>

<group?ns="$(arg camera1)">
<include?file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg?name="usb_port_id"?value="$(arg usb_port_id1)"/>
<arg?name="tf_prefix"?value="$(arg tf_prefix_camera1)"/>
<arg?name="initial_reset"?value="$(arg initial_reset)"/>
</include>
</group>

<group?ns="$(arg camera2)">
<include?file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg?name="usb_port_id"?value="$(arg usb_port_id2)"/>
<arg?name="tf_prefix"?value="$(arg tf_prefix_camera2)"/>
<arg?name="initial_reset"?value="$(arg initial_reset)"/>
</include>
</group>

<group?ns="$(arg camera3)">
<include?file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg?name="usb_port_id"?value="$(arg usb_port_id3)"/>
<arg?name="tf_prefix"?value="$(arg tf_prefix_camera3)"/>
<arg?name="initial_reset"?value="$(arg initial_reset)"/>
</include>
</group>

<group?ns="$(arg camera4)">
<include?file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg?name="usb_port_id"?value="$(arg usb_port_id4)"/>
<arg?name="tf_prefix"?value="$(arg tf_prefix_camera4)"/>
<arg?name="initial_reset"?value="$(arg initial_reset)"/>
</include>
</group>

</launch>

備注:

  1. 上述4個默認default端口號,是測試時4個realsense相機插在主機上的USB端口號。具體使用時,要明確realsense所插主機的USB端口號。查找realsense所插USB端口號方法見realsense-ros官網。
  2. 也可以刪掉default默認端口號,那執行rs_multiple_devices.launch時ROS會自動在4個主機USB端口上找realsense相機,找到幾個就會發布幾個相機。這就有個問題,如果rs_multiple_devices.launch中只定義了4個usb_port_id字段,那么它只會在4個USB端口上找,如果主機上有4個以上USB端口,那么該rs_multiple_devices.launch可能無法全部自動的找到所有realsense相機,解決辦法就是往rs_multiple_devices.launch中新增usb_port_id字段,使字段數量超過主機USB端口數量,那么該命令就能全部查到所有realsense相機。
  3. 如果只想打開固定USB端口上的realsense相機,參考本文“方法1”,刪除launch文件中default默認端口號,并在某些位置加上形如:?if="$(eval?usb_port_id1?!= '')"??

總結

以上是生活随笔為你收集整理的ROS系统——roslaunch发布4个realsense相机的4种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。