【仿真动画】ABB IRB 8700 机器人搬运(ruckig在线轨迹生成)动画欣赏

568e475f94af9ed203b811a7b939b815.png

场景

动画

一、IRB 8700简介

02e4641fe156b97a95ed1b8d564addc5.png

 二、动画脚本重点分析

2.1  sim.moveToPose

通过在两个 poses 之间执行插值,使用 Ruckig 在线轨迹生成器生成对象运动数据。该函数可以通过处理 4 个运动变量(x、y、z 和两个姿势之间的角度)或单个运动变量(t,需要指定一个度量来计算两个姿势之间的距离)来操作。该函数只能从线程中运行的脚本调用,因为这是一个阻塞操作

float[7]/float[12] endP/endM, float t = sim.moveToPose(int flags, 
                                                       float[7]/float[12] currentP/currentM, 
                                                       float[] maxVel, float[] maxAccel, 
                                                       float[] maxJerk, 
                                                       float[7]/float[12] targetP/targetM, 
                                                       func/string callback, auxData, 
                                                       float[4] metric = nil, 
                                                       float timeStep = 0)

Arguments 参数

  • flags: Ruckig flags. -1 for default flags.
    标志:Ruckig 标志。-1 表示默认标志。

  • currentP/currentM: the start pose, specified via a pose [x y z qx qy qz qw] or transformation matrix [Vx0 Vy0 Vz0 P0 Vx1 Vy1 Vz1 P1 Vx2 Vy2 Vz2 P2]
    currentP/currentM:起始姿势,通过姿势 [x y z qx qy qz qw] 或变换矩阵 [Vx0 Vy0 Vz0 P0 Vx1 Vy1 Vz1 P1 Vx2 Vy2 Vz2 P2] 指定

  • maxVel: the maximum allowed velocity. If metric is specified, then this is an array of size 1, otherwse an array of size 4. If sim.ruckig_minVel is specified in flags, then this array should contain twice as many values, first the values for the maximum velocity, then the values for the minimum velocity.
    maxVel:允许的最大速度。如果指定了 metric,则这是一个大小为 1 的数组,否则为大小为 4 的数组。如果在标志中指定了 sim.ruckig_minVel,则该数组应包含两倍的值,首先是最大速度的值,然后是最小速度值。

  • maxAccel: the maximum allowed acceleration. If metric is specified, then this is an array of size 1, otherwse an array of size 4. If sim.ruckig_minAccel is specified in flags, then this array should contain twice as many values, first the values for the maximum acceleration, then the values for the minimum acceleration.
    maxAccel:允许的最大加速度。如果指定了 metric,则这是一个大小为 1 的数组,否则为大小为 4 的数组。如果在标志中指定了 sim.ruckig_minAccel,则该数组应包含两倍的值,首先是最大加速度的值,然后是最小加速度值。

  • maxJerk: the maximum allowed jerk. If metric is specified, then this is an array of size 1, otherwse an array of size 4.
    maxJerk:允许的最大加加速度。如果指定了 metric,则这是一个大小为 1 的数组,否则为大小为 4 的数组。

  • targetP/targetM: the goal pose, specified via a pose [x y z qx qy qz qw] or transformation matrix [Vx0 Vy0 Vz0 P0 Vx1 Vy1 Vz1 P1 Vx2 Vy2 Vz2 P2]
    targetP/targetM:目标姿势,通过姿势 [x y z qx qy qz qw] 或变换矩阵 [Vx0 Vy0 Vz0 P0 Vx1 Vy1 Vz1 P1 Vx2 Vy2 Vz2 P2] 指定

  • callback: a callback function that will be called for each movement step. The arguments provided to the callback function are: currentPose/currentMatrix, currentVel, currentAccel, auxData.
    回调:每个移动步骤都会调用的回调函数。提供给回调函数的参数有:currentPose/currentMatrix、currentVel、currentAccel、auxData。

  • auxData: random data that will be forwarded to the callback function.
    auxData:将转发到回调函数的随机数据。

  • metric: an optional metric, used to compute a pose-pose distance. If metric is None/nil, the movement calculation happens in the 4-dimensional space (x,y,z,angle), otherwise it happens in the 1-dimensional space (t).
    metric:可选的度量,用于计算位姿-位姿距离。如果 metric 为 None/nil,则运动计算发生在 4 维空间 (x,y,z,angle) 中,否则发生在 1 维空间 (t) 中。

  • timeStep: the desired time step size. A value of 0 indicates that the current simulation time step will be used.
    timeStep:所需的时间步长。值 0 表示将使用当前模拟时间步长。

Return values 返回值

  • endP/endM: the pose at the end of the movement, specified via a pose [x y z qx qy qz qw] or transformation matrix [Vx0 Vy0 Vz0 P0 Vx1 Vy1 Vz1 P1 Vx2 Vy2 Vz2 P2]
    endP/endM:运动结束时的位姿,通过位姿 [x y z qx qy qz qw] 或变换矩阵 [Vx0 Vy0 Vz0 P0 Vx1 Vy1 Vz1 P1 Vx2 Vy2 Vz2 P2] 指定

  • t: the leftover time in current simulation step, i.e. the remaining time that was not used for movement.
    t:当前模拟步骤的剩余时间,即未用于运动的剩余时间。

2.2 逆运动学求解

建立4个机器人运动学的IK组,作为auxData成员传递给自定义函数moveToPose,在自定义函数中传递给函数 sim.moveToPose的回调函数,回调函数中调用simIK.handleGroup处理所有逆运动学组的求解并设置{syncWorlds=true}将IK组的处理结果同步到仿真场景。以下依次为ik组1-4.

dbca84b8d7b9a3bd2e134cca99935bee.png

5ab4d60b3318018f33e6584f0e9ae105.jpeg

8c7cf025b9fc67a89a0d4a49cf142021.jpeg

3f3a3490a3f62659d9ed9a069c69da32.jpeg

5439d7e7226202268763d7c4a9f54673.png

2.3 吸盘仿真

初始化函数中设置了吸盘是否为无限吸力、设置了最大拉力、最大剪切力,最大剥离扭矩。

传感函数中监控模型的自定义数据块吸盘状态:吸合-激活或释放-非激活,进行不同处理。当非激活时,重置dummy l 与l2重合,父对象为吸盘。当激活时,判断父对象是否为吸盘,如果为吸盘说明没有吸物体,此时通过接近传感器获取要吸合的物体,将dummy l绑定到物体上,并关联l 和l2 ;如果已经吸合物体,读取力传感器,判断是否需要有条件的释放物体,比如超出最大拉力、超出最大剪切力,任意方向的扭矩超过最大剥离扭矩。满足释放条件,就地释放物体。 同时在传感函数中实时检测仿真状态是否为“正在停止的最后一步”,如果是,则重置l与l2重合,父对象恢复为吸盘。

2.4 机器人Tip的速度曲线和加速度曲线

因为Tip的速度可直接获得,可直接用于绘制速度曲线图。加速度曲线图六需要通过 sim.setGraphStreamTransformation设置 sim.stream_transf_derivative,此时直接将速度值传递给加速度曲线即可。

参考网址:

https://new.abb.com/products/robotics/zh/robots/articulated-robots/irb-8700

https://search.abb.com/library/Download.aspx?DocumentID=3HAC052852-001&LanguageCode=en&DocumentPartId=&Action=Launch

https://library.e.abb.com/public/8b7f0d10fde0465c817d18e2e7664d37/IRB8700_datasheet_CN%20Rev%20D.pdf



作者陈晓永:智能装备专业高级工程师,软件工程师。机器人自动化产线仿真动画制作

The End

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Transformer原理详解

前言:好久没有用了,我已经快忘记了自己还有一个CSDN账号了。 在某位不知名好友的提醒下,终于拾起来了,自己也从大二转变成了研二。 目前研究方向主要为:时间序列预测,自然语言处理,智慧医疗 欢迎…

git 指定时间代码统计

指定时间代码统计 用法 13 - 17 号 代码情况 近一周 git log --since2023-11-13 00:00:00 --until2023-11-17 23:00:00 --prettytformat: --numstat | awk { add $1; subs $2; loc $1 - $2 } END { printf "added lines: %s, removed lines: %s,total lines: %s\n&…

map和set的简易封装(纯代码)

RBTree.h #pragma once#include<iostream> #include<vector> using namespace std;enum colar { red,black };template<class T>//有效参数就一个 struct RBTreeNode {RBTreeNode(const T& data):_left(nullptr), _right(nullptr), _parent(nullptr)…

Vue bus事件总线的原理与使用

这里写自定义目录标题 一、 Vue Bus 总线原理二、Vue bus的使用1、创建总线&#xff1a; 在 Vue 应用中&#xff0c;可以创建一个 Vue 实例作为总线&#xff0c;用于管理事件。2、事件的发布与订阅&#xff1a; 组件通过订阅事件来监听总线上的消息&#xff0c;而其他组件则通过…

(免费)双相情感障碍筛查MDQ 在线测试双向情感障碍

MDQ用于筛查双相障碍&#xff0c;主要包含13个关于双相障碍症状的是非问题&#xff0c;当前测试采用的量表为2010年杨海晨博士翻译版。该量表为目前世界范围内最常用的双相障碍筛查量表&#xff0c;目前在精神科门诊最为常用的量表之一。 双向情感障碍筛查量表&#xff0c;也叫…

Linux(多用户下)查看cuda、cudnn版本、查看已经安装的cuda版本相关命令

查看已经安装的CUDA多个版本 linux 中cuda默认安装在/usr/local目录中&#xff1a; -可以使用命令&#xff1a; ls -l /usr/local | grep cuda查看该目录下有哪些cuda版本&#xff1a; 如果输出&#xff1a; lrwxrwxrwx 1 root root 21 Dec 17 2021 cuda -> /usr/loc…

监控直流防雷浪涌保护器综合方案

监控系统是一种广泛应用于安防、交通、工业、军事等领域的信息系统&#xff0c;它通过摄像机、传输线路、监控中心等设备&#xff0c;实现对目标区域的实时监视和控制。然而&#xff0c;监控系统也面临着雷电的威胁&#xff0c;雷电可能通过直击雷、感应雷、雷电波侵入等途径&a…

React实战演练项⽬一需求分析及vite_react搭建项目

React实战演练项⽬一需求分析及项目初始化 需求分析 刚学完React,开始找项目进行上手练习&#xff01; 页面组件拆分&#xff1a; 头部&#xff1a;导航tab、搜索框、登录注册 中间&#xff1a;分类导航、轮播图、新人福利、高单价产品导航 课程分类列表、底部内容、登陆提…

当攻防演练已成常态,企业应该相信西医还是老中医?

在面对疾病时&#xff0c;很多人常常会犹豫不决&#xff0c;不知道应该选择中医还是西医进行治疗。与疾病斗争的过程也是一场“战斗”&#xff0c;需要选择合适的“武器”和策略。有些人认为西医疗效快&#xff0c;能够迅速缓解症状&#xff1b;而另一些人则认为中医治疗更根本…

m1 rvm install 3.0.0 Error running ‘__rvm_make -j8‘

在使用M1 在安装cocopods 前时&#xff0c;安装 rvm install 3.0.0遇到 rvm install 3.0.0 Error running __rvm_make -j8 备注: 该图片是借用其他博客图片&#xff0c;因为我的环境解决完没有保留之前错误信息。 解决方法如下&#xff1a; 1. brew uninstall --ignore-depe…

泛型编程 -- 模板详解

一、模板 在没有模板之前&#xff0c;如果我们写一个swap()两数交换函数&#xff0c;因为我们要支持 int 与int 交换 、double 与 double 交换等等情况&#xff0c;所以要实现swap()函数的多个重载&#xff0c;显得很繁琐&#xff0c;于是就引入了模板。 模板就是在需要模板的地…

idea一键打包docker镜像并推送远程harbor仓库的方法(包含spotify和fabric8两种方法)--全网唯一正确,秒杀99%水文

我看了很多关于idea一键打包docker镜像并推送harbor仓库的文章&#xff0c;不论国内国外的&#xff0c;基本上99%都是瞎写的&#xff0c; 这些人不清楚打包插件原理&#xff0c;然后就是复制粘贴一大篇&#xff0c;写了一堆垃圾&#xff0c;然后别人拿来也不能用。 然后这篇文…

MySQL表操作

1.创建表 创建一个表 表的字符集为utf8&#xff0c;校验规则为utf8_bin 存储引擎为MYisam 2.查看表结构 desc 表名&#xff1b; 3.查看表内容 select * from 表名&#xff1b; 4.查看数据库有几个表 show tables; 附&#xff1a;查看创建表时的语句 show create table 表名…

怎么去掉邮件内容中的回车符

上图是Outlook 截图&#xff0c;可见1指向的总有回车符&#xff1b; 故障原因&#xff1a; 不小心误按了箭头4这个选项&#xff1b; 解决方法&#xff1a; 点击2箭头确保tab展开&#xff1b; 点击3以找到箭头4. 取消勾选或者多次点击&#xff0c;即可解决。

web3资讯及远程工作

各位如果想了解区块链相关的消息可以通过如下网址了解&#xff0c;里面还会有相关职位招聘&#xff08;包括远程工作&#xff09;&#xff0c;还可以在里面进行发帖&#xff0c;进入即可获得1000积分&#xff0c;后期可以兑换一些礼品Cryptosquare

Java简介、基本语法

一、Java简介&#xff1a; Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。 Java主要的特性&#xff1a; 1、Java语言是简单的的&#xff1a; Java语言的语法与C、C语言接近。Java丢弃了C中的一些特性&#xff0c;如操…

android 数独小游戏 经典数独·休闲益智

一款经典数独训练app 标题资源下载 &#xff08;0积分&#xff09;https://download.csdn.net/download/qq_38355313/88544810 首页页面&#xff1a; 1.包含有简单、普通、困难、大师四种难度的数独挑战供选择&#xff1b; 记录页面&#xff1a; 1.记录用户训练过的数独信息&…

HT8313 D/AB切换 音频功率放大器

HT8313具有AB类和D类的自Y切换功能&#xff0c;在受到D类功放EMI干扰困扰时&#xff0c;可随时切换至AB类音频功放模式&#xff08;此时电荷泵升压功能关闭&#xff09;。 HT8313内部固定28dB增益&#xff0c;内置的关断功能使待机电流Z小化&#xff0c;还集成了输出端过流保护…

“说”出一个UI原型稿:来自北邮课堂的一款文心应用

在2023年秋季学期&#xff0c;北京邮电大学联合百度飞桨&#xff0c;设计了“文心一言X产品设计”的集训营主题&#xff0c;并融入到了“移动交互设计”的课程中。在完成结业作业的过程中&#xff0c;同学们将基于文心一言开展产品原型设计与初步开发。 众所周知&#xff0c;产…

容性负载箱与电容器的关系是什么?

容性负载箱用于测试电容器性能的设备&#xff0c;电容器是储存电能的元件&#xff0c;具有储存和释放电荷的能力。容性负载箱通过对电容器施加不同的负载&#xff0c;可以测量电容器的容量、电压响应、损耗等参数。 容性负载箱与电容器的关系主要体现在以下几个方面&#xff1a…