【導讀】很多小伙伴都對機器人非常感興趣,但是不知道一個機器人系統有哪些部分組成,到底是怎么實現的?今天我就以一個做項目的角度出發來告訴大家如何設計一個機器人,就以一個遠程遙控的機器人為例來展開。 所謂遠程遙控,就是遙控端通過天線或是5G遠程向機器人發送指令,機器人端通過各種傳感器融合技術,比如激光雷達,深度相機,超聲波等傳感器,對周邊環境進行感知,并將感知結果通過傳感器融合技術發送給主控單元,從而實現機器人在未知環境中半自主或自主工作。 此文章旨在讓大家了解一個機器人項目涉及的技術,并且是如何實施的,不做具體技術的討論。
01機器人系統組成
我們就以一機械狗為載體來展開,涉及到的一些技術不一定是機械狗上有的技術,本文只是以機械狗作為一個載體來說明無人裝備涉及的一些技術,其實換做無人機,無人車也都是可以的。 下圖為一個機械狗的系統組成,列舉了比較熱門和主要的技術,還有一些技術未列出,但不影響如何設計一個機器人系統。 機器人一般有三大塊組成: 1、機械機構設計 2、硬件電路設計 3、控制算法、感知決策算法設計 本文也是從這三大塊開始入手,剖析機器人設計涉及的一些技能。 上面這副系統圖所表達的一個機器人的流程就是: (1)操作員通過給出所需的平動速度和轉向率來的高級命令 (2)接收到高級命令,CoM參考軌跡生成并傳送給身體和腿部控制器 (3)控制器根據用戶輸入命令和機器人狀態,如果腿處于腿在擺動中,則使用“擺動腿控制器”,如果腿處于腿在支撐中,則使用“力控支撐腿控制器” (4)力和位置指令被發送到微控制器,用于將電機指令傳遞給機器人的每條腿。 (5)如果對機械狗還有更高的要求,比如自主導航等,則可以在工控機中運行SLAM或者AI等算法。 ?
02機器人機械設計部分
涉及到的技能:1)動力學;2)運動學;3)系統仿真 涉及到的軟件:1)三維設計軟件(solidworks,UG,CATIA等);2)動力學和運動學軟件(Adams,CoppeliaSim 等);3)系統仿真軟件(CoppeliaSim ,Webots等);4)有限元仿真如軟件(Ansys或Abuqus等) 當我們設計一個機器人本體的時候,我們通常最關心兩個問題,一個是本體能否承受較大的載荷也即動力學問題,第二個是本體是否能按照我設定的軌跡進行運動也即運動學問題。 動力學問題首先要考慮的就是動力源的來源,比如電機,液壓缸,電動缸等等,以機械狗為例,機械狗首先要考慮的就是動力問題,動力是否強勁,是否能滿足機械狗的基本要求,下圖就是機械狗的電機結構,你可以輕松猜到設計者的意圖,設計者講電機、行星減速機以及機械狗的外殼合二為一了,一方面降低了機械狗的重量,減小了慣量,另一方面節省了機械狗的空間,使得腿部更容易做出各種動作。 有了基本的設計方案以后,我們還需要對電機力矩進行校核,分析機器人受力情況,這就設計到動力學公式,比如牛頓三定律,達朗貝爾定律,拉格朗日動力學方程等等,往往一種方程無法解決全部問題,所以需要這些方程的配合。在使用這些公式的時候要求我們學會將復雜模型簡單化,以方便對其進行建模,比如機械狗的腿部就可以簡化成下圖所示: ? 下面我來舉個例子讓大家感受一下不同動力學方程的作用: ? 2.1 達朗貝爾方程舉例 汽車連同貨物的總質量是其質心離前后輪的水平距離分別是和,離地面的高度是。當汽車以加速度沿水平道路行駛時,求地面給前、后輪的鉛直反力。輪子的質量不計。 達朗貝爾的思想就是本來一個不平衡的系統,引進了慣性力以后,就可以把他當作一個靜平衡系統來看待。 聯立可以解得:? 如果沒有達朗貝爾原理,求起來還是相當費勁的。 2.2 拉格朗日動力學方程舉例 即所有廣義坐標都互相獨立,則拉格朗日方程成立: 其中是拉格朗日量,是廣義坐標,是時間的函數,是廣義速度,是對應的廣義力。 在力學建模中,拉格朗日量定義為動能減去勢能,即 其中,為系統中的總動能,?為系統中的總勢能。 下面舉一個常見的倒立擺的建模過程,有如下的倒立擺,小車的質量為,小球的質量為,桿長為,外力作用于小車: 首先分析,系統中的廣義坐標有兩個:,所謂廣義坐標的意思就是所選取的變量可以唯一確定這個系統的狀態,比如小車的位置和擺桿的角度就可以確定這個系統的位置。因此,對小車我們有: 對桿,它的水平位移和豎直位移分別為,,所以 于是拉格朗日量為: 所以 依據拉格朗日方程, 將作為系統的狀態變量,我們把上式中的和作為未知變量求解,經過繁瑣的化簡和整理,可得: 顯然,這是一個非線性非定常微分方程。擺桿在豎直狀態時附近可以看作是線性的,采用拉普拉斯變換即可。 ? 得到系統的動力學方程后就可以進行各種控制,比如LQR,MPC等算法控制。 ? 上述是幾種動力學計算的方程,機器人設計中經常會用到,有了這些計算得到的公式,有了這些計算公式,我們很容易得到一些構件的受力情況,但是如果一個構件和其他很多構件連接,受力形式非常復雜,那么動力學公式將無從下手,因此我們就需要用到動力學仿真軟件,比如Adams直接進行仿真,如下面機械臂就可以通過Adams軟件對各個軸進行受力分析,運動速度,角速度等進行分析。 機械臂關節角位移和角速度Adams仿真 我們現在已經可以可以通過方程計算或者仿真得到了各個構件的受力,運動軌跡等了,但是我們還會面臨一些結構件校核的問題,比如我計算出機械狗一條腿的支撐力是100N,起跳時候支撐力達到了200N,那么我的腿部構件是否可以支撐這么大的力量呢?如果構建比較簡單,我可以通過力學方程計算構件受力并且和構件的材料屈服強度作比較,看是否滿足要求,但是如果構件形狀比較復雜呢?通過公式就無法解決,就需要用到有限元仿真比如Ansys,有限元仿真不但可以仿真構件受力情況,而且可以對構件進行拓撲優化,使的用最少的質量滿足受力要求,比如下圖,最左邊是設計者最開始設計的形狀,通過一步一步優化得到最佳的構件形狀,即質量減少了又保證了構件強度。 機械狗的腿部結構也進行了拓撲優化,不然這么大的慣量,非常影響機械狗的控制算法。 經過上面一波分析以后,我們還需要驗證機器人的運動學,比如機械狗的行走軌跡,機械狗的行走軌跡一般都要借助于仿真軟件輔助分析。 比如CoppeliaSim ,就相當于是一個實物,你可以對其像對真實的機械狗進行控制一樣,起到提前驗證,減少試錯成本的效果。
需要掌握的技能:模電/數電;硬件原理圖,硬件PCB制版;硬件調試;EMC/EMI分析; 需要掌握的軟件:PCB制板(Altium Design,Allegro Viewer),電路仿真軟件(PSPICE),信號仿真軟件(HyperLynx), 硬件電路設計的第一步就是要根據機器人所具有的功能畫出電路原理圖,再根據原理圖布置PCB板,用到的軟件為Altium Design或者Allegro Viewer等,對于技術棧偏硬件的建議選用Altium Design或者Allegro功能完整,自定義程度高,支持很多插件,不過上手難度稍大一些。而不常畫板子的可以用立創EDA即可,還集成了器件庫,方便在制作同時就能找到可以買到的器件,不用自己去淘寶或者立創商城搜索。 電路板設計完成后還要進行PSPICE電路仿真,防止有短路等情況發生;信號仿真,防止信號有干擾等。 一般底層控制器用的最多的就是單片機,比如STM32,用來控制步進電機,舵機等等,可以脈沖控制,也可以走通信控制,比如RS485,CANopen等,(例如機械狗用了2顆STM32作為主控,用12顆STM32作為子控制單元,來控制機械狗四條腿部的運動),單片機搭配外圍電路就構成了一個完整的PCB板,如下圖所示。 Altium Design設計的電路原理圖 機械狗的PCB板 制版完成后要對PCB板進行全方位的測試,用到的儀器儀表包括電烙鐵,萬用表,示波器,邏輯分析儀,誤碼儀,傳輸分析儀,以太網測試儀Smartbits/IXIA,熱量計,衰減器,光功率計,射頻信號 強度計等等。尤其對于電源電路的測試,現在芯片電壓多樣化,電壓越來越低,電流越來越大,運營商對于通信設備功耗的嚴格要求,散熱要求,對于電源設計的挑戰越來越 大。可以說,對于一個硬件設計來說,40%的工作都是在于電源電路的原理圖/PCB設計和后期測試驗證,電源電路設計是硬件工程師電路能力的集中體現,各種被動器件、半導體器件、保護器件、DC/DC轉換典型拓撲,都有很多參數,公式需要考慮到,計算到。下面是用示波器進行信號采集分析,電源波紋分析等。 示波器采集信號 除此之外還要進行電磁干擾,射頻干擾測試,屬于EMC/EMI范疇,目的就是防止外部電磁場或者靜電對PCB板的干擾,同時也要防止自己本身對周邊電子設備的干擾。 EMC干擾測試 不但要自己設計電路板,還要會各種CPU選型,比如M68k系列,PowerPC860,PowerPC8240,8260體系等,機械狗除了本身需要設計的PCB控制板外,還會使用到現有的處理器,比如: 波士頓動力的機器狗Spot的內置處理器完全專用于機器狗的移動和導航,不支持客戶使用。如果客戶想要處理和分析來自Spot或其搭載的任何傳感器的數據,需要額外加裝計算機或是支付3925美元購買波士頓動力提供的名為Spot CORE的附加處理器。Spot CORE的規格如下:
CPU=i5 Intel 8th Gen (Whiskey lake-U) Core CCG Lifecycle
操作系統=Ubuntu Desktop 18.04 LTS 64-bit
SSD=512 GB SSD
如果要在Spot上運行計算密集型任務,例如機器學習,則可以支付24500美元購買波士頓動力提供的名為Spot CORE AI的附加開發環境,其規格如下:
CPU=Intel Xeon E3-1515M V5
GPU=NVIDIA P5000
操作系統=Ubuntu Desktop 18.04 LTS 64-bit
CPU RAM=32 GB
SSD=480GB mSATA SSD
04機器人軟件設計
軟件部分分為底層控制軟件和上層軟件 4.1 底層控制軟件 掌握的技能:嵌入式編程C語言,freeRTOS操作系統 掌握的軟件:單片機編程軟件(keil,VSCode,Ozone等),調試軟件(串口調試助手等) 現在主流的控制方案還是使用單片機,但是大有和桌面端統一的趨勢,各種ROS支持的串口/FDCAN/Ether總線都能流暢運行,工業界也在積極適配x86和arm64平臺的支持。linux的實時性也可以通過real time kernel patch得到提升,典型響應時間已經可以做到0~50ns,和單片機別無二致。 以STM32系列為例,很多老人都習慣用arm家的KEIL,網上很多教程也都是基于keil的,但keil主題支持和代碼高亮智能提示檢查等實在太落后了,甚至無法設置多線程編譯,用起HAL庫簡直是一種折磨。推薦在學習嵌入式開發一段時間后,使用clion或vscode替代keil編程,利用ozone進行可視化的調試,通過segger RTT viewer來進行日志打印。 另外單片機是屬于單線程的程序架構,可以通過已知freeRTOS實時操作系統,使其變成多線程的,這樣可以大大提高系統的響應時間,對于重要的任務可以給予更高的優先級,使其最先得到執行。
freeRTOS實時操作系統示意圖 對于單片機開發,推薦的軟件如下:
keil,上手難度低,新手入門用。
VSCode,定制化程度極高,但不是keil一般開箱即用,需要有一定的基礎并進行一些配置。
Ozone,SEGGER家的調試器(也就是做jlink的公司)。可視化調試是它的大殺器,和大家習慣的串口調試不同,他的調試信息是通過DBG發送的,也就是調試器連接的那幾條線,通過這個方式調試不會占用系統的資源,能夠以非阻塞的方式全速運行。
串口調試助手:推薦串口調試助手(就叫這個名字,在microsoft商店可以直接安裝,圖標就是一個9線的485串口)和VOFA,后者的圖形化做的很好可以支持數據可視化。Linux下的替代品是cutecom和minicom,也有VOFA。
4.2 上層控制軟件 需要掌握的技能:Linux操作系統、Ubuntu系統、ROS系統 需要掌握的軟件:ROS操作系統,VScode等 機器人用到的控制器幾乎都是linux系統,linux操作系統有很多的優點,運行空間占用內存小,可裁剪,可定制化等,在學習Linux的過程中,要了解開源軟件的運行模式,文件系統和內核以及shell的概念,至于bootloader和虛擬內存、分頁機制等最好也了解,包管理器和基本的終端命令則是一定要掌握的。還要了解編譯器相關的基礎知識,學習在沒有IDE支持下如何編譯c代碼。make和cmake則是linux環境下構建項目的必選項,ROS的構建系統catkin_make就是基于cmake打造的。 ? 至于ROS,這是工業4.0時代必學的軟件。ROS實際上并不是操作系統,而是提供了一套完整的機器人開發軟件棧,封裝了包括模塊間消息交互(這是ROS最重要的功能之一)、可視化、仿真在內的各種功能。雖然ROS目前提供了windows下的試驗支持,但還是推薦在Linux系統下開發,也就是說,Linux是學習ROS的必要條件。 ?
05機器人算法設計
控制算法分為兩種:機器人運動控制算法和基于大模型的算法 5.1 基于大模型的算法 機器人算法最核心的一個功能就是自主導航定位技術 傳統方案:SLAM+路徑規劃+運動控制 現代方案:深度學習+運動控制 現代方案和傳統方案的區別:傳統方式是用概率學,或者控制論的方式進行機器人自主定位導航。但通過深度學習,直接通過攝像頭數據作為信號輸入,再通過神經網絡直接產生出機器人的控制信號。其中像 SLAM 的過程、路徑規劃的過程,完全可以通過深度學習的方式就可以進行實現。下圖是通過ROS的SLAM開發包進行的建圖,并通過RVIZ進行顯示。 SLAM 建圖 另外機器人主流的感知算法仍然是機器視覺,因此OpenCV是必須掌握的計算機視覺庫。 ? 在圖像處理之外,基于深度學習的目標檢測/分割算法也不可或缺。推薦使用PyTorch構建神經網絡。要使用PyTorch,基本的一些機器學習和統計學習算法,需要使用python下的ski-learn庫。 ?
神經網絡模型 關于定位和建圖(SLAM),使用最多的軟件自然還是ROS,如果要處理點云,PCL(point cloud library)是不可或缺的,Eigen(矩陣運算庫)、g2o(圖優化庫)、ceres(非線性最小二乘庫)以及一些處理李群的庫。 點云處理 5.2 運動控制算法 運動控制算法包括LQR,MPC,WBC等算法,傳感器融合算法,全局規劃A*算法,局部規劃DWA算法等。 機械狗一般都采用WBC(優化后的MPC)等算法 WBC算法(優化后的MPC) 算法可以說是機器人的靈魂,算法涉及到很深的數學和力學功底,比如要知道動力學,坐標系變換,線性代數矩陣變換等等,比如機械狗的運動學就涉及到坐標變換,將對軀干質心的速度/位移要求轉換到四肢上。 機械狗坐標變換 傳感器融合算法比較常見的如使用EKF(卡爾曼濾波)或ESKF(擴展卡爾曼濾波)來實現(一般常見于LIO當中),當然還有其他各種先進的算法,卡爾曼濾波用的最為廣泛,通過對傳感器的濾波,使得得到的數據更為光順。 卡爾曼濾波實現多傳感器數據融合 全局規劃A*算法,通過預先建立好的地圖,可以使得機械狗運行到任意指定的終點位置。 不同改進型的A*算法效果 DWA局部規劃算法,機械狗在全局規劃好的路線中運行時,難免會遇到局部多出的障礙物,這個障礙物在預先建圖的時候并不存在,這個時候就需要機械狗臨時對這個障礙物進行避障,這也是局部規劃的主要任務。 DWA局部規劃算法
06結束語
機器人是一個非常復雜的系統設計,涉及很多學科的交融,可以說是各個學科中比較尖端的存在,因此也決定了一款機器人產品想要商業化也變的非常困難,但是技術在不斷的進步,相信這些問題終將不是問題,例如最近非常火的ChatGPT,就為機器人的智能化發展提供了一些思路。總之機器人的未來正變得越來越光明。
-
傳感器
+關注
關注
2548文章
50664瀏覽量
751939 -
機器人
+關注
關注
210文章
28191瀏覽量
206505 -
機械狗
+關注
關注
0文章
18瀏覽量
4830
原文標題:你知道一個機器人項目都涉及哪些技術,怎么組織起來的嗎?
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論