文章目录
一、摘要
-
usb相机驱动的获取及配置可以参考上一篇博客:ROS 2 中(单/双目)USB相机驱动安装。
-
多个相机需要连接不同的usb端口,如果将多个usb相机使用扩展坞(Hub)连接电脑的一个usb端口,只能启动一个相机并出现如下错误:
-
正常识别设备启动后,终端会有如下输出:
-
源码包中的launch文件有点麻烦,这里提供一个简单的版本, 可以加载源码包中config目录内的yaml配置文件,可以在这里对多个相机进行不同的配置。
-
在launch目录下创建camera.launch.py文件之后使用colcon build指令编译相机驱动源码,将launch文件复制到install目录下。
二、Launch文件
import os
import sys
from pathlib import Path # noqa: E402
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch_ros.actions import Node
dir_path = os.path.dirname(os.path.realpath(__file__))
sys.path.append(dir_path)
USB_CAM_DIR = get_package_share_directory('usb_cam')
config_path_camera_1=Path(USB_CAM_DIR, 'config', 'params_1.yaml') # auto get camera_1 config dir
config_path_camera_2=Path(USB_CAM_DIR, 'config', 'params_2.yaml') # auto get camera_2 config dir
def generate_launch_description():
camera1_node = Node(
package='usb_cam', # 相机节点的ROS包名
executable='usb_cam_node_exe', # 相机节点的可执行文件名
name='camera_01', # 节点名
namespace='camera1_ns', # 节点的命名空间
parameters=[
config_path_camera_1 # 相机配置文件
],
output='screen' # 将节点的输出打印到屏幕
)
camera2_node = Node(
package='usb_cam',
executable='usb_cam_node_exe',
name='camera_02',
namespace='camera2_ns',
parameters=[
config_path_camera_2
],
output='screen'
)
# 返回包含两个相机节点的launch描述
return LaunchDescription([
camera1_node,
camera2_node
])
小结
以上是关于ros2中使用usb相机的简单分享,如果有相关错误欢迎在评论区讨论,谢谢!!