ros使用usb摄像头追踪ArUco markers

2023-05-16

ros使用usb摄像头追踪ArUco markers

注意:在通过ros使用usb摄像头追踪ArUco markers之前,先进行相机的内参标定,否则会出现以下问题

Error: TF_NAN_INPUT: Ignoring transform for child_frame_id "aruco_marker_frame" from authority "unknown_publisher" because of a nan value in the transform (nan nan 0.000000) (nan nan nan nan) at line 244 in /tmp/binarydeb/ros-indigo-tf2-0.5.20/src/buffer_core.cpp

相机内参标定可以参考这一篇文章

1. 下载安装aruco_ros

aruco_ros项目地址

  • 下载编译源码
mkdir -p ~/aruco_ws/src
cd ~/aurco_ws/src
git clone https://github.com/pal-robotics/aruco_ros.git
cd .. #回到目录 /aruco_ws
catkin_make install #编译
source devel/setup.bash
  • 修改launch文件

修改single.launch文件,将图像和相机信息重新映射到usb_cam节点发布的主题:
(如果使用的是realsense相机或者其他相机,可以先查看相机对应的话题修改以下参数)

<remap from=”/camera_info” to=”/usb_cam/camera_info” />
<remap from=”/image” to=”/usb_cam/image_raw” />

适当修改相应的camera_frame,marker_frame,reference_frame,修改结果如下:

<launch>

    <arg name="markerId"        default="582"/>
    <arg name="markerSize"      default="0.034"/>    <!-- in m -->
    <arg name="eye"             default="left"/>
    <arg name="marker_frame"    default="aruco_marker_frame"/>
    <arg name="ref_frame"       default="usb_cam"/>  <!-- leave empty and the pose will be published wrt param parent_name -->
    <arg name="corner_refinement" default="LINES" /> <!-- NONE, HARRIS, LINES, SUBPIX -->


    <node pkg="aruco_ros" type="single" name="aruco_single">
        <remap from="/camera_info" to="/usb_cam/camera_info" />
        <remap from="/image" to="/usb_cam/image_raw" />
        <param name="image_is_rectified" value="True"/>
        <param name="marker_size"        value="$(arg markerSize)"/>
        <param name="marker_id"          value="$(arg markerId)"/>
        <param name="reference_frame"    value="$(arg ref_frame)"/>   <!-- frame in which the marker pose will be refered -->
        <param name="camera_frame"       value="usb_cam"/>
        <param name="marker_frame"       value="$(arg marker_frame)" />
        <param name="corner_refinement"  value="$(arg corner_refinement)" />
    </node>
</launch>
  • /camera_info: 填入相机的内参 topic,这个topic一般由启动相机的节点发布,例如我用的是 usb_cam 启动相机,他就会发布相机内参 topic。
  • /image: 图片 topic,同样我的也是由 usb_cam 发布的,要填什么具体看你这个节点的名字。

20220817101503

  • reference_frame: marker 坐标系的参考坐标系,我们要获得的是marker 和相机的相对位姿,所以这里设置为相机坐标系,即和 camera_frame 一样。
  • camera_frame: 相机坐标系,随便写个名字
  • marker_frame:marker 坐标系,随便写个名字
2. 运行aruco_ros
  • 打印ArUco markers

ArUco markers生成网站

Dictionary:选择Original ArUco,不然可能识别不到
Marker ID:上面single.launch文件中的markerId
Marker size, mm:上面single.launch文件中的markerSize,注意单位

  • 启动相机
roslaunch usb_cam usb_cam-test.launch #根据实际的相机启动文件名进行修改
  • 启动aruco_ros检测Marker
cd ~/aruco_ws
source devel/setup.bash
roslaunch aruco_ros single.launch
  • 启动窗口,可视化检测结果

查看aruco_ros发布的话题

rostopic list

20220815113450

根据查看的话题订阅/aruco_single/result查看可视化结果

rosrun image_view image_view image:=/aruco_single/result

20220815113724

  • 查看位姿

订阅/aruco_single/pose话题,并打印/marker_frame/reference_frame 的位姿

rostopic echo /aruco_single/pose

20220815114435

收工
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ros使用usb摄像头追踪ArUco markers 的相关文章

  • 通过 USB 模拟 UART

    有谁知道是否可以通过 USB 模拟 UART 简单串行发送和接收 这将如何实现 我在 Microchip 网站上找到了这个链接 但不是很容易找到 http www microchip com forums m522571 print asp
  • 发现多个 USB-IrDA 设备,打开并连接每个设备的套接字

    对于任何优秀的套接字程序员 是否可以使用套接字枚举通过 USB 端口连接到 PC 的多个活动 IrDA 设备 如果是这样 怎么办 这确实是我的主要问题 帖子的其余部分完善了细节并描述了我所尝试的内容 我正在使用 Microsoft SDK
  • 计算 MarkerCluster 中的元素数量

    所以我的地图上有几家商店作为图层 我的所有商店都已添加到 MarkerCluster 并且该商店已添加到地图 一切正常 但我想在我的 viewPort 中显示有关商店的简短信息 对于通常的商店 层 这是第一次尝试 但集群组不起作用 我从这个
  • Ubuntu 10.1下如何识别多个USB串口适配器

    我正在 Ubuntu 10 1 下从多个相同的 USB 串行适配器读取数据 有时 它们的 dev tty 路径会发生变化 例如 如果在启动时连接了其他 USB 设备 我需要一种通过任何此类更改重复引用同一适配器的方法 据 udevadm 称
  • 如何在没有窗口句柄的情况下使用 RegisterDeviceNotification?

    我正在编写一个 DLL 库 该库使用 VB NET 中的 winusb 连接到 USB 设备 由于它是一个 DLL 所以我没有窗口 而且我的库的用户也可能没有窗口 例如命令行应用程序 我见过的检测设备连接和分离的示例都使用RegisterD
  • 如何对 USB/HID/蓝牙适配器进行逆向工程。使用什么工具?

    需要对蓝牙USB鼠标适配器进行逆向工程 并使用鼠标板测量距离 并用绘图库 http matplotlib org 我发现这些工具可以帮助完成此任务 Linux lsusb usbmon usbhid转储 rfcomm hidrd 转换 xx
  • 如何使用 OpenCV Viz 和 ARUCO 转换增强现实应用的 3D 模型

    我正在开发一个简单的基于标记的增强现实应用程序OpenCV 可视化 and ARUCO 我只想在标记上可视化 3D 对象 PLY 格式 我可以使用 ARUCO 毫无问题地运行标记检测和姿态估计 返回旋转和平移向量 我可以在 Viz 窗口中可
  • 如何在 DriverKit 中将我的 dex 与 USB 设备匹配?

    我正在编写一个驱动程序包扩展 其目标是阻止 USB 设备 例如闪存驱动器 作为起点 我选择了示例项目https developer apple com documentation driverkit communicating Betwee
  • 使用Python直接向USB发送信号

    如何使用 Python 将 USB 端口连接设置为高或低 这可用于定制 USB 设备 例如 假设我有一个 LED 连接到 USB 端口 数据线 现在通过代码我想闪烁它或控制它 现在 这可以通过使用任何微控制器 Arduino Raspber
  • 如何从里程计/tf数据获取投影矩阵?

    我想将视觉里程计的结果与 KITTI 数据集提供的事实进行比较 对于地面中的每一帧 我都有一个投影矩阵 例如 1 000000e 00 9 043683e 12 2 326809e 11 1 110223e 16 9 043683e 12
  • Android 版 usbmon

    我想分析我的设备的 USB 通信 SGS4 我到处都看到需要配置 usbmon 并将其编译到内核中 Afaik 这个模块没有内置在android linux系统中 我在编译内核方面没有太多经验 但如果有必要 我会这样做 您能说出这样做的步骤
  • USBInterfaceOpen总是报kIOReturnExclusiveAccess错误

    最近我遇到了这个问题 很头疼 我已经在这个问题上花了一个星期了 但仍然失败 希望您能帮我把这块石头踢开 非常感谢 我的问题 我们公司为iPhone生产USB存储设备 实际上这个存储设备中有一个SDCard 现在 我们想要开发一个 Mac 应
  • c#.NET USB设备持久标识符

    我正在寻找一种在 C 中为 USB 插槽 更具体地说是 SD 卡读卡器 提供持久标识符 在最终用户拔下集线器 重新启动计算机时 的方法 驱动器号并不总是分配给同一个插槽 但我需要一种方法来物理识别插槽 A 一旦我能够识别它 我就可以连接到驱
  • 我可以从哪里开始使用可编程硬件?

    一段时间以来 我一直渴望至少学习一点有关硬件编程的知识 并想在这里提出要求以获得一些起点 我是一位相当有成就的程序员 具有 Delphi 和 Objective c 经验 但从未听过设备端口 中断 我什至不知道术语 更不用说对硬件进行编程了
  • Aruco 标记与 openCv,获取 3d 角坐标?

    我正在使用 opencv 3 2 检测打印的 Aruco 标记 aruco estimatePoseSingleMarkers corners markerLength camMatrix distCoeffs rvecs tvecs 这将
  • iOS 中通过 USB 进行反向端口转发

    我在桌面上有一个 Web 套接字服务器 在 iPhone 设备上有一个客户端 我想使用 USB 而不是任何网络与他们通信 我已经使用 adb reverse 在 android 上实现了它 但无法找到适用于 iOS 的任何解决方案 我尝试使
  • Android 3.1 USB 主机 - BroadcastReceiver 未收到 USB_DEVICE_ATTACHED

    我经历过USB 主机的描述和示例位于developer android com http developer android com guide topics usb host html检测连接和分离的 USB 设备 如果我在清单文件中使用
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • 如何在Windows上安装机器人操作系统ROSJava?

    ROS 的文档很糟糕 一个很大的讽刺是 ROS 的 Groovy 和 ROSJava 版本的创建是为了让 Windows 等平台上的开发人员能够利用出色的机器人 SDK 而所有安装说明仍然面向 Linux ubuntu 用户 The ROS
  • Python:获取USB闪存驱动器设备的名称[windows]

    我正在尝试编写一个小程序 它将能够读取有关 REMOVEABLE DEVICE USB 的一些信息 我试过了pyusb https github com walac pyusb但我无法提取我需要的数据 我想从系统中读取 USB 设备的名称

随机推荐

  • mysql中的CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP

    在mysql中 xff0c 如果类型为时间的列设置了CURRENT TIMESTAMP xff0c 那么在insert一条新记录的收 xff0c 时间字段自动获取到当前时间 xff0c 如果设置了ON UPDATE CURRENT TIME
  • vncviewer使用教程

    首先安装vncviewer 之后在服务器输入你想要开启的 端口号 conda deactivate vncserver 88 VNC Server这里写 你的服务器地址 5900 43 端口号 如果出现以下问题 xff0c 可能是配置文件的
  • podman常见使用命令

    常用命令 容器 podman run 创建并启动容器 podman start 启动容器 podman ps 查看容器 podman stop 终止容器 podman restart 重启容器 podman attach 进入容器 podm
  • 对子模函数(submodular function)的一些理解

    1 子模函数是一个集合函数 xff0c 又减小回转属性 xff08 diminishing returns 子模函数适用于多种应用 xff0c 包括近似算法 xff0c 博弈理论 xff0c 和电网络 2 标准定义 xff1a 如果是一个集
  • 二项分布(np.random.binomial),搞它就完了

    二项分布 xff08 np random binomial xff09 xff0c 搞它就完了 xff01 首先我们的搞清楚伯努利分布和二项分布 xff0c 我们先找个例子 xff0c 选西瓜 xff0c 待我细细道来 伯努利分布 选一个西
  • Numpy给数组增加维度的操作

    不说其他的 xff0c 直接给个例子就懂了 a是一个一维数组 a 61 np array 0 0 10 0 20 0 30 0 print a shape a np newaxis a np newaxis shape 输出 4 0 10
  • 参数辨识的简单理解

    1 参数辨识技术 xff0c 是一种将理论模型与试验数据结合起来用于预测的技术 参数辨识根据实验数据和建立的模型来确定一组模型的参数 xff0c 使得由模型计算得到的数值结果能最好地拟合测试数据 xff08 可以看做是一种曲线拟合问题 xf
  • Matlab中持久变量(persistent)在Python中的理解

    语法 persistent var1 varN 说明 persistent 将变量var1 varN 声明为持久变量 持久变量是声明它们的函数的局部变量 xff1b 但其值保留在对该函数的各次调用所使用的内存中 xff0c Matlab命令
  • 新的代数计算软件包——Magma

    Magma是一款由悉尼大学数学与统计学系计算代数学小组开发的功能强大的代数计算程序包 xff0c 该软件专门解决代数系统中的数论 代数几何和代数组合学的计算问题 新的代数计算软件包 Magma 前言一 Magama安装二 基本操作三 多项式
  • 基于ChatGPT的新一代辅助编程神器——Cursor

    Cursor 编辑器 Cursor 这是一款与OpenAI合作并且基于GPT3的新一代辅助编程神器 它支持多种文件类型 xff0c 支持格式化文本 xff0c 支持多种主题 xff0c 支持多语言语法高亮 xff0c 支持快捷键设置 xff
  • 2023 Microsoft Edge 新增的分屏功能

    Microsoft Edge Canary 通道目前已经发布 110 版 xff0c 本次更新带来一个非常实用的实验性功能 xff1a 同窗双屏功能 xff0c 可以在一个窗口里同时开两个网页并排看 如何开启分屏功能 xff1f 默认分屏功
  • ubuntu服务器图形界面崩溃解决方案

    你们看的没错 xff0c 我又来了 真的是 xff0c 读计算机不易啊 我又又又把机器搞坏了 就单纯的程序跑不通 xff0c 网上搜解决方案是说好像这个文件夹名带中文 xff0c 明明我修改过了 xff0c 想着重启一下吧 xff0c 然后
  • Mysql备份和恢复

    一 数据备份的重要性 备份的主要目的是灾难恢复 在生产环境中 xff0c 数据的安全性至关重要 任何数据的丢失都可能产生严重的后果 造成数据丢失的原因 1 程序错误 2 人为操作错误 3 运算错误 4 磁盘故障 5 灾难 xff08 火灾
  • FreeRTOS中任务的四种状态

    FreeRTOS任务的四种状态分别是 xff1a 就绪态 运行态 阻塞态 挂起态 各种状态的说明如下 xff1a 1 就绪态 xff1a 处于就绪态的任务是那些已经准备就绪 这些任务没有被阻塞或者挂起 xff0c 可以运行的任务 xff0c
  • BP神经网络实现汽油辛烷值预测,《MATLAB源码+数据集》

    发展背景 在人工神经网络的发展历史上 xff0c 感知机 Multilayer Perceptron xff0c MLP 网络曾对人工神经网络的发展发挥了极大的作用 xff0c 也被认为是一种真正能够使用的人工神经网络模型 xff0c 它的
  • ELM极限学习实现汽油辛烷值预测(MATLAB)

    什么是极限学习机 xff1f 极限学习机 xff08 ELM Extreme Learning Machines xff09 是一种前馈神经网络 xff0c 最早由新加坡南洋理工大学黄广斌教授于2006年提出 该算法具有良好的泛化性能以及极
  • 粒子群算法(PSO)测试函数寻优

    3 1粒子群算法 粒子群优化算法是一种模拟鸟群捕食活动的进化算法 xff0c 体现了种群相互协作行为的群体智能 在处理优化问题时 xff0c 每个粒子对应搜索空间的一个潜在方案 xff0c 在进化过程中基于适应度函数进行选择和记录 xff0
  • 解决路由器离自己电脑远的问题:电脑和Linux开发板通过网线口连接,实现电脑与虚拟机,虚拟机与电脑、开发板和虚拟机实现网络ping回复。

    第一步 xff1a 关闭防火墙 xff0c 打开网络 internet 设置 xff1b 第二步 xff1a 找到更改适配器选项 xff1b 第三步 xff1a 找到 本地连接 双击它 xff1b 第四步 xff1a 点击属性 xff1b
  • 解决ubuntu中使用make命令报错的问题

    ubuntu界面出现 xff1a make arm linux gnueabihf xff1a 命令未找到 bin sh 1 arm linux gnueabihf not found dirname 缺少操作数 Try 39 dirnam
  • ros使用usb摄像头追踪ArUco markers

    ros使用usb摄像头追踪ArUco markers 注意 xff1a 在通过ros使用usb摄像头追踪ArUco markers之前 xff0c 先进行相机的内参标定 xff0c 否则会出现以下问题 Error TF NAN INPUT