KUKA机器人视觉3

news/2024/11/19 7:27:59/

随着技术的发展,3D相机的使用越来越频繁,当然如果价格亲民点、再亲民点,那将得到更多的使用。

 

今天我们就来说说3D相机和机器人之间那些思维。

 

往往3D相机是标定工具的,因此相机给出的位置信息对于机器人来说相当于绝对坐标值,就是说相机给了这个产品的位置信息,机器人拿到就直接执行这个位置就可以了。

 

 

首先我们来了解一下3D相机的原理:

3D相机是通过“激光”扫描得到镜头下物体轮廓的点云,并且计算出预先设置好的特征,并且计算出机器人tcp的位置

 

由此看来相机需要知道机器人的base坐标系位置,tcp位置,tcp抓取姿态,产品特征点等信息。这些信息都是通过标定和信息录入来得到的。

 

 

 

当这些都设置完成后就可以相机的工作了。

相机通过扫描得出镜头下物体的轮廓,并且从中选择抓取容易度比较高的零件,计算出抓取该产品的TCP位置。把这个位置信息发送给机器人。

 

当机器人收到后只需要执行这个位置就可以实现抓取了。

 

 

真的吗!!!

 

        

 

假的,机器人到达这个位置之前的所有运动点都还是需要我们自己计算的,(有些品牌相机会帮我们做好这个计算)

比如下图:这个姿态是我们的抓取点姿态,但前提是我们必须延红色箭头线方向将抓手伸进产品“身体里”,,,做个“活塞”运动。,,,

 


这个“活塞”运动一点也不简单,因为产品的位置决定了运动的方向。然而相机只给了机器人插入后的位置信息。(怎么总觉得在开车)

 

就是说我们知道目标点的姿态和位置{x,y,z,a,b,c}如果我们不在进入前把姿态调整好将无法进入。当然姿态调整好了还吧必须沿着这条红色箭头线进入。否则就像找不到洞的小伙子。

 

回头看看我们前面说过相机给我们的数据是:机器人的base坐标系下,tcp位置,tcp抓取姿态。

 

运用到实际抓取中就是这样的

 

def pick ()ini
ptp home
ptp p1
ptp pick ;相机传过来的数据

 

先做个假设,相机给的坐标值中永远都有一个坐标轴与产品的“深入”方向平行。

这样我们就可以利用这个坐标值进行tcp的运算了。

 

为了实现这个假设,我们必须在标定前就完成tcp的建立和base的建立。并且要求预先选定让tool坐标的一个方向与夹爪深入产品的方向一致

此时需要注意的是相机标定会实现base的位置计算,base的方向计算,tcp的计算,但不能实现tool的方向计算。

 

此时我们建立tool1和base1。全部完成后开始标定。

 

正确的标定以后我们通过相机传来的位置信息为目标点,这时我们需要让这个运动点在base1下,并且采用tool1

 

有了目标点后我们在计算抓取前的点。

如果我们的夹爪需要深入产品200mm那么我们把工具位置偏移250mm到达我们的目标点,这时这个点位就是我们的抓取上方点了

def pick()initool_data[2]=tool_data[1]tool_data[2].z=tool_data[2].z-250
ptp pick tool2 base1 ;抓取上方点
tool_data[2]=tool_data[1]lin pick tool2 base1;直线伸入产品腔体

怎么样你会了吗?

 

如果你觉得有用请关注转发哦。让更多朋友都能学到。

长按二维码关注我,机器人小农。。。大家可以用微信关注这个公众号

个人的手机号不敢公布啊,怕被骚扰。还是发微信公众号吧,哈哈哈哈。经常会发技术文出来,大家共勉啊!!!

要买KUKA机器人也可以找我啊。。。我会转发给内部销售的。。。


http://www.ppmy.cn/news/911944.html

相关文章

Camera

public class Camera extends Object 本类主要用于和 camera service 建立及断开连接、设置拍照功能 、开启及关闭 预览 、拍照、检索 frames 编码成 video 。本类没有默认的构造函数,你可以通过 open() 函数获得一个 Camera 对象。 首先要使用硬件 camer…

leetcode第354场周赛补题

6889. 特殊元素平方和 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;模拟 class Solution { public:int sumOfSquares(vector<int>& nums) {int res 0;for(int i 0; i < nums.size(); i ){if(nums.size() % (i 1) 0) res nums[i] * nums[i];}r…

qt开发技巧之嵌入式linux qt按钮点击触发两次

1.问题 移植qt5.12.9到嵌入式linux系统&#xff0c;tslib作为触摸输入&#xff0c;开发平台是imx6ull&#xff0c;点击pushbutton按钮会出现触发两次点击的情况。 2.解决 vi /etc/profile&#xff0c;在 /etc/profile里添加环境变量&#xff0c;禁止QT自带输入检测&#xff0…

架构师知识体系(5)--建立自己的知识体系吧

http://mp.weixin.qq.com/s?__bizMzA4Nzg5Nzc5OA&mid400103116&idx1&sn89bc2f3644603ffcf5f2c517172141ba&scene23&srcid1025169A7lqdEZNfEhpffDLE#rd http://segmentfault.com/q/1010000002404545 http://www.phpxs.com/post/3508 1、引言 我们每天都…

Ubuntu 深度学习环境配置、Theano TensorFlow PyTorch 安装、常用软件安装方式

文章目录 介绍系统和显卡深度学习环境配置安装 Nvidia 显卡驱动安装 CDUA安装 cuDNN 深度学习框架安装安装 Theano-gpu安装 TensorFlow-gpu安装 PyTorch-gpu 常用软件安装方式通过 Ubuntu 软件中心从软件官网下载需要手动配置环境Chrome——浏览器WPS——文件编辑ClamAV——杀毒…

【并发编程二十二】通过进程名字杀死进程TerminateProcess

【并发编程二十二】通过进程名字杀死进程TerminateProcess 一、代码二、杀进程失败时&#xff0c;检查1、OpenProcess的参数2、UpdatePrivilege提升优先级3、以管理员方式&#xff0c;启动进程 三、启动进程失败1、由于找不到vcruntime140d.dll&#xff0c;无法继续执行代码。2…

图-邻接矩阵

图的邻接矩阵表示法 参考b站视频 用一维数组存储顶点信息&#xff0c;用二维数组存储顶点与顶点之间的边关系 创建接口类 先定义图要实现的方法 package com.testgraph; public interface Graph<V> {//获取顶点数int getVerticesSize();//获取边数int getEdgesSize(…

丰农控股 CIO 王轶枭:万亿级农资市场,神策数据助力大丰收筑就数据驱动核心竞争力...

丰农控股集团成立于 2014 年初&#xff0c;是国内专业的农业产业服务集团。集团多年来聚焦国内种植领域&#xff0c;以“提升农业价值”为使命&#xff0c;为国内 2.6 亿种植户提供专业服务&#xff0c;帮助种植户解决传统农资流通渠道单一、农技知识薄弱、田间服务不完整、农产…