这段时间需要使用多个usb相机分别读图,方法是用ros2订阅一个“/image_raw”的话题,然后通过OpenCv转化为矩阵,然后再进行操作。我使用一个相机的时候还OK,但是当我使用两个的时候就犯了难了。话题是同名的,我要怎么区分这两个相机,再分别接收呢,篇幅较长,我们分为上下两期这一期我们先解读参数文件,并且提供解决思路。
我使用的是ubuntu22.04,ros2 humble。
我们先进入dev,查看文件
记住现在的设备数量和id,接下来我们插入相机,注意右下角若是多出来几个,那就是你相机的端口。usb相机应该是谁先插,谁就在前,然后一个相机两位,比如第一个是video1,下一个是video3,以此类推。记住设备号之后,我们找到相机的参数文件。
大致在这个位置
/opt/ros/humble/share/usb_cam/config
进入后我们发现有两个文件
一个是params.yaml,还有一个是camera_info.yaml。我们先看params.yaml
可以看到里面有设备号,频率,帧类别。下面的参数可以根据我们的实际使用进行调整。还有一个参数文件主要是相机的增益矩阵,这个我们不去动它。我们主要注意这个设备号,我们若是想要有两个相机的接口,它一定是要能有两个接口,那么我的第一个思路是,能不能直接复制把这份复制一份,粘贴在下面,然后直接把设备号一改就搞定呢?
显然不行,运行指令
ros2 launch usb_cam demo_launch.py
直接报错,我们改变思路,我们是否可以自己写一个launch包,然后添加多份的param文件实现配置呢?具体的实现方法将在下篇中给出。