ROS2相机驱动如何选择Video编号?

5 篇文章 11 订阅
3 篇文章 0 订阅

大家好,我是小鱼。今天早上有个鱼粉在群里问在ROS2中选择相机编号?

在这里插入图片描述

问题

在ROS2的Foxy版本中,你可以使用下面的命令来运行相机。

source /opt/ros/foxy/setup.bash
ros2 run image_tools cam2image 

我们如果电脑中有多个video设备怎么办?

使用下面的命令来查看video

ll /dev/video*
crw-rw----+ 1 root video 81, 0 3月   7 11:02 /dev/video0
crw-rw----+ 1 root video 81, 1 3月   7 11:02 /dev/video1
crw-rw----+ 1 root video 81, 2 3月   7 11:02 /dev/video2
crw-rw----+ 1 root video 81, 3 3月   7 11:02 /dev/video3
crw-rw----+ 1 root video 81, 4 3月   8 20:50 /dev/video4
crw-rw----+ 1 root video 81, 5 3月   8 20:50 /dev/video5
crw-rw----+ 1 root video 81, 6 3月   8 01:32 /dev/video6

可以看到小鱼有7个video,那我们先要在运行的时候指定video编号该怎么办?我们看看这个节点的help信息。

$ ros2 run image_tools cam2image --help
Usage: cam2image [-h] [--ros-args [-p param:=value] ...]
Publish images from a camera stream.
Example: ros2 run image_tools cam2image --ros-args -p reliability:=best_effort

Options:
  -h, --help	Display this help message and exit

Parameters:
  reliability	Reliability QoS setting. Either 'reliable' (default) or 'best_effort'
  history	History QoS setting. Either 'keep_last' (default) or 'keep_all'.
		If 'keep_last', then up to N samples are stored where N is the depth
  depth		Depth of the publisher queue. Only honored if history QoS is 'keep_last'. Default value is 10
  frequency	Publish frequency in Hz. Default value is 30
  burger_mode	Produce images of burgers rather than connecting to a camera
  show_camera	Show camera stream. Either 'true' or 'false' (default)
  width		Width component of the camera stream resolution. Default value is 320
  height	Height component of the camera stream resolution. Default value is 240
  frame_id		ID of the sensor frame. Default value is 'camera_frame'
Note: try running v4l2-ctl --list-formats-ext to obtain a list of valid values.

很遗憾,没有指定video编号这个参数。

解决方案

查阅Github可以看到,在foxy的下一个版本galactic中增加了这个功能。

使用--ros-args -p device_id:=id号即可指定video编号。

source /opt/ros/galactic/setup.bash
ros2 run image_tools cam2image --ros-args -p device_id:=0

你可以选择同时安装两个版本的ros2,运行相机时使用galactic,经小鱼测试,foxy版本依然可以正常收到话题数据。

还有一种办法就是下载源码编译,依然可以在foxy版本下正常使用~

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
ROS2是一个开源的机器人操作系统,其中包含了许多用于机器人应用开发的功能库和工具。而单目相机标定是在机器人视觉应用中非常重要的一步,可以帮助我们得到相机的内参和外参等参数,从而对图像进行更加准确的处理和分析。下面是ROS2单目相机标定的教程: 1. 首先需要安装ROS2,可以参考ROS2官方网站进行安装。 2. 安装相机驱动程序,例如USB相机可以使用UVC Camera驱动程序,可以通过以下命令进行安装: ``` sudo apt-get install ros-<distro>-uvc-camera ``` 其中`<distro>`为ROS2的版本号。 3. 安装相机标定工具包,可以使用以下命令进行安装: ``` sudo apt-get install ros-<distro>-camera-calibration ``` 4. 打开终端并输入以下命令,启动相机: ``` ros2 run uvc_camera camera_node ``` 5. 接下来需要收集标定所需的数据。可以通过运行以下命令启动图像采集节点: ``` ros2 run image_tools cam2image ``` 6. 在运行节点之后,会自动保存一些图像文件。需要尽可能地采集不同的角度、距离和姿态的图像,以便后续标定的准确性。 7. 完成图像采集后,运行以下命令进行标定: ``` ros2 run camera_calibration cameracalibrator --ros-args -p camera:=/camera -p image:=/image_raw ``` 其中`/camera`和`/image_raw`分别为相机和图像采集节点的话题名称。执行该命令后,会自动打开一个图形界面,显示采集到的图像。按照指导完成标定即可。 8. 标定完成后,可以通过以下命令查看标定结果: ``` ros2 run camera_calibration cameracheck.py ``` 以上就是ROS2单目相机标定的教程,希望能够帮助到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值