再聊机器人设计:如何加速开发流程?
?01
一套機械臂系統引發的思考?
想讓機器人與人類配合無間,或許是機器人領域里最難做的事了。
近日,來自加拿大舍布魯克大學的研究人員開發出了一種固定在腰間的機械臂系統,它可以幫助你完成多種任務。
包括:采摘果實、刷墻、擦玻璃、遞送工具,甚至還有打羽毛球。
在探討機械手對人們的用途時,無論是額外的手指還是一個或兩個額外的機械臂,其功能都常限于緩慢移動的輕量級任務。這些任務往往是持有或攜帶物體,穩定物體或使用者等等。但人們想要的并不只是如此,而是能讓我們變成像漫威漫畫里的超級英雄一樣的可穿戴機械臂。
這種類型的可穿戴機械臂被稱為額外機械臂(supernumerary robotic arm)。本研究的系統有 3 個自由度,由磁流變離合器和靜液壓傳動裝置驅動。
其目標是在眾多工業和家庭應用中實現如人類手臂一樣的性能。液壓系統會提供相對較大的動力,但是動力系統本身是通過線纜和使用者連接的,在最大程度上減少了使用者穿戴的質量(保證手臂的慣性較小),同時還略微限制了移動性。
機械臂的 Demo 視頻具體參見:
看到這里,有些朋友就會比較關心:
此種復雜的機械臂控制系統到底如何開發,如何設計?
?02
與機器人相關的系統開發流程
如果我們想學,如何入手?
一般來說,在機器人系統開發中,開發流程可分為以下幾個步驟:
從上述開發過程中,可以看到做機器人開發,不僅僅是算法,還牽扯到軟硬件開發以及系統聯調。
大家或多或少都應該有這種體驗,牽扯到結構、硬件等實際設計時,哪怕電路足夠簡單,結構設計足夠完美,一旦需要做成實際的東西,可能就會遇見一些bug。
人非圣賢、孰能無過,引入bug不可怕,能否盡早發現bug對整個開發過程至關重要。
找出bug后,再修改設計方案,重新設計,可能就會有樣機一代、二代、三代。。。多次迭代才能做出效果能過得去的機器人系統。
隨即而來的,浪費時間成本、資金成本等。
同時,從開發過程中,可以看出整個設計流程比較線性化,即完成前一步,才能進行后一步。機器人設計一般牽扯到多人合作,設計流程線性化,也會影響開發時長。
比如:我們在設計機器人機械臂時,機械臂驅動電路已經設計并制作完成,但小伙伴的機械臂結構還未搭建好,我們必須得等小伙伴完成機械臂結構后才能測試。無形中,也浪費了開發時長。
那么,如何提升效率、減少時間和資金,從而加快開發流程呢?
加快反饋!
在早期進行整體設計時,如果可以仿真,在仿真過程中,不斷調試裝置和系統參數,多次反饋后得出我們想要的模型,同時進行結構與軟硬件制作,并根據仿真模型的變動進行修改,多階段同時進行,以此來減少開發時長以及資金成本。
當然,既然要進行仿真,要選取哪款軟件呢。
在這之前,我們曾經有寫過一篇:
MATLAB R2020a新鮮出爐,我來替各位嘗嘗鮮!(超鏈接,點擊即可閱讀)
在這篇文章中,我們有聊過利用MATLAB/Simulink對機器人運動規劃進行仿真。
那么在加速機器人開發流程上,MATLAB又會給我們帶來什么驚喜呢?
?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對其組件進行仿真測試,使用基于模型設計去開發軟件,我們可以盡早對一個階段的工作產品進行驗證,同時鏈接到后一階段的設計。不僅僅是節省開發時間成本和資金成本,并且對于基于模型的設計來講,圖形化設計是天然的、固有的。
能讓人較為明朗了解設計原理以及過程,方便工程師們交流以及后期維護。
了解更多機器人解決方案:(復制到瀏覽器打開)
https://ww2.mathworks.cn/solutions/robotics.html?s_eid=PEP_23450
你可以申請30天免費試用工具包:(復制到瀏覽器打開)?
https://ww2.mathworks.cn/campaigns/products/trials.html?s_eid=PEP_23450
-------------------------------
原創不易,莫要白票,如果覺得有點用的話,請毫不留情地轉發朋友圈吧,因為這將是我寫更多優質文章的最強動力。
總結
以上是生活随笔為你收集整理的再聊机器人设计:如何加速开发流程?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为WATCH Ultimate官宣!余
- 下一篇: 值得一看的PCB接地设计规范!