基于深度视觉实现机械臂对目标的识别与定位

机械臂手眼标定

根据相机和机械臂的安装方式不同,手眼标定分为眼在手上和眼在手外两种方式,双臂机器人的相机和机械臂基座的相对位置固定,所以应该采用眼在手外的手眼标定方式。

后续的视觉引导机械臂抓取测试实验基于本实验实现,通过视觉引导右臂完成抓取目标物,所以默认已使用机械臂右臂和相机完成了手眼标定。

打印 Marker 标签

打印标定需要使用到的 Marker 标签,可以从下面的网站下载 marker 标签并打印出来:

Online ArUco markers generator (chev.me)

注意:

 Dictionary 一定要选 Original ArUco

 Marker ID 和 Marker size 自选,在 launch 文件中做相应的修改(本教程演示使用 Marker ID:582,Marker size:30mm)

打印时,要选择原始大小,否则要测量一下打印出来的真实大小

配置及编译运行

修改 aruco_ros 功能包 launch 下的 single_realsense.launch 文件,根据打印的marker 标签,需要配置 single_realsense.launch 文件,将其中的 markerId 和markerSize 修改为实际打印 marker 对应的参数。

修改 dual_arm_demo 功能包 launch 下的 demo_recognize_target_pose.launch文件

根据手眼标定后在 ~/.ros/easy_handeye 路径下生成的rm_d435_eye_on_base.yaml 文件,将其中的 tf 关系输入到demo_recognize_target_pose.launch 文件中的相应位置。

编译运行

将提供的源码包拷贝到 catkin_ws 工作空间的 src 目录下或将源码包拷贝到自己创建的其他工作空间的 src 目录下。

通过 rosdep 安装源码包依赖,执行以下命令

rosdep install -y --from-paths . --ignore-src --rosdistro melodic -r

使用 catkin 工具配置进行编译,执行如下命令:

cd ~/catkin_ws

catkin build

编译成功后执行以下命令启动 launch 文件:

source devel/setup.bash

roslaunch dual_arm_demo demo_recognize_target_pose.launch

打开一个新的终端,执行以下命令启动 image_view 订阅/aruco_single/result

显示图像:

cd ~/catkin_ws

source devel/setup.bash

rosrun image_view image_view image:=/aruco_single/result

回到上一个启动 demo_recognize_target_pose.launch 的终端,将打印 marker的纸张放到相机视野内,图像会显示识别到 marker 及对应坐标系,终端会打印输出 marker 在相机坐标系下的位姿和目标物在右臂机械臂 base_link 坐标系下的位姿。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/527660.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP有什么缺陷,HTTPS是怎么解决的

缺陷 HTTP是明文的,谁都能看得懂,HTTPS是加了TLS/SSL加密的,这样就不容易被拦截和攻击了。 SSL是TLS的前身,他俩都是加密安全协议。前者大部分浏览器都不支持了,后者现在用的多。 对称加密 通信双方握有加密解密算法…

活体检测(点头,摇头,张嘴等动态识别)

活体检测(点头,摇头,张嘴等动态识别) 某本书里有一句话,等我去读、去拍案。 田间的野老,等我去了解、去惊识。 山风与发,冷泉与舌, 流云与眼,松涛与耳, 他们等…

吴恩达机器学习笔记十六 如何debug一个学习算法 模型评估 模型选择和训练 交叉验证测试集

如果算法预测出的结果不太好,可以考虑以下几个方面: 获得更多的训练样本 采用更少的特征 尝试获取更多的特征 增加多项式特征 增大或减小 λ 模型评估(evaluate model) 例如房价预测,用五个数据训练出的模型能很好的拟合这几个数据&am…

java正则表达式概述及案例

前言: 学习了正则表达式,记录下使用心得。打好基础,daydayup! 正则表达式 什么是正则表达式 正则表达式由一些特定的字符组成,代表一个规则。 正则表达式的功能 1:用来校验数据格式是否合规 2:在一段文本…

QT画图功能

QT画图功能 每个QWidget都自带的功能,继承了QPainteDevice都可以使用QPainter来进行绘图。 画图需要调用paintEvent绘制事件,paintEvent事件时QWidget类自带的事件。 重写paintEvent事件。(重写事件:如果父类有某个方法&#xff…

C++类和对象(下篇)

目录 一.再谈构造函数 二.static成员 三.友元 四.内部类 五. 再次理解类和对象 一.再谈构造函数 1.构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 class Date { public:Date(int year, int month…

8.5 Springboot项目实战 Redis缓存热点数据

文章目录 前言一、缓存与数据库一致性二、Repository层 -- Cache Aside模式实操BookRepositoryBookRepositoryImpl2.1 查询2.2 修改2.3 删除2.4 扩展Mapper修改三、Service层调用修改四、测试前言 前两文我们讲解了如何在SpringBoot中整合Redis,接下来我们将进行

Linux C/C++下使用Lex/Yacc构建实现DBMS(Minisql)

DBMS(数据库管理系统)是一种用于管理和组织数据库的软件系统。它的重要性在于提供了一种有效地存储、管理和访问大量数据的方式。本文将深入探讨如何使用C语言、Lex(词法分析器生成器)和Yacc(语法分析器生成器&#xf…

设计模式学习笔记 - 规范与重构 - 5.如何通过封装、抽象、模块化、中间层解耦代码?

前言 《规范与重构 - 1.什么情况下要重构?重构什么?又该如何重构?》讲过,重构可以分为大规模高层重构(简称 “大型重构”)和小规模低层次重构(简称 “小型重构”)。大型重构是对系统…

LTspice(14) Noise仿真

LTspice(14) Noise仿真 好久没有更新LTspice的教程了,大家想了没? 截止目前LTspice已经更新到24.0.9。界面发生了一些变化,但主要功能并不受影响,新的版本改了UI,找东西更加方便了,界面如下图1所示。 图1…

CSP初赛备考—汉字与运算

汉字 英文字符 英文字符的编码有两种:①ASCII标准码,7位(128个字符)②ASCII扩展吗,8位(256个字符) 中文字符 汉字分为两级:①一级汉字:3755个,按汉语拼音字母的次序排列。②二级汉字:3008个,按偏旁部首排列。 那么,怎么编码呢?要使用区位码和字形码等等。 区…

VMware虚拟机安装Ubuntu kylin22.04系统教程(附截图详细步骤)

一、版本信息 虚拟机产品:VMware Workstation 17 Pro 虚拟机版本:17.0.0 build-20800274 ISO映像文件:ubuntukylin-22.04-pro-amd64.iso 二、安装步骤 打开虚拟机,点击创建新的虚拟机: 选择自定义: 硬…