博舍

如何搭建一个机器人控制系统 机器人控制程序开发

如何搭建一个机器人控制系统

前言

这里着重从科研的角度来讲一下机器人系统该如何搭建,适合机器人专业、机器人爱好者参考。

机器人种类繁多,这里的机器人系统着重针对足式机器人、仿生机器人、外骨骼机器人、关节型机器人等伺服机构偏多、控制精度要求较高、市面上又无现成商品化控制系统硬件的机器人系统。无人机、无人车领域建议去专业论坛求索,本文仅供参考。

机器人控制系统更新迭代较快,这里给出2019年世界主流控制系统设计理念,具体参考了ICRA2019,世界著名实验室等资料。

本文不具体给出技术细节,只给出设计理念、产品型号选择范畴等,因为具体的设计是要根据具体的机器人来定的。传感器、手控器等外设本文也不涉及。

本文着重设计理念理解,帮助工程实用,大白话讲述,不甚严谨,批判家手下留情。

系统设计

整个机器人控制系统涉及三个方面:控制系统硬件、控制系统软件、控制系统通信。

控制系统硬件即控制算法的实现平台,例如单片机、PC机、工控机等。

控制系统软件就是控制算法在哪个IDE(集成开发环境)下编写,编写的程序在哪个操作系统(单片机可以没有操作系统)下运行。

控制系统通信是控制板卡和其他各个部件的信息传输,如传感器的数据需要传给控制器,控制器的指令需要传给执行器等。

上述三个方面的关系是,算法程序在软件里写,写完之后在硬件里跑,跑的过程中算法需要的数据由通信来给,指令也由通信下达给执行器。

2.1控制系统硬件

控制系统硬件包括两大类:嵌入式微处理器、嵌入式计算机。

嵌入式微处理器包括单片机、ARM、DSP、FPGA等;嵌入式计算机包括微型电脑、工控机、PC104小板机等。需要注意的是,这里二者的界限并不是那么明显,比如工控机所用的CPU也可能是ARM构架的,但目前市面上更多的是intel和AMD公司生产的x86构架的CPU(我们的个人电脑,笔记本里的什么酷睿i5、i7CPU都是基于x86构架的)。

嵌入式微处理器硬件很好买,而且也便宜,如果自己不会画板子的话,直接买现成的开发板应该能够满足需求。

微型电脑其实和我们的个人电脑差不多,只不过尺寸更小,便于安装到机器人上,像intel的nuc就比较火。淘宝上可以很方便的采购微型电脑(微型主机/迷你主机)。

工控机就是工业控制计算机,其实和我们的个人电脑也差不多,只不过用在工业上需要抗摔、防尘、以年为单位连轴转尽量不关机、可靠性更高。国外的工控机如倍福,好但贵。国内的工控机研华的也不错。

PC104小板机可以当作是一个工控机,它采用的是PC/104总线结构,芯片一般也是x86的芯片。优点是需要扩展的话直接叠罗汉式插板就行。

其实控制系统硬件很好理解,只要具备计算能力就可以。也就是说,如果是拖线式控制机器人的话,用自己的电脑也可以胜任,但个人电脑主要用来看剧玩游戏,毕竟不是很对口,而且还得把win10系统换掉才行(坚持用win10的话需要一些额外操作)。

目前主流都是用嵌入式计算机(EmbededComputer)中的微型电脑+嵌入式微处理器(EmbeddedMicroController),微型电脑负责主控,嵌入式微处理器负责底下的小模块。如果机器人系统比较小,直接用嵌入式微处理器也可以。如果有视觉处理需求,可以额外再加一个微型电脑,如英伟达的TX2.

2.2控制系统软件

      2.2.1控制系统实时操作系统(RTOS,RealTimeOperationSystem)

实时操作系统能够保证控制系统严格按周期进行运行,前言中所涉及的机器人需要有较高的实时性要求,主控制程序1kHz起步,所以这里讲述的RTOS的实时性也是毫秒级别的。我们用的win7,win10,linux都不是RTOS(淘宝上很多工控机预装的是win7的系统,那个的实时性满足不了上述机器人的要求,它们主要是用来做过程控制、监控设备、人机交互用的,比如可以用在取款机上,取款机的响应速度体验起来感觉是秒级的,还有的用在KTV点歌机上,点歌不会要求毫秒级的响应速度的)。

一般嵌入式微处理器可以不用安装操作系统,直接裸机跑。如果要装的话可以用ucos、freertos等。

微型电脑上可安装的RTOS有WinCE、VxWorks、QNX、嵌入式Linux等,不建议装winxp、win7、win10系统,如果实在想在这些系统下控制机器人,我所知道的有两个方法,但没去考证可行性:一是CPU如果是多核的话,锁住一个核专门用作实时控制;二是通过接口再拓展如FPGA等板子,专门用作实时控制。随着现在ROS的流行,越来越多的团队直接装的是非实时的UbuntuLinux系统,外加硬实时补丁CONFIG_PREEMPT_RTpatch,这样也可以,而且看样子是趋势。

一些工控机、小板机的RTOS大体和微型电脑上的类似,不再赘述。

      2.2.2控制系统集成开发环境IDE(IntegratedDevelopmentEnvironment)

一般IDE是安装到我们的工作计算机/笔记本上的,写好程序,编译好,然后再下载到控制硬件(嵌入式微处理器、嵌入式电脑)里,这样用着方便。也有的直接在RTOS下的IDE中直接编写程序。

嵌入式微处理器的IDE有Keil、IAR等,选择自己顺手的即可。

嵌入式电脑的IDE就多了,如windows下的(这里的windows系统是个人工作电脑上的系统,不是控制硬件上的RTOS)VS、QT、QNX之类,Linux下ROS亦可。

通信:现场总线和工业实时以太网

主控器有了,机器人系统中还有各种传感器、执行器、监控器等,它们的信息需要相互传输,而且一些实时运行的实验数据也需要保存下来。

现在主流的通信方式有两种,一种是基于CAN总线(可选用CANOpen协议),另一种是基于工业实时以太网的EtherCAT协议,二者的物理接口不一样,CAN总线的接口有的是两根线(凤尾插头那种),有的用DB9接口。EtherCAT接口就是我们常用的RJ45网口,注意EtherCAT的主站,也就是主控器的接口和我们平时用的网口一样,它们是兼容的,但是从站,即传感器、执行器这边,接口也是一样的网口,但是从站接口硬件需要支持EtherCAT协议(需要多加一个芯片)。

一个概要图

建议

建议追踪世界大牛实验室:MITBiomimeticRoboticsLab、苏黎世联邦理工AutonomousSystemsLab、意大利理工DynamicLeggedSystemslab等。

工业机器人控制器

ROS机器人操作系统底层原理及代码剖析

CSDN-Ada助手:非常感谢CSDN博主分享的关于ROS机器人操作系统底层原理及代码剖析的文章,对于想深入学习机器人操作系统的读者来说,这篇博客无疑是一份宝贵的资料。我认为,下一篇博客可以针对ROS中的机器人控制算法进行深入探讨,例如PID控制算法在ROS中的应用,或者运用深度学习技术来进行机器人导航等。这样的技术文章对其他用户的学习和研究都将会有非常大的帮助。相信CSDN博主会在未来的文章中继续分享更多优质的技术内容,吸引更多读者前来学习交流。为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall)诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。

KEBA机器人控制器简介

Fut.:兄弟,找到了吗,找点资料是真难啊

KEBA机器人控制器简介

Fut.:您好,请问您后面还在弄keba吗

基于Frenet坐标系的无人车轨迹规划详解与实现

qq_38281850:ROS的代码能分享吗

ubuntu中用脚本同时启动多个终端窗口

奶香臭豆腐:博主您好!我是直接复制您的代码运行的。但是终端显示为command1:未找到命令

详解工业机器人控制系统架构

1.2移动机器人类

移动机器人的控制器属于较新的方向,工业移动机器人有AGV、无人驾驶工程机械等形式,控制系统底层方案如下:

1.3对比

机械臂对精度和运动稳定性的要求较高,因此计算量大、周期短,比移动机器人一般要高1到2个量级。移动机器人一般对同步精度要求不高,其配置相对较低。

机械臂一般工作于固定的区域,其控制器通常放置于机箱内,因此防护等级不高,一般是IP20。

移动机器人由于需要经常运动,尤其是室外工程机械,要考虑防水防尘,其防护等级较高,一般是IP67。

2CoDeSys介绍

2.1CoDeSys的组成

你会发现,很多的机器人控制软件都是借助CoDeSys实现的,那么什么是CoDeSys呢?

CoDeSys是一款付费的软PLC开发软件,简单来说,它包括两部分:DevelopmentSystem和RuntimeSystem。DevelopmentSystem就是用来编程的软件界面(就像VisualStudio、Eclipse等软件,也可以称为IDE),设计、调试、编译PLC程序都在IDE中进行,这部分是用户经常打交道的;

PLC程序写好了以后,就要把它转移到硬件设备中运行。可是这时生成的PLC程序自己是无法运行的,它还要在一定的软件环境中才能工作,这个环境就是RuntimeSystem,这部分是用户看不到的。

二者安装的位置通常不同,IDE一般安装在开发电脑上,RuntimeSystem则位于起控制作用的硬件设备上,二者一般使用网线连接,程序通过网线下载到Runtime中运行。

CoDeSys在国内知名度不高,但是在欧洲久负盛名,尤其在工业控制领域。我们上面提到的很多机器人公司都使用了它的产品,例如KEBA、倍福、固高,还有几乎所有的移动机器人控制器厂家。

设计CoDeSys的3S公司只卖软件,不卖硬件。硬件电路需要由用户自己设计,3S公司负责将RuntimeSystem移植到客户的硬件上。RuntimeSystem可以裸跑在硬件上,但一般是运行在操作系统上,配置操作系统也是客户的工作。

如果客户要求,CoDeSys的IDE可以定制,换成客户的logo和外观,这就是为什么你会发现不同厂家的开发平台长得不一样,但风格又比较相似。

当然,用户也可以使用其它IDE,例如倍福就使用了微软的VisualStudio,而背后的编译器等内核以及函数库仍然采用CoDeSys的方案。

CoDeSys的Runtime具有强大的适应性,支持绝大多数的操作系统和硬件芯片架构。

2.2CoDeSysRuntime原理

CoDeSys的IDE部分是免费的,你可以从其官网下载体验体验。真正收费的是运行系统RuntimeSystem。

CoDeSys在设计之初就将功能划分为若干组件模块,例如总线协议栈、可视化界面、运动控制、安全控制等等,用户可以像搭积木一样选购必需的模块搭建自己的系统,最后形成一个定制化的控制软件平台。

一些初次接触软PLC的用户可能对这部分感到陌生,但其实这种设计方式非常普遍。举几个例子,MATLABSimulink的实时工具箱(Real-Time)就是这样的工作方式,用户在Simulink的图形界面里通过拖拽设计控制程序,然后下载到真实的硬件中跑,可以在这里了解。

还有像倍福也是这样的使用方式,用户在TwinCATIDE里进行编程,然后下载到倍福的控制器中,控制器里面其实已经预装了一个Runtime。西门子的STEP7也是一款IDE,它的PLC中也存在一个配套的Runtime。

用户编写的PLC程序就像我们电脑里的应用程序,它运行在RuntimeSystem上,而RuntimeSystem又运行在操作系统之上。

RuntimeSystem位于应用程序和操作系统之间。所以可以被称为中间件(Middleware)。在机器人软件里面,处于同样地位的还有ROS、OROCOS(Real-TimeToolkit)等等。

机器人的控制,像数控机床一样,对实时性有要求,因此我们选择的操作系统最好是实时操作系统(RTOS)。遗憾的是,我们经常用的操作系统都不是实时的,例如Windows和Linux。但幸运的是,有人对它们进行了改造,也就是加入实时补丁。

常用的实时操作系统有:VxWorks、QNX、WindowsRTX、Xenomai、RTLinux、LinuxRTAI、WinCE、μC/OS、SylixOs等等。考虑到Windows和Linux这两款操作系统的用户较多,CoDeSys推出了相应的实时补丁(RTE),为用户免去了改造的烦恼。

2.3CoDeSys的缺点

CoDeSys给我们开发控制器带来了便利,省去了从零开始的麻烦,但是依靠CoDeSys这类商业软件开发自己的控制器产品也存在不少的缺点:

1)底层算法不公开

CoDeSys集成的运动控制组件、总线协议栈都是封装好的,用户无法了解其内部细节,也无法针对自己的具体需求进行定制优化,只能简单地调用。用户只能依附于CoDeSys平台,难以形成自己的核心技术。

2)功能有限,难以扩展

现在以机器视觉、人工智能、自动驾驶等为代表的新技术突飞猛进,而工业控制上的很多技术仍然停留在20年前。以移动机器人中的导航场景为例,基于视觉或者激光的导航方法需要采集大量的数据并对其进行处理,其中涉及相当多的矩阵计算。

而现在PLC只能进行落后的一维数字计算,难以实现复杂的算法。与人工智能圈子喜欢开源的风格正好相反,工业控制圈子相互封闭,谁都不肯开放自家的函数库,开源函数库极少(OSCAT),就连最基本的滤波算法、矩阵计算都要自己从头开始写。而且,国际标准提供的基本函数太过有限,完全无法适应新的场景,急需扩展。

3)难以更新

由于完全依赖CoDeSys,客户自己产品硬件的升级换代需要重新定制移植,导致成本增加。

3开源方案

目前存在一些开源的控制系统方案,例如Beremiz、Orocos、OpenPLC、OpenRTM、ORCA。

开发机器人控制器是个繁重的工作,要明确一系列性能要求,首先是实时性。

实时性对于工业机器人来说一般是必须的,对于服务或娱乐机器人则未必。一般人很容易错把“实时性”理解为处理或者响应速度快,但是其实“实时性”表示时间上的“确定性”,例如实时操作系统(RTOS)中的中断响应或者进程切换的延迟时间一定是在一个时间范围内。

我们常用的操作系统(Windows、Linux)都不是实时操作系统,因为它们设计的初衷是吞吐量,不能保证每个事件都在一定范围内得到处理。再比如,标准以太网的传输速度比实时工业以太网快多了,但是它也却不是实时的,因为它同样不能保证数据在给定的时间内完成传输。

理解实时性不太难,可是机器人哪些的任务需要实时运行呢?如何根据机器人的性能要求确定程序运行的时间间隔呢(是1ms还是10ms)?实时性取决于硬件还是软件呢?

如何根据实时性选择具体的软硬件呢(该选择ARM还是X86、LinuxRTAI还是VxWorks)?网上缺少这方面的深入讨论,各大机器人厂家也不会公开自己的测试和试验结果,似乎这方面主要依靠经验和试错。

这里我也只能提供几个指标,目前工业机械臂的控制周期是1ms左右,性能较高的伺服驱动器位置环的控制周期可以达到125[MathProcessingError]musμs。

PLCopen定义了伺服和运动控制的一些标准,包括编程语言、运动控制基础函数块(FunctionBlock)、输入输出接口的参数等[MathProcessingError]^{[3]}

[3]具体的实现代码细节,这个是由各个厂家提供的。

更多工业机器人信息,尽在指南车APP~返回搜狐,查看更多

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇