百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

再聊机器人设计:如何加速开发流程?

haoteby 2025-05-14 13:31 46 浏览

01. 一套机械臂系统引发的思考

想让机器人与人类配合无间,或许是机器人领域里最难做的事了。

近日,来自加拿大舍布鲁克大学的研究人员开发出了一种固定在腰间的机械臂系统,它可以帮助你完成多种任务。

包括:采摘果实、刷墙、擦玻璃、递送工具,甚至还有打羽毛球。

在探讨机械手对人们的用途时,无论是额外的手指还是一个或两个额外的机械臂,其功能都常限于缓慢移动的轻量级任务。这些任务往往是持有或携带物体,稳定物体或使用者等等。但人们想要的并不只是如此,而是能让我们变成像漫威漫画里的超级英雄一样的可穿戴机械臂。

这种类型的可穿戴机械臂被称为额外机械臂(supernumerary robotic arm)。本研究的系统有 3 个自由度,由磁流变离合器和静液压传动装置驱动。

其目标是在众多工业和家庭应用中实现如人类手臂一样的性能。液压系统会提供相对较大的动力,但是动力系统本身是通过线缆和使用者连接的,在最大程度上减少了使用者穿戴的质量(保证手臂的惯性较小),同时还略微限制了移动性。

02.与机器人相关的系统开发流程

如果我们想学,如何入手?

一般来说,在机器人系统开发中,开发流程可分为以下几个步骤:

从上述开发过程中,可以看到做机器人开发,不仅仅是算法,还牵扯到软硬件开发以及系统联调。

大家或多或少都应该有这种体验,牵扯到结构、硬件等实际设计时,哪怕电路足够简单,结构设计足够完美,一旦需要做成实际的东西,可能就会遇见一些 bug。

人非圣贤、孰能无过,引入 bug 不可怕,能否尽早发现 bug 对整个开发过程至关重要。

找出 bug 后,再修改设计方案,重新设计,可能就会有样机一代、二代、三代。。。多次迭代才能做出效果能过得去的机器人系统。

随即而来的,浪费时间成本、资金成本等。

同时,从开发过程中,可以看出整个设计流程比较线性化,即完成前一步,才能进行后一步。机器人设计一般牵扯到多人合作,设计流程线性化,也会影响开发时长。

比如:我们在设计机器人机械臂时,机械臂驱动电路已经设计并制作完成,但小伙伴的机械臂结构还未搭建好,我们必须得等小伙伴完成机械臂结构后才能测试。无形中,也浪费了开发时长。

那么,如何提升效率、减少时间和资金,从而加快开发流程呢?

加快反馈!

在早期进行整体设计时,如果可以仿真,在仿真过程中,不断调试装置和系统参数,多次反馈后得出我们想要的模型,同时进行结构与软硬件制作,并根据仿真模型的变动进行修改,多阶段同时进行,以此来减少开发时长以及资金成本。

03.MATLAB 如何加速机器人开发

在未设计出机械臂硬件系统之前,我们是无法验证算法,其抓取效果以及准确度,此时 MATLAB 即可上场,担当搭建相关模型,提前完成仿真测试的重任。

在开篇的腰间机械臂视频中,机械臂有给人递送工具的应用场景,我们以机械臂抓取物品为例,使用 MATLAB 模拟仿真该运动过程。

在 MATLAB 中,有较多的机械臂模型供大家选择,可供自己的设计需求选择相应的机械臂模型,接下来使用 MATLAB 对进行机械臂拾放工作流程仿真。

首先,使用 Stateflow 图表创建状态流程图,由以下三个步骤组成:

1、初始化机器人和环境

初始化机械臂模型,并创建其运行环境,初始化相关参数配置,建立机械臂模型。

该环境由机械手、用于分类的架子和蓝色障碍物组成。

2、识别零件并确定放置位置

在识别阶段的第一步中,必须检测零件。我们可以直接调用相关函数直接给出待拾放的物体检测算法,也可以通过我们特定的物体,来设计对应的物体检测算法。

接下来,调用相关函数将零件分为两种类型,以确定放置它们的位置。

3、执行取放工作流程

一旦识别出物品,并指定了它们的目的地,手爪将其拾取,然后移动到目标位置。

*详细流程如下图所示:

在完成状态流程图后,就可以运行可视化仿真。

通过确定选用 MATLAB 中提供的机器人模型,初始相关参数配置,完成机械手的初始配置,建立机械臂模型。

【案例来自 MATLAB 官网,该仿真使用带有手爪的 KINOVA GEN3 机械臂模型】

代码:

load('exampleHelperKINOVAGen3RobotiqGripper.mat');

coordinator.HomeRobotTaskConfig = trvec2tform([0.4, 0, 0.6])*axang2tform([0 1 0 pi]);

coordinator.PlacingPose{1} = trvec2tform([[-0.2 0.55 0.46]])*axang2tform([1 0 0 -pi/2]);

coordinator.PlacingPose{2} = trvec2tform([[-0.2 0.55 0.63]])*axang2tform([1 0 0 -pi/2]);

调用函数,即可将可视化模型连接到前文状态流程图,

coordinator.FlowChart = exampleHelperFlowChartPickPlace('coordinator',coordinator);

输入下方代码,可进行拾放物体过程仿真:

answer = questdlg('Do you want to start the pick-and-place job now?', ...

'Start job','Yes','No', 'No');

switch answer

case 'Yes'

% Trigger event to start Pick and Place in the Stateflow Chart

coordinator.FlowChart.startPickPlace;

case 'No'

% End Pick and Place

coordinator.FlowChart.endPickPlace;

delete(coordinator.FlowChart);

delete(coordinator);end

在完成此拾放可视化仿真后,我们可以结合机器人工具箱 Robotics System Toolbox,在此模型上添加相关的路径规划、电机控制等来提前验证我们的相关算法,从而加快机械臂系统设计开发的效率,由于篇幅有限,在此不再详细介绍相关。

04. 总结

本文只是浅谈了机器人系统开发中,通过 MATLAB/Simulink 的配合使用,我们可以提前验证机械臂控制算法,同样的,除开机器人的机械臂模型仿真,我们也可以利用 Simulink 对机器人的移动控制、视觉等组件进行仿真,提前验证我们的控制算法,无需等到相关硬件制作完成后再验证,可以加快整个机器人系统的开发过程,提升效率。

总的来说,在机器人开发上,MATLAB 给技术人员提供了足够多且友好的开发工具,并且也涵盖了多个 demo,供初学者快速入门。我们可以通过学习调用 demo,快速搭建出我们的机器人各个组件系统,进行仿真测试,无论是机器视觉,或者机械臂相关软硬件,亦或是移动路径规划等。都可以在 MATLAB 中找到相应的工具包对其进行仿真测试。

与此同时,在基于 MATLAB 模型设计下,我们可以将机器人系统如此庞大陌生的系统划分成各个模块进行组件设计,利用 Simulink 对其组件进行仿真测试,使用基于模型设计去开发软件,我们可以尽早对一个阶段的工作产品进行验证,同时链接到后一阶段的设计。不仅仅是节省开发时间成本和资金成本,并且对于基于模型的设计来讲,图形化设计是天然的、固有的。

能让人较为明朗了解设计原理以及过程,方便工程师们交流以及后期维护。

相关推荐

一日一技:用Python程序将十进制转换为二进制

用Python程序将十进制转换为二进制通过将数字连续除以2并以相反顺序打印其余部分,将十进制数转换为二进制。在下面的程序中,我们将学习使用递归函数将十进制数转换为二进制数,代码如下:...

十进制转化成二进制你会吗?#数学思维

六年级奥赛起跑线:抽屉原理揭秘。同学们好,我是你们的奥耀老师。今天一起来学习奥赛起跑线第三讲二进制计数法。例一:把十进制五十三化成二进制数是多少?首先十进制就是满十进一,二进制就是满二进一。二进制每个...

二进制、十进制、八进制和十六进制,它们之间是如何转换的?

在学习进制时总会遇到多种进制转换的时候,学会它们之间的转换方法也是必须的,这里分享一下几种进制之间转换的方法,也分享两个好用的转换工具,使用它们能够大幅度的提升你的办公和学习效率,感兴趣的小伙伴记得点...

c语言-2进制转10进制_c语言 二进制转十进制

#include<stdio.h>intmain(){charch;inta=0;...

二进制、八进制、十进制和十六进制数制转换

一、数制1、什么是数制数制是计数进位的简称。也就是由低位向高位进位计数的方法。2、常用数制计算机中常用的数制有二进制、八进制、十进制和十六进制。...

二进制、十进制、八进制、十六进制间的相互转换函数

二进制、十进制、八进制、十六进制间的相互转换函数1、输入任意一个十进制的整数,将其分别转换为二进制、八进制、十六进制。2、程序代码如下:#include<iostream>usingna...

二进制、八进制、十进制和十六进制等常用数制及其相互转换

从大学开始系统的接触计算机专业,到现在已经过去十几年了,今天整理一下基础的进制转换,希望给还在上高中的表妹一个入门的引导,早日熟悉这个行业。一、二进制、八进制、十进制和十六进制是如何定义的?二进制是B...

二进制如何转换成十进制?_二进制如何转换成十进制例子图解

随着社会的发展,电器维修由继电器时代逐渐被PLC,变频器,触摸屏等工控时代所替代,特别是plc编程,其数据逻辑往往涉及到数制二进制,那么二进制到底是什么呢?它和十进制又有什么区别和联系呢?下面和朋友们...

二进制与十进制的相互转换_二进制和十进制之间转换

很多同学在刚开始接触计算机语言的时候,都会了解计算机的世界里面大多都是二进制来表达现实世界的任何事物的。当然现实世界的事务有很多很多,就拿最简单的数字,我们经常看到的数字大多都是十进制的形式,例如:我...

十进制如何转换为二进制,二进制如何转换为十进制

用十进制除以2,除的断的,商用0表示;除不断的,商用1表示余0时结束假如十进制用X表示,用十进制除以2,即x/2除以2后为整数的(除的断的),商用0表示;除以2除不断的,商用1表示除完后的商0或1...

十进制数如何转换为二进制数_十进制数如何转换为二进制数举例说明

我们经常听到十进制数和二进制数,电脑中也经常使用二进制数来进行计算,但是很多人却不清楚十进制数和二进制数是怎样进行转换的,下面就来看看,十进制数转换为二进制数的方法。正整数转二进制...

二进制转化为十进制,你会做吗?一起来试试吧

今天孩子问把二进制表示的110101改写成十进制数怎么做呀?,“二进制”简单来说就是“满二进一”,只用0和1共两个数字表示,同理我们平常接触到的“十进制”是“满十进一”,只用0-9共十个数字表示。如果...

Mac终于能正常打游戏了!苹果正逐渐淘汰Rosetta转译

Mac玩家苦转译久矣!WWDC2025苹果正式宣判Rosetta死刑,原生游戏时代终于杀到。Metal4光追和AI插帧技术直接掀桌,连Steam都连夜扛着ARM架构投诚了。看到《赛博朋克2077》...

怎么把视频的声音提出来转为音频?音频提取,11款工具实测搞定

想把视频里的声音单独保存为音频文件(MP3/AAC/WAV/FLAC)用于配音、播客、听课或二次剪辑?本文挑出10款常用工具,给出实测可复现的操作步骤、优缺点和场景推荐。1)转换猫mp3转换器(操作门...

6个mp4格式转换器测评:转换速度与质量并存!

MP4视频格式具有兼容性强、视频画质高清、文件体积较小、支持多种编码等特点,适用于网络媒体传播。如果大家想要将非MP4格式的视频转换成MP4的视频格式的话,可以使用MP4格式转换器更换格式。本文分别从...