基于人工标识的机器人定位方法

2023-05-16

基于人工标识的机器人定位方法

\qquad 在机器人视觉导航任务中,常常需要通过识别人工标识获得机器人在世界坐标系中的位姿。它的原理是通过匹配人工标识中特征点的世界坐标和图像坐标,从而估算机器人坐标系与世界坐标系
之间的转换矩阵(相机需要提前标定)。人工标识的种类很多,常见的比如QR码、Aruco码等。

下面是两个使用人工标识进行机器人定位的例子:
波士顿动力的Atlas:

波士顿动力的Atlas
大疆的Robomaster S1:大疆的Robomaster S1

1、定位原理

一般情况下,我们使用的人工标识大多是方形的,标识内的编码与标识的世界坐标相对应,而标识
与相机的相对位姿则由标识的四个特征点(角点)提供。我们已知标识的四个角点在世界坐标系的三维坐标和在图像坐标系中的二维坐标,如何推测标识与相机的相对位姿呢?这个问题被称作 P N P PNP PNP问题,
现在已经可以在OpenCV中调用相应的函数求解。

为了更清晰地解释 P N P PNP PNP问题,下面将它公式化:
s [ u 1 v 1 1 ] = [ R t ] [ X Y Z 1 ] = [ t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10 t 11 t 12 ] [ X Y Z 1 ] s \begin{bmatrix} u_1\\v_1\\1 \end{bmatrix}= \begin{bmatrix} R&t \end{bmatrix} \begin{bmatrix} X\\Y\\Z\\1 \end{bmatrix}= \begin{bmatrix} t_1&t_2&t_3&t_4\\ t_5&t_6&t_7&t_8\\ t_9&t_{10}&t_{11}&t_{12} \end{bmatrix} \begin{bmatrix} X\\Y\\Z\\1 \end{bmatrix} su1v11=[Rt]XYZ1=t1t5t9t2t6t10t3t7t11t4t8t12XYZ1
其中, s s s是尺度因子, [ u 1 , v 1 ] [u_1,v_1] [u1,v1]是特征点的相机坐标系坐标(不是像素坐标,需要根据相机参数转换), [ X , Y , Z ] [X,Y,Z] [XY,Z]是特征点的世界坐标系坐标。上面的方程组消去尺度因子后会得到两个方程,而未知数总共有6个(旋转矩阵需满足正交性),所以至少需要三个特征点 P N P PNP PNP问题才能求解。这里可以通过SVD分解求解超定方程。

通过不同人工标识标识进行机器人定位除了标识的识别方法不同,获取特征点的像素坐标的方式也不尽相同。下面介绍基于QR码和Aruco码的机器人位姿估计方法。

2、基于QR码的机器人位姿估计

QR码的功能主要是存储信息,并不是专用的定位码,所以定位精度并不好。获取QR码的四个角点像素坐标主要是利用了QR码的图案的轮廓特性。在获取到三个定位图案外轮廓后,需要通过一系列的几何约束确定角点的相对位置,而第四个角点则是通过拟合边界直线的交点得到。

3、基于Aruco码的机器人位姿估计

Aruco码是专用的定位码,已经集成到了OpenCV中。相较于QR码,它的内部编码只能用于区分ID而不能存储信息。它角点像素坐标是轮廓近似四边形的角点坐标,而相对位置通过内部编码确定。Aruco码定位速度块、精度高,是理想的定位码。

有评论就更~

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

基于人工标识的机器人定位方法 的相关文章

随机推荐

  • Linux网卡驱动pcnet32.c的注释(AM79C9*系列网卡的驱动)

    很久之前读的网卡驱动源码 xff0c 很多东西已经忘记了 xff0c 最近面试被问道了网卡收数据包的全过程 xff0c 只能答出一个很简单的过程 xff0c NAPI这种非常优秀的机制都没有想起来 xff0c 很惭愧 xff0c 重新复习了
  • ADRC算法Auto Disturbances Rejection control

    自抗扰控制 其中 xff0c e 61 v t y t 是控制系统参考输入量v t 与被控对象输出量y t 之间的差值 xff0c kp比例系数 ki积分系数 xff0c xff0c kd微分系数 优点 xff1a 1 仅由误差来决定控制
  • python 下运行ros

    1 建立l两个文件夹python ros scr 2 执行下述命令后 xff0c 将会在在src中 xff0c 建立一个包daodao 并且在文件夹daodao里生成了两个空文件夹 xff0c 有include daodao scr 和 C
  • tensor 与 array 的相互转化

    import tensorflow as tf import numpy as np a 61 np array 1 2 3 4 5 6 7 8 9 print a 1 2 3 4 5 6 7 8 9 b 61 tf constant a
  • keras.layers.UpSampling2D与tf.image.resize_nearest_neighbor

    参考https www bookstack cn read keras docs zh sources layers convolutional md keras layers UpSampling2D size 61 2 2 data f
  • Linux安装elasticsearch7.x(踩坑分享)

    安装并启动 首先下载elasticsearch压缩文件 xff0c 下载地址 我这里选择的是elasticsearch 7 17 1版本 xff1a https www elastic co cn downloads elasticsear
  • VNC 登录显示too many security failures的解决方法

    原因 xff1a 黑客试图登录 解决方法 xff1a 在putty上登录 xff0c 然后输入命令vncserver kill 5 杀掉vnc进程 之后输入su 你的用户名 使用su权限 输入命令 vnc 重启vnc 成功之后就可以再次登录
  • MapReduce案例运行及分词

    首先查询进程 xff0c 发现hadoop并没有启动 如何配置hadoop xff0c 参考我的另外一篇博文 Hadoop环境准备 接下来 xff0c 启动hadoop start all sh 或者 start dfs sh start
  • main函数是主线程吗

    1 线程的概念 xff1a 线程是程序最基本的运行单位 xff0c 而进程不能运行 xff0c 所以能运行的 xff0c 是进程中的线程 2 线程是如何创建起来的 xff1a 进程仅仅是一个容器 xff0c 包含了线程运行中所需要的数据结构
  • C#类型的转换:Converter<TInput, TOutput> 委托的使用

    Converter lt TInput TOutput gt 委托 表示将对象从一种类型转换为另一种类型的方法 此委托由 Array 类的 ConvertAll lt TInput TOutput gt 方法和 List lt T gt 类
  • 收藏一些不错的国外网站

    设备树 xff1a https www devicetree org LINUX xff1a https www arm linux org uk USB xff1a https github com pyusb pyusb PYTHON
  • 近红外跨模态行人重识别(RGB-IR Cross-Modality Re-id)(一)

    1 写在前面 本文是我阅读近红外的跨模态行人重识别 xff08 RGB IR Cross Modality Re id xff09 文献的笔记 xff0c 由于网上对该方面介绍的博客很少 xff0c 所以这里我记录下阅读文章的一些要点和我自
  • ESKF的相关理解

    ESKF相关总结 对随机噪声和干扰的积分ESKF中的处理手段 xff1a 预积分中的处理手段 ESKF中IMU GPS不同解算坐标系的处理全局坐标系的初始化GPS坐标系的转换重力加速度引出的ENU IMU坐标系转换的初始化 状态量的初始化关
  • T265相关使用

    0 查看相机配置信息 rs enumerate devices 1 读取相机内外参信息 rs enumerate devices c 图像数据发布的Topic 图像数据30Hz camera fisheye1 camera info cam
  • vins-fusion中的GPS和VO融合

    https blog csdn net hltt3838 article details 109725845 这个帖子还蛮有价值的 GPS进行更新的时候 xff0c 需要寻找与VIO时间戳相对应的GPS消息 根据 43 10ms的时间偏差找
  • 玩转NVIDIA Jetson AGX Xavier

    最近项目应用需要部署到边缘模块 xff0c 所以就玩起了Xavier 感觉网上的资料不多 xff0c 所以从头记录一下笔记 xff0c 方便大家一起学习应用 玩转NVIDIA Jetson AGX Xavier 1 刷机 xff08 安装s
  • 素数伴侣 java

    span class token keyword package span span class token namespace com span class token punctuation span patience span cla
  • 分布式系统概念和设计-分布式文件系统服务体系结构和实践经验

    分布式系统概念和设计 文件系统的特点 负责文件的组织 xff0c 存储 xff0c 检索 xff0c 命名 xff0c 共享和保护 文件包含数据和属性 数据 xff1a 包含一系列数据项 8比特的字节 xff0c 读写操作可访问任何一部分数
  • ROS(C++)中的subscribe使用

    subscribe函数用于订阅topic并添加回调函数 比如 xff1a cloud subs span class token operator 61 span nh span class token punctuation span s
  • 基于人工标识的机器人定位方法

    基于人工标识的机器人定位方法 qquad 在机器人视觉导航任务中 xff0c 常常需要通过识别人工标识获得机器人在世界坐标系中的位姿 它的原理是通过匹配人工标识中特征点的世界坐标和图像坐标 xff0c 从而估算机器人坐标系与世界坐标系 之间