機器人學是研究自動化系統和機器人的一門技術科學。機器人小車、無人機和其他各種機器人已經在現代生活和工業領域中扮演著越來越重要的角色。機器人工具箱是 MATLAB 的一個工具箱,專門用於機器人動力學、運動規劃和控制,為機器人建模、模擬和控制提供了便利。這個工具箱是由 Peter Corke 教授所開發,和維護的。這篇文章主要介紹機器人工具箱,包括其的基礎知識,庫函數和一些使用例子。
一、機器人工具箱基礎
機器人工具箱是為了簡化通常需要進行的機器人控制任務而開發的工具,其中包括一個完整的模擬環境以及一個強大的 Kinematics 庫和 Dynamics 庫,這些庫可以讓你完成很多的機器人任務,例如機器人路徑規劃、逆運動學求解和運動控制等。
機器人工具箱基於 MATLAB 環境開發,為用戶提供了許多的功能。工具箱的核心部分是 Robotics System Toolbox™,它為你提供了創建、模擬和可視化多種類型機器人的工具和函數,包括牛頓歐拉動力學模型、前向和反向運動學模型等,可以應用於各種機器人的身體類型和運動變換,從人型機器人到輪式和飛行器等不同類型。
機器人工具箱中的 Robotics System Toolbox™ 可以大大簡化和加速機器人應用程序的開發過程。它提供了強大的演算法和功能,例如廣義 jacobians、catching 計算等,為高級機器人應用程序提供必要的工具,而且對機器人模擬的支持也是非常豐富。
二、機器人工具箱庫函數
機器人工具箱提供了多個庫函數,包括但不限於運動規劃、三維可視化、機器人建模控制等庫函數。下面就簡單介紹一些機器人工具箱中常用的庫函數。
1、變換庫函數
機器人工具箱提供了一些用於運動學和動力學變換的庫函數,最重要的庫函數是基於齊次變換矩陣描述的四元數和歐拉角。例如:
% 創建旋轉矩陣
R = rotx(angX) * roty(angY) * rotz(angZ);
% 創建平移向量
T = [x, y, z];
% 創建變換矩陣
tr = [R, T'; zeros(1, 3), 1];
% 把一個矩陣從一幀轉換成另一幀
new_mat = tr*old_mat*inv(tr);
2、Mechanism 類庫函數
Mechanism 類是用於描述機器人結構的類,包括一些基本屬性和方法,可以方便地進行常見機器人運動規劃和控制。如下面的例子所示:
% 創建一個機器人模型
my_robot = rigidBodyTree();
% 添加初始位置的關節
jnt = rigidBodyJoint('jnt1', 'revolute');
% 設置父體和子體
l_hw = rigidBody('link1');
jnt.setParent(l_hw);
my_robot.BaseJnt = jnt;
my_robot.addBody(l_hw, 'base');
3、路徑庫函數
路徑規劃是機器人控制的核心部分,機器人工具箱中提供了多種用於路徑規劃的庫函數。如下面的例子所示:
% 初始化路勁規劃器
planner = msgswarm.Planner('Size', [12, 12]);
% 添加起點
planner.AddStartNode([6, 4, 0]);
% 定義目標
target = msgswarm.Target([3, 6, 0]);
% 運行路勁規劃器
planner.Run(target);
% 得到規劃結果
waypoints = planner.Waypoints();
三、機器人工具箱使用例子
下面我們列出一些機器人工具箱官方提供的使用例子,供讀者參考。
1、機械臂運動規劃
這是一個機械臂在三維空間中運動規劃的例子,例如人類手臂可以像這樣移動:
% 創建機械臂模型
robot = loadrobot('abb','IRB120');
% 設計隨機運動路徑
waypoints = [0.5 -0.4 0.248; 0.5 -0.1 0.3; 0.5 -0.1 0.5; 0.4 -0.5 0.8;...
0.4 -0.1 1.2; 0.4 0.5 0.8; 0.4 -0.1 0.5; 0.4 0.1 0.3;...
0.4 0.1 0.248];
% 進行路徑規劃
[Q,~,~] = ikunc(robot, waypoints);
[result, waypoints] = plan(robot, Q);
% 修改世界坐標系中的機械臂位置
robot.EndEffectorOffset = trvec2tform([0 0 -0.1]);
result = plan(robot, Q);
2、指定路徑上運動的機器人
這是一個演示機器人沿著一條指定路徑移動的例子:
% 定義路徑和其他參數
path = [0 0 0;1 1 1;2 2 1;2 2.5 1.5; 3 3 3];
samples = 100;
connector = 'RigidBodyTree';
baseTransform = trvec2tform([2 2 2]);
% 沿路徑進行機器人控制
[traj,states] = preview_path(path,samples,connector,baseTransform);
3、逆運動學求解
下面的例子演示了如何進行逆運動學求解,控制 YRRBot 神經網路在二維平面上移動:
% 創建 YRRBot 神經網路
yrrbot = loadrobot("pa10");
% 設計起點和終點
q1 = yrrbot.homeConfiguration;
q2 = yrrbot.homeConfiguration;
q2(2) = q2(2) - deg2rad(30);
% 進行逆運動學求解
[nodes,edges] = inverse_kinematics(yrrbot,q1,q2,"verbose",false);
V = biograph(edges,nodes);
% 可視化
view(V);
總結
本文簡要介紹了機器人工具箱的基礎知識、常用庫函數和使用例子,其中包括變換庫函數、Mechanism 類庫函數和路徑庫函數等。機器人工具箱在機器人建模、模擬和控制方面非常有用,旨在為機器人設計和開發人員提供最簡單和最功能強大的工具。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/151654.html