機器人分揀的地理知識_視覺分揀機器人 - CSDN

2020-11-22 CSDN技術社區

全世界只有3.14 % 的人關注了

爆炸吧知識

如果說機器人是一粒種子,那麼《機器人大擂臺》這檔節目就是那個播種人。節目中,不同選手操縱著機器人,在擂臺上各顯神威 —— 衝撞、翻滾、撬槓、噴火等各種技能,總能令人眼花繚亂,同時點燃心中關於機器人的各種幻想。

圖片來自 https://giphy.com/gifs/

如今的機器人應用廣泛,機器人技術也開始源源不斷地向人類活動的各個領域滲透,機器人分揀系統和隨處可見的無人機。

例如機器人分揀系統,顯著地提升了物流公司貨物配送的效率:

另一個例子是無人機。如果說分揀機器人還屬於各大物流公司的核心機密,如下凡天仙一般平日裡難得一睹芳容,那無人機早已化身鄰家女孩,平易近人地裝點著我們的生活:

機器人的發展不會止步於此。2020年以來,新基建概念大熱,其三大方向更是與機器人產業密切相關。教育機器人、送餐機器人、情感機器人及自動駕駛技術,都是機器人及自動化技術的下一個重要落地目標:

動圖來自《美國國家地理》


銀河補習班裡有句經典臺詞:「我的孩子,上的是全世界最好的補習班,銀河補習班。」今天,MATLAB就為你帶來宇宙最強機器人補習班,手把手教你如何建造屬於自己的機器人! 

許多人認為 MATLAB 是數學或教育軟體。事實上,MATLAB 最初被廣泛採用是在控制工程領域,隨後開發了多種技術領先的算法包和工具箱,並被全球各大高校廣泛採納為數學教育軟體 [1]。即將進入機器人補習班的你,準備好了嗎?

第一步:安裝機器人工具箱

工欲善其事,必先利其器,我們首先需要安裝 MATLAB 的機器人工具箱(Robotics System Toolbox)。我們既可以上MathWorks 官網 [2] 下載,又可以通過打開 MATLAB 主界面,單擊「添加項(Add-Ons) 選項進行操作。

然後在搜索欄中輸入 「Robotics System Toolbox」,進入第一個搜索結果即可安裝:

目前軟體已更新至最新版本R2020a,增加更多功能,小夥伴可以嘗試康康

操作完成後,打開 MATLAB 並輸入

>> ver

如果能找到如下信息

Robotics System Toolbox       Version 2.x         (Rxxxxx)

那麼恭喜,機器人工具箱已安裝成功!

第二步:你想要什麼樣的機器人?建模是關鍵

我們要設計的第一個機器人,是一條可以自由轉動的機械手臂。在 MATLAB 中,機械手臂由不同的連杆(Link)通過關節Joint拼接而成。依活動狀態分,關節又可分為旋轉型平移型,其意義顧名思義 [2]:

旋轉型與平移型連杆

為簡單起見,我們先創建一個三連杆的機械臂:

%設置 DH 參數dhparams = [0     pi/2  0     0;            0.4318  0       0       0;            ];robot = rigidBodyTree; % 初始化機械臂body1 = rigidBody( body1 ); % 定義第一個連杆jnt1 = rigidBodyJoint( jnt1 , revolute ); % 定義第一個關節setFixedTransform(jnt1,dhparams(1,:), dh ); body1.Joint = jnt1; % 給底座加上關節addBody(robot,body1, base ) % 定義機械臂為機器人的底座% 添加第二、三隻連杆body2 = rigidBody( body2 ); jnt2 = rigidBodyJoint( jnt2 , revolute );body3 = rigidBody( body3 );jnt3 = rigidBodyJoint( jnt3 , revolute );setFixedTransform(jnt2,dhparams(2,:), dh );setFixedTransform(jnt3,dhparams(3,:), dh );body2.Joint = jnt2;body3.Joint = jnt3;

上面的 dhparams 是一個 n*4 矩陣(n 是機械臂的個數),被稱為 DH 參數Denavit–Hartenberg parameters)。dhparams 的每一行由 [a alpha d theta] 四個變量組成,它們分別表示:

如果不小心忘了我們搭建的機器人長啥樣,那麼下面的命令 

showdetails(robot)

可以幫助我們回憶起它的基本特徵:

而輸入下面的命令,我們即可一睹該機械手臂的廬山真面目:

addBody(robot,body2, body1 )addBody(robot,body3, body2 )show(robot); % 畫圖

因為我們只搭建了最基本的連杆和關節,所以這個機械手臂難免有些瘦骨嶙峋。不過如果我們把上面的圖片放大,就可以看到每個連杆、關節的名字、序號和類型具體信息:

此外,我們還可以給連杆和關節賦予諸如質量、轉動慣量、慣性矩陣之類的參數,此處限於篇幅故略去之,有興趣的小夥伴可以參考連結 [1] 或 [2]。實踐出真知,理解以上概念最好的方式,就是逐個調整代碼中的參數,觀測結果變化。

第三步:看!它左手右手一個慢動作!

我們已經知道如何用 MATLAB 搭建一個簡單的機器人了。然而這樣搭建的機器人,和小朋友用積木搭建的玩具並無二致 —— 既然是用軟體做成的機器人,我們自然希望它能動起來。我們以加拿大機器人公司 Kinova 的第三代機械臂為例,來看看 MATLAB 如何讓這支麒麟臂動起來。

圖片來自 https://www.kinovarobotics.com/en/products/gen3-robot

在 MATLAB 界面中輸入

>> robot = loadrobot("kinovaGen3");>> showdetails(robot)

我們可以看到輸出如下 

不難看出,第三代 Kinova 是由 8 根連杆和 8 個關節拼接而成。如果我們要想知道某個具體連杆的信息,例如名叫 「Shoulder_Link」 的連杆, 依次輸入

>> robot.getBody( Shoulder_Link ).Joint>> robot.getBody( Shoulder_Link ).Joint.JointToParentTransform>> robot.getBody( Shoulder_Link ).Joint.ChildToJointTransform

即可分別查詢屬於該連杆的關節,以及關節到母連杆和子連杆的轉移矩陣。如此一來,我們就可以從這種方法重建出第三代 Kinova 機械臂了!

現在我們有兩種方法可以讓讓機械臂動起來。第一種方法是通過變換關節旋轉角度的方式,這種方法叫正運動學(Forward kinematics);第二種方法是通過給定每個連杆末端位置,這種方法叫逆運動學(Inverse kinematics)。正運動學可以很方便地對機械臂進行直接操控,而逆運動學則更有利於直接指定機械臂完成任務,例如抓取處於某位置的快遞等等。這兩種方法各有千秋。

有幾何背景的讀者知道,n 維歐式空間中的剛體形變可分為平移(Translation)旋轉(Rotation)鏡像(Reflection)三種,這三種變化可以用作用,或者矩陣來表示。由這三種作用組成的群叫做歐幾裡得群(Euclidean Group)記作 E(n),因為 E(n) 中的元素都可以用矩陣表示,所以 E(n) n+1 階矩陣群的子群(具體解釋見下圖)。群 E(n) 中只由平移和旋轉(不含鏡像)構成的子群叫做特殊歐幾裡得群,記作 SE(n)。


下面我們 MATLAB 中的逆運動學函數 inverseKinematics 來讓機械臂動起來。我們只需要定義出機械臂所要經過的幾個路徑點的位置、速度以及加速度,MATLAB 即可通過對特殊歐幾裡得群求逆來計算出整個機械臂所經過的路徑,以及每個時刻的速度以及加速度等信息。

% 關節起始旋轉角及初始位置positions = [2*pi, 0.2619, pi, 4.0142, 2*pi, 0.9598, pi/2];config = homeConfiguration(robot);for k = 1:length(positions)  config(k).JointPosition = positions(k);end% 定義機械臂需要通過的路徑點以及對應速度、加速度信息waypoints = [0.5639 0.0013 0.4336]  + [-0.1 0.2 0.4 ; -0.2 0 0.1 ; -0.1 -0.2 0.4 ;] ;waypointTimes = 0:4:8;ts = 0.2;trajTimes = 0:ts:waypointTimes(end);waypointVels = 0.1 *[ 0  1  0; -1  0  0; 0 -1  0;] ;waypointAccels = zeros(size(waypointVels));waypointAccelTimes = diff(waypointTimes)/4;[q,qd,qdd] = trapveltraj(waypoints,numel(trajTimes), ...             AccelTime ,repmat(waypointAccelTimes,[3 1]), ...              EndTime ,repmat(diff(waypointTimes),[3 1]));% 畫出初始狀態%% 畫圖--機械臂show(gen3,config, Frames , off , PreservePlot ,false);hold on%% 畫圖--路徑初始化hTraj = plot3(waypoints(1,1),waypoints(2,1),waypoints(3,1), b.- );set(hTraj,  xdata , q(1,:),  ydata , q(2,:),  zdata , q(3,:));%% 畫圖--路徑點plot3(waypoints(1,:),waypoints(2,:),waypoints(3,:), ro , LineWidth ,2);set(gca,  Position , [-.2, -.2, 1.5, 1.5]);xlim([-1 1]), ylim([-1 1]), zlim([0 1.2]);

機械臂的初始位置。紅色點表示機械臂所要經過的路徑點

% 初始化機械臂的逆運動學方程ik = inverseKinematics( RigidBodyTree ,robot);ikWeights = [1 1 1 1 1 1];ikInitGuess = robot.homeConfiguration; % 隨機設置一個初始狀態% 讓機器人動起來!for idx = 1:numel(trajTimes)     % 解逆運動學方程    tgtPose = trvec2tform(q(:,idx) );    [config,info] = ik( EndEffector_Link , tgtPose,ikWeights,ikInitGuess);    ikInitGuess = config; % 以上一時刻的狀態作為下一時刻的初始值    % 畫出機器人的動態    show(robot,config,  Frames , off , PreservePlot ,false);    title([  Trajectory at t =   num2str(trajTimes(idx))])    drawnow    end

最後得到的軌跡圖如下:

有興趣的讀者可以修改上面代碼中的參數(例如路徑點的位置、機械臂的速度加速度等),來看看結果會出現怎樣的變化。

更高級的智能

在實際使用中,除了要讓機器人會動外,還需要賦予它們自主性。在本節中,我們希望機器人擁有路徑規劃以及障礙躲避的能力,讓我們來一起見證什麼是更高級的智能。

我們以即時定位與地圖構建算法(Simultaneous localization and mapping,SLAM)作為例子。該算法可以通過著名的卡曼濾波(Kalman Filter)來得以實現。在如雷達、聲吶、天氣預報、火箭發射、計算機視覺、控制理論等諸多工程應用中,都離不開卡曼濾波的身影。

從抽象角度看來,卡曼濾波無非就是傳感器不斷根據外部環境,調控機器狀態的一種裝置。記機器狀態 x (位置、速度等),傳感器測量的外部環境變量為 z(溫度、氣壓等),可調控的變量為 u (電磁波發射頻率、前進方向等),v 和 w 分別表示機器和傳感器誤差,那麼卡曼濾波可以表達為一個數學模型:

k 表示離散的時刻。如果 f 和 h 都是線性矩陣,那直接讓上面兩式對 x, z 分別求偏導數,然後再更新 x 和 z 的值即可(F_a, H_a 分別表示 f 和 h 對變量 a 的偏導數向量)

如果 f 和 h 並非線性,由於誤差項的累計,直接簡單粗暴地線性化勢必會帶來更大的誤差。為此,人們採用預測-更新(Predict-Update)兩階段算法來解決非線性的卡曼濾波問題 —— 在預測階段,我們不僅要預測機器的狀態 x,還要預測卡曼濾波的矩陣 P。這種算法叫擴展卡曼濾波(Extended Kalman Filter,EKF),是 SLAM 的靈魂所在,有興趣的讀者可參考文獻 [2]。

P<k> 是卡曼濾波在時刻 k 的協方差矩陣,該矩陣在更新變量 x 時會起到作用

推導過程令人頭禿?那我們來看一看代碼及實現過程吧!

% 初始化機器人及起始點、終點% 我們的目的是希望機器人能順利躲過障礙物併到達終點map = LandmarkMap(20, 10); % 10*10 地圖,20 個障礙物V = diag([0.005, 0.5*pi/180].^2); % 機器(每個步長)的誤差矩陣robot = Bicycle( covar , V); % 初始化機器人robot.add_driver( RandomPath(10)); % 定義終點% 定義傳感器% angle:傳感器掃射角度範圍% range:傳感器掃射距離W = diag([0.1, 1*pi/180].^2); % 傳感器(每個步長)的誤差矩陣sensor = RangeBearingSensor(robot, map,  covar , W, ...    animate ,  angle , [-pi/2 pi/2],  range , 5);% 初始化 EKF, 並運行 150 個步長P0 = diag([0.005, 0.005, 0.001].^2); % 卡曼濾波初始時刻的協方差矩陣ekf = EKF(robot, V, P0, sensor, W, []);ekf.run(150);

上圖中藍色三角形表示機器人,紅色菱形表示目標,粉紅色扇形表示傳感器掃查範圍

造機器人?就是如此簡單!

讀到這裡,相信大家對 MATLAB 的機器人工具包已經有了充足的認識。身邊無人陪伴倍感孤獨?—— MATLAB 幫你打造屬於你自己的機器人!


機器人行業快速發展的同時,要面臨各種各樣的機遇和挑戰。MATLAB 的機器人工具包也一樣,仍需不斷的革新和研發,在以下方面得以改善:

  • 工具包沒有覆蓋機器視覺方面的內容,因此機器人的傳感器只能處理非圖像環境信息。要想給機器人加一雙眼睛,需要下載計算機視覺工具箱(Computer Vision Toolbox)或圖像處理工具箱(Image Processing Toolbox)

  • 工具包無法利用大數據,這在高度信息化的今天,對機器人的成長是不利的。要想讓機器人擁有大數據處理技能,需要統計及機器學習工具箱(Statistics and Machine Learning Toolbox)或深度學習工具箱(Deep Learning Toolbox)。 

小時候在看《終結者》、《黑客帝國》等科幻電影時,總認為像「機器人三定律」這樣的元素離真實世界還很遙遠。然而隨著計算機視覺、機器學習、深度學習等人工智慧相關領域的迅速發展,這些科幻電影裡的元素會離現實越來越近。小編希望這篇文章能對大家有所啟發,真正的學習要從興趣開始,而總有一天,你我會圓夢在今朝! 

號外:5月28日北京時間13:30,線上技術研討會(機器人與人工智慧專題):加速智能化融合,提高產品開發效率開播,感興趣的小夥伴可以掃描二維碼或點擊閱讀原文報名參與喲!

參考文獻

[1]https://ww2.mathworks.cn/campaigns/products/trials.html?prodcode=RO&s_eid=PEP_23398

[2] https://ww2.mathworks.cn/products/robotics.html?s_eid=PEP_23398

[3] 蔡自興, 謝斌. 《機器人學》. 清華大學出版社; 2000.

[4]https://www.mathworks.com/matlabcentral/fileexchange/71130-trajectory-planning-for-robot-manipulators

相關焦點

  • 分揀 整理 機器人 零件_視覺分揀機器人 - CSDN
    驅動機構----伺服或者步進驅動器;控制機構----運動控制器,做路徑和電機聯動的算法運算控制;控制方式----有固定執行動作方式的,那就編好固定參數的程序給運動控制器;如果有加視覺系統或者其他傳感器的
  • 分揀 工業機器人
    使用SLAM雷射導航,無需地面鋪設二維碼,充分體現了柔性自動化特點;分揀機器人:適用於自動分揀場景,包括無需鋼平臺的分揀產品等。目前,Geek+的機器人解決方案已成功覆蓋電商、鞋服、零售、快遞、製造業等不同行業,重點客戶涵蓋天貓、蘇寧、唯品會、順豐、中國郵政等行業巨頭。
  • 上海交大研發超視覺垃圾分揀機器人—新聞—科學網
    這裡沒有身穿厚重工作服帶著手套、口罩,埋頭分垃圾的工人,取而代之的是不停往返的機械手以及穿插有序的輸送軌道——上海交大中英國際低碳學院固體廢棄物資源化技術與智能裝備團隊研發的超視覺垃圾分揀機器人正在工作。
  • 火眼金睛識別垃圾,交大團隊研發超視覺垃圾分揀機器人
    打破了國外技術壟斷,每小時分揀垃圾5400次。上海交大中英國際低碳學院固體廢棄物資源化技術與智能裝備團隊研發了一款超視覺垃圾分揀機器人,可以快速在大量垃圾中精準識別可回收物,大大節約人力成本,讓垃圾分類工作變得輕鬆。
  • 每小時分揀5400次 上海交大超視覺機器人助力垃圾分類
    圖說:上海交大超視覺機器人助力垃圾分類 新民晚報記者 易蓉 攝生活垃圾來源廣、組成複雜、性狀不一,海量幹垃圾分揀仍依賴大量人工參與。記者今天從上海交通大學獲悉,上海交大中英國際低碳學院固體廢棄物資源化技術與智能裝備團隊研發的超視覺垃圾分揀機器人打破國外技術壟斷,可以精準識別可回收物,每小時可分揀垃圾5400次,大大節約了人工成本,助力垃圾分類處理的關鍵環節。目前,這款機器人已進入產學研技術推廣階段,團隊將與國內環保頭部企業對接合作與共同開發,儘快推進市場應用。
  • 智能分揀機器人如何對混合生活垃圾精準分選
    幾位分揀工人戴著厚厚的皮手套,彎著腰,從一堆果殼、泡麵盒、塑料瓶、拖鞋、髒紙巾、尿不溼、碎玻璃裡面,將可回收物一一分揀出來,分別投放到塑料瓶、易拉罐、玻璃、鞋類等投放口,投放口下端就是手推式的料車——這就是混合生活垃圾的人工分揀現場。
  • Flipkart向印度班加羅爾投放分揀機器人
    印度電商巨頭 Flipkart,剛剛向自家位於班加羅爾的分揀中心,投放了一批能夠自動引導的機器人(簡稱 AGV)。這套解決方案可通過掃描識別條碼,對包裝進行高效、準確地分類,極大地減少了人工的介入。在提升現有設施物流吞吐率的同時,還減少了對空間拓展的需求。
  • 工業機器人自動分揀概念_分揀機器人 - CSDN
    --------------------- 作者:ml_lsc 來源:CSDN 原文:https://blog.csdn.net/u011421866/article/details/73292141 版權聲明:本文為博主原創文章,轉載請附上博文連結!
  • 配送、感知、分揀……多款自主品牌機器人亮相高新區
    青島新聞網11月24日訊(記者 任俊峰)11月23日,2020中國機器人產業發展大會在青島高新區隆重啟幕。業界領袖、專家學者、企業家齊聚一堂,以「應對新挑戰 擁抱新科技 抓住新機遇」為主題,聚焦機器人行業發展的主要問題,持續推動跨領域間的合作,構建中國機器人產業生態圈。
  • 搬運機器人分為_搬運機器人分為哪幾種 - CSDN
    設計理念:「貨架到人」 ——在所有涉及到分揀庫區的業務流程中,員工都無需進入分揀庫區內部,只需在工作站等待,系統會自動指派移動機器人將目標貨架運到工作站,待員工在系統指導下完成業務後,再將貨架送回到分揀庫區。
  • 機器人挑選,自動化分揀……青島5A級物流企業智能無人倉「雙十一...
    關節機器人用機器觸手360度無死角運行。智能無人倉存儲全自動「今年,全國共有27家企業榮膺5A級。其中,青島3家企業同時申報並成功獲評5A級,創我市一個批次獲評數量之最,佔全國本批次獲評5A級企業總量的1/9。」市物流協會秘書長李波告訴記者。目前,青島A級企業總數達到87家,數量居全省首位。
  • 協作並聯機器人新品發布——勃肯特開啟並聯機器人新紀元
    此次工博會除該協作並聯機器人外,勃肯特還將在工博會現場展示其全新IP68防水防腐Dawn-1200、微米級直線驅動機器人、可拓展模組機器、工業機器視覺BKT-VS01等系列產品。    微米級直線驅動機器人配合柔性振動盤,可用於晶片、珠寶、手錶等精密部件的理料分揀,搭載高解析度光柵尺,重複定位精度可達0.05um。  可拓展模組機器Huricane-700,顛覆傳統並聯機器人空間局限,增加平面旋轉自由度,讓機器人再鞏固走空間內,在複雜工況中隨心所欲工作!
  • 五大機器人回答終極靈魂拷問,準確率95%
    垃圾分揀機器人回答終極靈魂拷問。智東西8月2日消息,垃圾分類已經成為了社會熱點話題,在近日舉行的2019世界機器人大賽上,有不少參賽隊伍展示了垃圾分揀機器人。這些機器人的共同特點就是通過視覺技術對傳送帶上的垃圾進行分類,再通過機械臂抓取物體扔進正確的垃圾桶內。
  • 像瓢蟲一樣飛翔的摺疊式機器人
    研究人員通過指示其中一個遙控機器人跳下屋頂,鞭打翅膀在空中傳播並滑到地面來對其進行了測試。他們在大樓二樓扔了另一個機器人。滑到地面後,機器人重新張開翅膀,沿著地面爬行。該團隊還發現,該設計可用於製造可以拍打翅膀的機器人。
  • 發那科機器人控制櫃結構圖 - CSDN
    深圳市山龍智控有限公司 SCARA視覺螺絲機系列及六關節塗膠機器人深圳市山龍智控有限公司是一家專注於數位化智能製造裝備的研發、生產和銷售的高科技企業,是行業領先的機器人解決方案供應商。 深圳辰視智能科技有限公司辰視智能擁有基於深度學習的三維視覺引導、機器人運動控制、視覺檢測、三維建模等方面的核心技術,並研發了機器人三維視覺引導系統 、機器人二維視覺引導系統、三維檢測系統、產品外觀檢測系統等可根據客戶需求定製化的智能產品。
  • 郴州abb機器人怎麼保養
    京東的智慧物流科技布局則強調「無人」的特點:擁有3D視覺系統、動態分揀、自動更換端拾器等功能的DELTA型分揀機器人,可以慣性導航、自動避障的智能搬運機器人AGV,運行速度高、定位準確、性能穩定、安全監測的SHUTTLE貨架穿梭車,高重複定位精度、載荷高達165公斤、臂展接近3米的六軸機器人6-AXIS……京東構建了一套系統化的整體物流解決方案,支持分揀、搬運、拆碼垛等倉儲全流程的自主實現。
  • 納米機器人
    這項具有由DNA製成的微型機器人,具備分揀、搬運分子貨物的能力。 錢璐璐的團隊研究人員表示,這樣的DNA機器人不僅可以對不同螢光分子進行識別、分揀,並可以將目標分子轉運到特殊地點「卸貨」,當多機器人協同工作時,準確率更是接近100%。
  • 熱點|全國A類賽事賽場上大放異彩的LEO智能移動抓取機器人!
    其中最引人注目的當屬模擬物流分揀場景的視覺識別移動抓取挑戰賽。共有7支隊伍脫穎而出,參加了決賽,並在決賽現場展現出了非凡的實力。,參賽選手構建可抓取貨物的機器人,編寫機器人建圖與自主導航算法,導航至貨物分揀臺,識別貨物,對機械臂運動控制規劃,抓取貨物並導航運送至正確的貨物放置盒,定位識別,抓取貨物投入其中。
  • 創科視覺:開創國內3D機器視覺新高度
    在3C電子行業,機器視覺的應用越來越普遍,無論是零部件的檢測還是整機產品的檢測,機器視覺都起到了重要作用。而作為自動化設備的「眼睛」,機器視覺對企業進行智能化轉型升級也尤為重要。而作為國內最早投身視覺軟體開發的企業之一,創科在機器視覺領域可謂積累深厚。
  • 3D視覺「走勢圖」
    這也是國內企業真正的優勢所在,例如機器人運動算法、應用工藝包(拆碼垛、分揀等)。 這也從側面印證了目前國內的3D視覺企業主要集中在應用層。應用層中,工業場景中視覺的應用主要體現在引導定位、檢測、高精度測量以及圖像識別等幾方面,其中外觀檢測、識別等應用,2D視覺完全可以滿足,例如讀碼器、外觀檢測等等。