【机器人学】一、从线性变换的角度理解机器人坐标变换

这篇具有很好参考价值的文章主要介绍了【机器人学】一、从线性变换的角度理解机器人坐标变换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从线性变换的角度理解机器人坐标变换

【机器人学】一、从线性变换的角度理解机器人坐标变换,机器人,数据库
【机器人学】一、从线性变换的角度理解机器人坐标变换,机器人,数据库
【机器人学】一、从线性变换的角度理解机器人坐标变换,机器人,数据库
【机器人学】一、从线性变换的角度理解机器人坐标变换,机器人,数据库

【机器人学】一、从线性变换的角度理解机器人坐标变换,机器人,数据库
实际应用:

  1. 为什么要标定旋转中心
    在机器视觉实际应用过程中,有这样的案例:机械手要抓取物料,物料每次的角度不一样,机械手的末端工具中心与其自身的旋转中心不重合,如果想完成这个抓取的工作,有两种解决方案:
    方案一:TCP标定(Tool Center Point)
    一般机械手都会有建立新工具坐标系的功能,比如EPSON。TCP标定的本质就是求旧的工具坐标系与新的工具坐标系的旋转平移矩阵。一般是定义新的工具编号,放一个参考点,多次旋转U轴(旋转轴)(4次),然后移动X,Y(base下)使新工具坐标末端对准参考点,对完之后点击示教就行了。
    方案二:标定旋转中心和旋转半径
    如果机器人没有TCP标定的功能怎么办呢?其实这种概率比较低,因为市场上几乎所有的机器人都会有这种功能了,大部分是由于操作机器人的工程师业务不够熟练,所以就把这个任务交给机器视觉工程师了。
    还有另外一种情况,如果你使用的运动机构是运动控制卡控制的,这里我们讨论的是有旋转轴的机构,而且旋转轴上的工具末端中心又和旋转轴不重合,这时候就不得不标定旋转中心和旋转半径了。
    其实一般带有旋转轴的机构,我们都会标定旋转中心的,因为靠机械定位误差比较大,机器视觉工程师要对最终的精度负责,标定旋转中心是必要的,要不然我们要旋转轴干嘛呢?
  2. 如何标定旋转中心
    2.1 标定旋转中心的操作步骤
    如下图,在旋转轴工具上放置一个Mark点,旋转角度,获得三个点,三点拟合圆,获得圆心坐标和旋转半径(默认已经做完九点标定,这三个点转为世界坐标后再计算圆心坐标和旋转半径)。
    【机器人学】一、从线性变换的角度理解机器人坐标变换,机器人,数据库

2.2 三点拟合圆心代码:
通过下面的计算,我们能得到旋转中心和旋转半径。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 求圆心
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            double[] xy = new double[3];
            xy = RotateCenter(double.Parse(txtX1.Text),double.Parse(txtY1.Text),double.Parse(txtX2.Text),double.Parse(txtY2.Text),double.Parse(txtX3.Text),double.Parse(txtY3.Text));
            txtxcen.Text = xy[0].ToString();//X
            txtycen.Text = xy[1].ToString();//Y
            txtrcen.Text = xy[2].ToString();//R

        }
        public double[] RotateCenter(double x1,double y1,double x2,double y2,double x3,double y3)
        {
            double a, b, c, d, e, f;
            a = 2 * (x2-x1);
            b = 2 * (y2-y1);
            c = x2 * x2 + y2 * y2 - x1 * x1 - y1 * y1;
            d = 2 * (x3 - x2);
            e = 2 * (y3 - y2);
            f = x3 * x3 + y3 * y3 - x2 * x2 - y2 * y2;
            double x = (b * f - e * c) / (b*d-e*a);
            double y = (d*c-a*f) / (b*d-e*a);
            double r = Math.Sqrt((x1 - x) * (x1 - x) + (y1 - x) * (y1 - x));
            double[] xyr = new double[3];
            xyr[0] = x;
            xyr[1] = y;
            xyr[2] = r;
            return xyr;
        }
    }
}
  1. halcon多点拟合圆的方法
    如果你使用的算法库是halcon,那么我将给您提供一个更方便的多点拟合圆的方法:
    利用Halcon将多个点拟合成圆
    【机器人学】一、从线性变换的角度理解机器人坐标变换,机器人,数据库
    halcon代码
Row := [0,100.5,100,3]
Col := [4,0,100,99.4]

gen_contour_polygon_xld (Contour, Row, Col)
fit_circle_contour_xld (Contour, 'geotukey', -1, 0, 0, 3, 2, Row_C, Column_C, Radius_C, StartPhi_C, EndPhi_C, PointOrder_C)
 
dev_set_color ('blue')
gen_circle_contour_xld (ContCircle, Row_C, Column_C, Radius_C, 0, 4 * acos(0), 'positive', 1)
  1. 如何使用旋转中心计算偏移量
    这一步就是最重要的一步了,如何使用旋转中心和旋转半径来确定偏移量呢?
    【机器人学】一、从线性变换的角度理解机器人坐标变换,机器人,数据库
    【机器人学】一、从线性变换的角度理解机器人坐标变换,机器人,数据库
    【机器人学】一、从线性变换的角度理解机器人坐标变换,机器人,数据库

  2. 计算一点绕另一点旋转一定角度后新点的坐标
    第4节主要是为了讲清楚这个推导过程,接下来我们直接给出代码:

using System;
namespace RotatePoint
{
    class Program
    {
        static void Main(string[] args)
        {
            double X = 0;
            double Y = 0;
            //顺时针角度为负数
            RotateAngle(1, 1, -45, 2, 2, ref X, ref Y);

            Console.WriteLine(X+","+Y);
            Console.ReadKey();
        }

        public static string RotateAngle(double XRotation, double YRotation, double ARotate, double XBefore, double YBefore, ref double XAfter, ref double YAfter)
        {
            try
            {
                double Rad = 0;
                Rad = ARotate * Math.Acos(-1) / 180;
                XAfter = (XBefore - XRotation) * Math.Cos(Rad) - (YBefore - YRotation) * Math.Sin(Rad) + XRotation;
                YAfter = (YBefore - YRotation) * Math.Cos(Rad) + (XBefore - XRotation) * Math.Sin(Rad) + YRotation;
                return "OK";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }
    }
}

标定旋转中心的目的就是,计算旋转一定角度后新点的坐标;
X,Y和角度纠偏的步骤:
X,Y和角度的偏差,在机械动作上是同时进行纠偏的,但是在算法中却不是,我们往往是先转正角度,然后算出转正角度后新位置的坐标;
此时新位置和模板角度是相同的,只需要平移就能重合,这个平移量就是9点标定时算出并保存的仿射变换矩阵来计算的了。文章来源地址https://www.toymoban.com/news/detail-861708.html

到了这里,关于【机器人学】一、从线性变换的角度理解机器人坐标变换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器人学导论】惯性张量旋转和平移变换的推导

    最近遇到了一些涉及惯性张量的实际问题,比如: 对两个通过铰链连接在一起的杆,如何计算整体的惯性张量? 对于一个由多个简单部件组合成的系统,如何计算整体的惯性张量? 在网上查找计算方法的过程中,难以通过正确的找到简明的数学方法。因此我在多番查

    2024年02月08日
    浏览(13)
  • 《机器人学导论》根据DH参数表计算变换矩阵MATLAB代码

    PUMA560的DH参数表如下 根据参数表可以求出每一个连杆变换矩阵,求各连杆变换矩阵的MATLAB函数如下 带入DH表的最后三行参数,计算使用样例如下: 得到的结果为: 书上结果为  对比可得,代码计算结果与书上结果一致

    2024年02月06日
    浏览(16)
  • 机器人学基础(3)-动力学分析和力-拉格朗日力学、机器人动力学方程建立、多自由度机器人的动力学方程建立

    本章节主要包括拉格朗日力学、拉格朗日函数及建立求解、多自由度机器人的动力学方程、机器人的静力分析、坐标系间力和力矩的变换,主要结合例题进行掌握理解 动力学分析是为了研究机器人应该以多大力进行驱动,虽然根据运动学方程+微分运动可以得到机器人的位置

    2024年02月05日
    浏览(22)
  • 机器人学关于SE(3)、se(3)、SO(3)、so(3)的理解

    SE(3):特殊欧式群 se(3):特殊欧式群的李代数 SO(3): 三维特殊正交群 so(3): 三维特殊正交群的李代数 T(3):三维移动群 R : 旋转矩阵 李代数:李群单位元处的切空间; SO(3) 和T(3) 都是SE(3)的李子群 SO3——log——so3, 3×1 vector SE3——log——se3, 6×1 vector so3——exp——SO3, 3×3 matrix se3——

    2024年01月17日
    浏览(16)
  • 机器人学|手机玻璃加工全自动化——AGV+机器人+视觉解决方案(含双目三维视觉SLAM建图、MATLAB的AGV路径规划导航避障、六轴机械手臂建模与路径规划仿真,附带源代码)

    文章目录 前言 一、国内外移动操作机器人现状 二、方案概述 三、主要部件BOM清单 1.差动轮式AGV: 2.UR5系列机械臂 3.Cognex智能相机 4.加工台 5.控制系统 6.电源和电缆 四、技术点及工作流程 五、计算自动化方案与人工方案成本收回时间 1.自动化方案成本分析: 2.人工方案成本

    2024年01月22日
    浏览(13)
  • 【机器人学】逆运动学

    逆运动学 是一个非线性的求解问题,相对于正运动学较为复杂,主要是因为可解性探究、多重解以及多重解的选择等问题。例如,形如【机器人学】正运动学详解-6.4 一个简单例子中所用的六自由度机器人,其 逆运动学 可以描述为:假设我们已经知道其次变换矩阵 R T H ^RT

    2023年04月08日
    浏览(20)
  • 机器人学-正运动学

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 DH约定 正运动学 总结 本文介绍串联机械臂基础算法,并使用python和matlab进行算法设计、建模仿真。 标准DH配置  坐标系示意图  DH参数 代码如下(python):

    2024年02月15日
    浏览(13)
  • 【现代机器人学】学习笔记十三:配套代码解析

    最近一直忙于工作,每天都在写一些业务代码。而目前工程中的技术栈并没有使用旋量这一套机器人理论系统,因此时间长了自己都忘记了。 于是决定把这本书配套的代码内容也过一遍,查漏补缺,把这本书的笔记内容完结一下。 代码来源于github:https://github.com/NxRLab/Moder

    2024年02月12日
    浏览(12)
  • 机器人学DH参数及利用matlab符号运算推导

    重新复习了一下机器人学DH参数,并且利用matlab符号运算进行了推导,验证了公式。 图中的 坐标系定义 : 坐标系 i {i} i 的 z z z 轴 z i z_i z i ​ 和关节轴线 i i i 共线,指向任意规定。 坐标系 i {i} i 的 x x x 轴 x i x_i x i ​ 和 a i a_i a i ​ 重合,由关节 i i i 指向关节 i + 1 i+1 i

    2024年02月02日
    浏览(11)
  • 【现代机器人学】学习笔记四:一阶运动学与静力学

    这节课的内容主要讲速度的正向运动学(也就是位置的一阶导数,所以叫一阶运动学)和静力学,这也是本书首次出现动力学相关的内容(刚体运动那节提到的力旋量算是一个概念的介绍)。 个人结合平时的工程项目看,觉得这节课的内容是一个内容和难度上的一个跨越,因

    2023年04月08日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包