×

机器人运动控制系统的选型资料下载

消耗积分:3 | 格式:pdf | 大小:268.45KB | 2021-04-12

分享资料个

作者:Bil Schweber,贸泽电子 现在复杂的机器人手臂的控制,无论它们的大小与功率,都需要多轴同步管理才能实现动作控制。现代电子器件——电动机、电源切换器件(MOSFET、IGBT)、设备驱动、控制系统(现在主要是数字化、之前是模拟控制)、反馈传感器——使得精确的动作控制相比几年前显得更加简单(如图1所示)。然而与此同时对于系统性能需要也明显增加了,所以现在整个项目的搭建也是相当的困难。 图1:机器人基础的动作控制系统,包括算法执行功能、电动机驱动、电源设备、反馈环节;机械传动、电动机和传感器(在大多数情况下);关键节点设置电压和电流测量和控制(来源:NI) 无论怎样有一个实际情况是不可避免的:机器人是一个大型的机械系统,因此这部分实际系统必须是控制回路的重要组成部分。这就涉及到齿轮反弹、机械误差、震动、电动机性能、旋转惯性、动量、机械结构的弯曲程度、载荷变化等等。因此选择哪种类型的电动机非常的重要——对于中/低功率应用场景,通常我们会在无刷直流电动机和步进电动机之间选择。 另一个重要的决定则是传感器反馈。大多数机器人应用系统采用某种类型的反馈传感器来准确测量末端执行器的行程、加速度和加速度(重申一下:速度是行程对时间的导数,加速度是速度对时间的导数)。反馈传感器可以采用霍尔效应传感器、自动同步器或者光编码器。由于上文提到的机械问题,尽管我们很容易的将编码器安装到电动机上,对于应用准确性的要求它可能也不能够提供末端执行器精确的数据。因此传感器需要安装在距离负载端更近的位置。 一些运动控制应用没有传感器,这会降低成本和机械复杂度。不采用传感器反馈,无传感器的面向应用控制(FOC,也称为矢量控制)利用的是电动机每相绕组电压和电流的精确同步的数据;然后FOC采用复杂的框架参考进行实时转换和矩阵计算来确定电动机的转动位置。省去传感器降低了硬件成本,但是需要更强的计算能力和更加复杂的编程设计。很多机器人设计还是倾向于使用传感器,因为相对于直接的传感器读数,FOC不能够提供相同水平的自信度、可行度和可靠性。 理解基础的机器人系统配置 虽然公众倾向于将“机器人”这个名词与移动的、生活辅助或助手联系起来,在工业领域大部分机器人系统都是静止的,采用各种各样的机械臂,通过之前的配置完成各种任务。最常见的设计如下: · 笛卡尔机器人,设置三个线性的运动轴,分别分布在X、Y、Z平面上(如图2所示)。这个设计主要用于挑选和放置机器、无缝应用和基础的组装。 图2:笛卡尔机器人是最容易理解和控制的,分别等价为X、Y、Z平面的控制(来源:RobotPark) · 柱型机器人,所有运动都限制的一个圆形的区域内。它结合了Y平面的线性运动、Z平面的线性运动和围绕Z轴的旋转运动(如图3所示)。这类机器人用于装配、工具处理和点焊操作。 图3:柱型机器人有两个线性运动轴和一个旋转轴(来源:RobotPark) · 球形或极性机器人结合了两个旋转节点和一个线性节点,机械臂通过反肘关节与基座连接(如图4所示)。运动的定义则是通过一个极坐标系统,同样限制在一个球形区域内。主要应用在焊接、铸造和工具处理等场景中。 图4:球形或极性机器人结合了两个旋转轴和一个线性轴,它需要根据参考系进行大量的计算密集型转换操作(来源:RobotPark) 这里提到的方法具有三个方向的自由度,使用了线性和旋转的结合,然而一些应用场景仅需要一个或者两个方向的自动度。更高级的机械臂或者铰接式机器人集成了额外的线性和旋转运动,具有像人一样的灵活性(如图5所示),一些更高级的机械臂能够提供六、八甚至更多方向的自由度。 图5:铰接式机器人手臂集成了多个旋转和线性运动模式,具有多个自由度,但是也需要在制动器和手臂之间进行仔细的协调。 其他一些设计适用不同的线性和旋转运动的组合用于特定的应用场景,比如平行四边形的实现方案,用于精确和快速地在短距离内实现移动,例如拾取和放置小型组件。随着自由度的提升,对每个方向自由度快速、流畅、准确和同步控制的要求也呈指数级增长。 就轨迹配置文件而言 机器人的运动控制方法看似非常简单:有驱动器的支持末端执行器快速准确的到达指定的位置,当然也会涉及一些调整,和所有工程决策一样,取决于给定应用的最优结果相关的优先级设置。 举个例子,如果结果偏离过大或者有可能出现碰撞,我们设置加速和减速过快来快速达到更高的运动速度,这样操作能够接收吗?对于速度精确度控制值得吗,要达到什么程度?加速度、速度和行程的选择与从位置A到位置B期望的转换有什么关联?在某些特殊应用中定义“最优”的优先级和参数的标准是什么? 机器人运动控制和其它运动控制方面的专家已经制定了标准的轨迹配置规范,对于给定应用能够提供各种方法来实现期望的平衡方案。所有选型都涉及到根据现在的情形和反馈信号进行实时的计算,但是某些应用可能会需要更重要、更高分辨率计算的需求。这些配置类型包括: · 简单的梯形配置,电动机以固定的加速度从零加速到期望的速度,并进行保持,然后以固定的加速度减速到零,到达指定的位置(图6)。虽然较大的加速度能够加速整个过程,但是整个过程可能不够平缓,出现突然的变化,我们成为骤停或者骤起,这样反而会造成不准确和超量。 图6:最简单的运动轨迹配置方式就是梯形模式,分别设置常量加速度、常量速度、常量减速度,从起始点和目标点之间的运动控制是均匀的(来源:Performance Motion Devices) · S曲线型,这种方式比梯形模式更常见,加速度从零不断上升,达到指定速度后不断下降(图7)。到达指定位置后,减速度逐渐上升然后在目标点附近减为零。实际上S型曲线可以划分为七个不同的阶段,与梯形模式的三个阶段相对比。 图7:相比梯形模式S曲线型控制更加的复杂,但是在转换的实际路径过程中不会出现突然的抖动(加速的突然变化)(来源:Performance Motion Devices) ·波浪型运动控制,用户设置一系列所要达到的位置点,运动控制器会平滑的通过所有这些点(图8)。这种模式在灵活性和控制上都具有最大的优越性,对于高级的运行控制场景非常有必要。实现平滑的曲线控制和计算过程都非常的复杂,尽管需要非常大的计算量,但是由于舍入或截断误差需要在保证分辨率的情况下实现。 图8:波浪型运动控制允许用户在起始点和目标点之间定义一系列的位置标记点,控制器需要控制末端执行器平滑的通过这些点(来源:NI) 当然还有其他的运动控制配置模型,这与专用应用场景或者行业有关,无论哪种控制模式,首先要先明确需求然后是如何实现。众所周知高效的PID闭环控制算法是驱动电动机和末端执行器最常用的方法,具有足够高的准确度和精密度(参考1)。 单个轴的高效控制是非常好实现的,但是机器人的控制则变得非常的复杂,因为他需要扩展两个、三个甚至更多的电动机以及不同的自由度,当其中一个独立组件的状态变化时,我们需要及时的同步和协调其他的组件,实现我们所期望的功能和性能要求。 确定的标准vs自定义运动控制应用 对于标准的运动控制应用,采用专用固定功能的嵌入式IC能够大大简化系统设计,并且让产品快速面市。相反,对于非标准的应用,运动控制模型需要我们自定义,如果各个运动轴之间的关联比较复杂,必须适配异常或独特的事件,那么设计团队就需要采用全可编程的处理器。而且还需要处理器集成数字信号处理(DSP)功能来满足计算密集型任务需求或者采用可编程逻辑器件(FPGA)。当我们考虑可编程器件时,除了IC器件本身的硬件功能外,供应商、第三方工具、可用的软件模块都是我们做出选择是需要考虑的重要因素。 需要注意的是控制器与电动机驱动器是不同的,一般采用MOSFET/IGBT驱动/器件来控制电动机的功率,主要是两个原因。首先这些功率器件需要能够驱动电动机,独立于控制器。其次基于MOSFET的高密度互补处理技术用于数字控制器与功率器件的处理过程完全不同。对于小型的电动机,我们可以将控制器、驱动器和电源器件集成在一起。尽管存在着根本上的差异,“控制器”通常指具备电源功能的模块,因此一般会在关键词搜索时造成困扰。 一些运动控制IC的实例展示了这些器件的使用范围,基本的单功能器件如Toshiba TB6560AFTG是一款PWM斩波型步进电动机控制器和驱动IC,可用于双极步进电动机的正弦信号输入,实现微调(图9)。采用QFN(方形扁平无引脚)封装,物理尺寸7x7mm,采用一个时钟信号就可以提供高性能的正向和反向双极型步进电机的驱动,并且能够给电动机绕组输送2.5A的电流。 图9:Toshiba TB6560AFTG是一款步进电动机控制器,具有微调功能,集成2.5A MOSFET功率模块,能够直接驱动电动机绕组。(来源:Toshiba公司) 即使在微调模式下,步进电动机的一个问题就是在启动和停止时它的输出存在振动,尽管在很多应用中这不算是个问题,但是如果我们处理像玻璃器皿这样的精致物品时就是一个大问题,还有可能导致整个系统的振动。因此,TB6560AFTG允许用户调整驱动电流的上升/下降,并且建立完善的电流上升/下降的转换,从而将振动减小到最低(图10)。 图10:在具体应用中,Toshiba TB6560AFTG需要很少的外部组件,并且接收系统处理器的高级指令,最后转换为详细的步进控制信号(来源:Toshiba公司) 机器人运动控制系统的最顶端是一些高级的单元,例如TI C2000微控制器系列。C2000包括多个系列的器件,分别集成不同的功能,如基础的处理功能、数字计算能力、输入/输出接口的数量和类型以及管家功能如定时器、看门狗和脉冲宽度调制发生器。 举个例子,C2000分组下的TMS320 Delfino系列处理器(图11)提供原生浮点支持,消除了定点开发的挑战,当然它也支持带有IQMath虚拟浮点引擎的原生器件之间的定点和浮点代码的移植。这就系统中就不需要设计第二个集成单核或者双核的处理器了,同样能够提供高效的数字信号处理的算数任务以及微控制器的系统控制任务。它们同样也集成了三角数学单元(TMU)加速器,这样就加速了很多控制回路中常见三角算法的执行速度,比如转矩闭环算法。 图11:TI C2000系列器件包括多个子系列,每个子系列有包含多个不同规格的器件;Delfino分组就包括一个强大的处理器和嵌入式协处理器,内部集成了很多基于硬件的功能,很大程度上降低了编程难度,加速了执行速度。(来源:TI) 支持这些处理器的是开发工具和套件,比如 LAUNCHXL-F28377S C2000 Delfino LaunchPad就是基于TMS320C28x 32位CPU处理器(图12)。这款套件还集成了F28377S微控制器单元(MCU),能提供400MIPS的系统性能,介于200MHz C28x中央处理单元和200MHz实时控制协处理器之间。这款微控制器还包含1MB板载FLASH以及丰富的外围设备比如16位/12位模数转换器、比较器、12位数模转换器、正弦滤波器、高分辨率脉宽调制器、增强的捕获模块、增强的积分编码模块、CAN总线网络模块等等。 图12:一些工具如TI公司推出的LaunchPad对于开发、集成和评估基于C2000 Dlifino系列处理器应用的硬件和软件功能至关重要(来源:TI)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'机器人运动控制系统的选型资料下载',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);