开源机器人SmallRobotArm机器人源码解读

这篇具有很好参考价值的文章主要介绍了开源机器人SmallRobotArm机器人源码解读。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 SmallRobotArm简介

开源机器人SmallRobotArm是一个开源的6轴机械臂,都由步进电机驱动,github地址:https://github.com/SkyentificGit/SmallRobotArm

 机器人长这个样子

smallrobotarm,机器人,开源,机器人

2 欧拉角及姿态变换

由欧拉角求姿态矩阵

源码中用的欧拉角是ZYZ顺组的欧拉角。

已知世界坐标的坐标(x,y,z)和欧拉角(α,β,γ),求出对应的姿态矩阵:

smallrobotarm,机器人,开源,机器人

源码中实现这一功能的是pos2tran(float* Xpt, float* Tpt)函数。

由姿态矩阵求欧拉角

已知姿态矩阵,求对应的(x,y,z)和欧拉角(α,β,γ)为:

smallrobotarm,机器人,开源,机器人 

源码中实现这一功能的是函数void tran2pos(float* Ttp, float* Xtp)。

3 机器人D-H参数及正运动学

由源码可以看到机械臂用的是标准DH参数,参数表:

i

αi

ai

di

θi

1

-90

r1

d1

t1

2

0

r2

0

t2

3

-90

r3

d3

t3

4

90

0

d4

t4

5

-90

0

0

t5

6

0

0

d6

t6

对于标准DH参数为(α,a,d,θ)的关节,其变换矩阵为:

smallrobotarm,机器人,开源,机器人

SmallRobotArm机器人6个关节的DH参数变换矩阵分别为:

smallrobotarm,机器人,开源,机器人

smallrobotarm,机器人,开源,机器人

所以T06=T01*T12*T23*T34*T45*T56

4 逆运动学求解

SmallRobotArm源码中求逆解的函数为InverseK。它根据给出的机械臂中断的(x,y,z)坐标及欧拉角计算了6个关节角度。

设T06为:

smallrobotarm,机器人,开源,机器人

 欲求反求6个关节角t1,t2,t3,t4,t5,t6

关节角t1解算

根据等式T16=T12*T23*T34*T45*T56=inv(T01)*T06,建立等式

smallrobotarm,机器人,开源,机器人

 取T16的元素(2,2)和(2,3)构成等式:

smallrobotarm,机器人,开源,机器人

可以求出: 

 ​​​smallrobotarm,机器人,开源,机器人

 关节角t2和t3的解算

 t1计算出来后,现在T16等式的右边矩阵都是已知数。这里用aij代指右边矩阵的对应元素。

 取T16的(0,0)元素和(1,0)元素构成等式:

smallrobotarm,机器人,开源,机器人

 上式乘以s23,下式乘以c23,有:

 ​​​​​​​smallrobotarm,机器人,开源,机器人

 下式减去上式有:

smallrobotarm,机器人,开源,机器人

 取T16的(0,1)元素和(1,1)元素构成等式有:

smallrobotarm,机器人,开源,机器人

变换后可得:

smallrobotarm,机器人,开源,机器人 

取T16的(0,2)元素和(1,2)元素构成等式有:

 ​​​​​​​smallrobotarm,机器人,开源,机器人

 变换后可得:

smallrobotarm,机器人,开源,机器人

 取T16的(0,3)元素和(1,3)元素构成等式有:

smallrobotarm,机器人,开源,机器人

变换后得:

smallrobotarm,机器人,开源,机器人

将(2-1)、(2-2)和(2-3)三式相加有:

 smallrobotarm,机器人,开源,机器人

 由此式子可以解出s23/c23,进而解出t2+t3

再代入到(2-4)式中,接出t3,则t2也可求出。

关节角t4、t5和t6的解算

 先求出T03的逆矩阵

smallrobotarm,机器人,开源,机器人

由inv(T03)*T06

smallrobotarm,机器人,开源,机器人

 由T36的元素(0,2)与(1,2),可以求出t4。

t4=atan2(-T36[1][2],-T36[0][2])

由T36的元素(0,2)与(1,2)元素相加取平方和,再开根号,可以求出s5,再结合元素(2,2),可求出t5:

smallrobotarm,机器人,开源,机器人

由T36的元素(2,1)与元素(2,0),可求出t6:

t6=atan2(-T36[2][1], T36[2][0])

5 机器人运动控制

如何走一条直线

最基本的运动是如何从一个点走直线到另外一个点,源码中实现该功能的函数是

void goStrightLine(float* xfi, float* xff, float vel0, float acc0, float velini, float velfin)。其中xfi是出发点关节角度数组,xff是目的点关节角度数组,vel0是巡航速度,acc0是加速度,velini是初速度,velfin是结束速度。

void goStrightLine(float* xfi, float* xff, float vel0, float acc0, float velini, float velfin){
  //
  float lmax = max(abs(xff[0]-xfi[0]),abs(xff[1]-xfi[1]));
  lmax = max(lmax,abs(xff[2]-xfi[2]));
  lmax = max(lmax,abs(xff[3]-xfi[3]));
  lmax = max(lmax,abs(xff[4]-xfi[4]));
  lmax = max(lmax,abs(xff[5]-xfi[5]));
  unsigned long preMil = micros();
  double l = 0.0;
  vel0 = min(vel0,sqrt(lmax*acc0+0.5*velini*velini+0.5*velfin*velfin));
  unsigned long curMil = micros();
  unsigned long t = 0;
  double tap = vel0/acc0-velini/acc0;
  double lap = velini*tap+acc0*tap*tap/2.0;
  double lcsp = lmax-(vel0*vel0/2.0/acc0-velfin*velfin/2.0/acc0);
  double tcsp = (lcsp-lap)/vel0+tap;
  double tfin = vel0/acc0-velfin/acc0+tcsp;
  while (curMil-preMil<=tfin){
    t = curMil-preMil;
    //acceleration phase
    if (t<=tap) {
      l = velini*t+acc0*t*t/2.0;
    }
    //contant maximum speed phase
    if (t>tap && t<=tcsp) {
      l = lap+vel0*(t-tap);
    }
    //deceleration phase
    if (t>tcsp) {
      l = lcsp+vel0*(t-tcsp)-acc0*(t-tcsp)*(t-tcsp)/2.0;
    }
  
    //trajectory x and y as a function of l
    float Xx[6];
    Xx[0]=xfi[0]+(xff[0]-xfi[0])/lmax*l;
    Xx[1]=xfi[1]+(xff[1]-xfi[1])/lmax*l;
    Xx[2]=xfi[2]+(xff[2]-xfi[2])/lmax*l;
    Xx[3]=xfi[3]+(xff[3]-xfi[3])/lmax*l;
    Xx[4]=xfi[4]+(xff[4]-xfi[4])/lmax*l;
    Xx[5]=xfi[5]+(xff[5]-xfi[5])/lmax*l;
    
    goTrajectory(Xx);
    curMil = micros();
  }
}

 速度规划

 goStrightLine函数中用的是梯形速度规划算法。如下图左图所示,对于初速度为V0,为Ve,巡航速度为Vm,运动距离为S的直线运动

smallrobotarm,机器人,开源,机器人 则加速阶段走过的距离Sa和减速段走过的距离Sd为:

 ​​​​​​​smallrobotarm,机器人,开源,机器人

 此时Vm为:

smallrobotarm,机器人,开源,机器人

若有匀速段,则Vm<=Vmm;若没有匀速段,则最大速度只能到Vmm,所以goStrightLine中取最大速度为Vmm和Vel0的较小值,将其重新赋给vel0。

已知最,高速度vel0,可以求出加速时间:

double tap = vel0/acc0-velini/acc0;

进而求出加速段总距离 

double lap = velini*tap+acc0*tap*tap/2.0;

进而求出匀速段距离

double lcsp = lmax-(vel0*vel0/2.0/acc0-velfin*velfin/2.0/acc0);

从而求出匀速段时间

double tcsp = (lcsp-lap)/vel0+tap;

 再求出减速度时间

double tcsp = (lcsp-lap)/vel0+tap;
  double tfin = vel0/acc0-velfin/acc0+tcsp;

 对于当前的时间t,通过判断t所在的区间,可以求出当前的距离,进而求出每个关节角度xx,再调用

电机执行函数goTrajectory(Xx)函数走到目的姿态去。

电机执行

电机执行函数执行函数很简单,就是根据当前电机的角度,若当前角度小于目标角度电机就发一个脉冲正走一步,若大于当前角度电机就发一个脉冲反走一步。其中dl1~dl6参数就是电机走一步对应的角度。文章来源地址https://www.toymoban.com/news/detail-592606.html

到了这里,关于开源机器人SmallRobotArm机器人源码解读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【对话机器人】开源机器人项目介绍

    目录 1. 闲聊机器人介绍 2. 青云客平台 3. 思知项目 闲聊机器人是一种基于人工智能和自然语言处理技术的智能对话系统,旨在模拟人类的语言交流能力,与用户进行自然、连贯的对话。闲聊机器人能够理解用户的问题或指令,通过分析和处理文本,生成符合语法和语义规则的

    2024年02月11日
    浏览(57)
  • 机器人制作开源方案 | 送餐机器人

    作者: 赖志彩、曹柳洲、王恩开、李雪儿、杨玉凯 单位: 华北科技学院 指导老师: 张伟杰、罗建国 1.1 项目目的       近年来,全国多地疫情频发,且其传染性极高,食品接触是传播途径之一。疫情防控需要大量人员投入,常常出现人力紧张的情况,物资配送已经成为一

    2024年02月12日
    浏览(49)
  • 论文解读 | 机器人路径跟踪的受控纯追踪法

     原创 | 文 BFT机器人 01  摘要 这篇文章是关于机器人路径跟踪的受控纯追踪算法的研究。文章介绍了传统的纯追踪算法以及相关变体,并提出了受控纯追踪算法作为本文的主要贡献。该算法旨在适应实际环境中的服务和工业移动机器人,提供方法来调整机器人的平移速度以适

    2024年02月08日
    浏览(92)
  • 深度解读:返利机器人自动赚佣金是怎么回事?

    大家好,我是微赚淘客系统的小编。在数字时代,返利机器人已经成为了省钱购物的热门选择。那么,返利机器人自动赚佣金是怎么回事呢?今天,我将为大家深度解读返利机器人的赚钱原理和实现方式。 首先,我们要了解返利机器人的赚钱方式。返利机器人的赚钱原理主要

    2024年01月21日
    浏览(40)
  • java呼叫中心-java语音机器人-java电销机器人源码-javaAI语音机器人源码-语音识别-ai机器人源码,语音机器人源码,电话机器人源码,电销机器人源码,ai电销机器人,语音机器人部署

    ai机器人源码,语音机器人源码,电话机器人源码,电销机器人源码,ai电销机器人,语音机器人部署,电话机器人系统部署,AI语音机器人,电销机器人部署,电销机器人系统部署,smartivr   沟通交流的老铁,可以点击该链接添加沟通:戳我戳我戳我 ·节点名称及AI话术     

    2024年04月15日
    浏览(65)
  • 机器人制作开源方案 | 自主消毒防疫机器人

    作者:陈毅豪 张植铜 罗郡 马鑫龙 王丹晶 单位:西安外事学院 指导老师:陈小虎 杜喜 1. 1 目的及意义       消毒是疫情防控工作中的重要一环,传统的消毒方式需要人工操作消毒设备,不仅工作量大,且一些消毒剂会对人体造成伤害,消毒机器人便成了代替人工的不二之

    2024年02月02日
    浏览(70)
  • 机器人制作开源方案 | 核酸检测辅助机器人

    作者: 周文亚、胡冲、王晓强、张娟 单位:北方民族大学 指导老师: 马行、穆春阳       新型冠状病毒肺炎全球流行已近三年,其变异毒株不断增强的传播力同时其症状不断变轻,其中无症状(怎么确认是否被感染)导致人们产生放轻松“躺平”还是严控疑虑的心理交织

    2024年02月02日
    浏览(53)
  • 机器人制作开源方案 | 智能落叶清扫机器人

    作者:李聪赛 马嘉骏 李佳豪 邵一鸣 池宏伟 单位:唐山学院 指导老师:袁娜       近年来,随着人工智能科学和计算机技术人工智能科学的飞速发展,智能机器人技术已成为当代机器人研究领域的热门话题。其中服务机器人开辟了机器人应用的新领域,服务机器人的出现有

    2024年02月04日
    浏览(70)
  • 机器人制作开源方案 | AI校园服务机器人

    作者:李强、李振宁、毛维雷、李文文、张奥 单位:山西能源学院 指导老师:姚志广、程晟       在这个科技飞速发展的时代,在工业智造、人工智能的飞速发展中,出现了越来越多的智能化机械装置,也有许多创新类的比赛,本作品基于探索者创新套件设计平台设计出一

    2024年01月20日
    浏览(56)
  • 机器人制作开源方案 | 家庭清扫拾物机器人

    作者: 罗诚、李旭洋、胡旭、符粒楷 单位: 南昌交通学院 人工智能学院 指导老师: 揭吁菡       在家庭中我们有时无法到一些低矮阴暗的地方进行探索,比如茶几下或者床底下,特别是在部分家庭中,如果没有及时对这些阴暗低矮的地方进行清扫,则会导致这些地方不干

    2024年02月07日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包