機器人工具箱學習(三)

一、動力學方程

??機器人的動力學公式描述如下:
在這里插入圖片描述
式中, τ \boldsymbol{\tau} τ表示關節驅動力矩矢量; q , q ˙ , q ¨ \boldsymbol{q} ,\; \dot{\boldsymbol { q }} ,\; \ddot{\boldsymbol { q }} q,q˙?,q¨?分別為廣義的關節位置、速度和加速度; M \boldsymbol{M} M為關節的空間慣量矩陣; C \boldsymbol{C} C為科氏力和離心力耦合矩陣; G \boldsymbol{G} G為重力; F f \boldsymbol{F}_f Ff?為關節摩擦力。

??機器人的動力學參數包括慣性參數和摩擦參數。
??(1)慣性參數有:連桿質量 m m m、相對于連桿坐標系的質心矢量 r \boldsymbol{r} r和轉動慣量矩陣 I \boldsymbol{I} I。其中,質心矢量 r \boldsymbol{r} r可以表示為:
在這里插入圖片描述
式中, r x r_x rx? r y r_y ry? r z r_z rz?分別表示質心矢量 r \boldsymbol{r} r在連桿坐標系下三個坐標軸的分量。轉動慣量矩陣 I \boldsymbol{I} I為包含六個獨立元素的二維矩陣,表示為:
在這里插入圖片描述
式中,主對角元素為慣性矩,非主對角元素為慣性積。

??(2)機器人動力學建模中常用的摩擦模型為庫倫-粘滯摩擦模型,其表達式為:
在這里插入圖片描述
式中, f c f_c fc? f v f_v fv?分別表示庫倫摩擦系數和粘滯摩擦系數; v v v表示關節速度。注意:對于庫倫摩擦系數的處理不同人有不同的處理,有的地方認為庫倫摩擦是對稱的,即當機器人關節正向旋轉和反向旋轉時,庫倫摩擦力大小相等,方向相反,也即 f c + = f c ? f_c^+ = f_c^- fc+?=fc??;也有的地方認為庫倫摩擦是非對稱的,即當機器人關節正向旋轉和反向旋轉時,庫倫摩擦力大小不相等。

二、機器人工具箱描述動力學方程

2.1 動力學參數賦值

??在機器人工具箱中,提供了如下動力學參數輸入接口:
??(1)Link.m:表示連桿的質量;
??(2)Link.r:表示連桿的質心矢量;
??(3)Link.I:表示連桿的慣量矩陣;
??(4)Link.Jm:表示驅動電機的轉動慣量;
??(5)Link.B:表示粘滯摩擦系數;
??(6)Link.Tc:表示庫倫摩擦系數;
??(7)Link.G:表示電機齒輪傳動比(默認為1)

??這里仍然以3-DOF平面機械臂為例:

%% 動力學
% RRR機械臂
clear;
close all;
clc;%               theta(z)   d(z)     a(x)     alpha(x)  
RRR_L(1) = Link([  0       0        1        0    ],'standard');
RRR_L(2) = Link([  0       0      0.8        0    ],'standard');
RRR_L(3) = Link([  0       0      0.6        0    ],'standard');% 連桿1動力學參數
RRR_L(1).m = 4.0;
RRR_L(1).r = [0.12; 0.08; 0.31];
RRR_L(1).I = [0.32 0.01 0.02;0.01 0.12 0.11;0.02 0.11 0.41];
RRR_L(1).Jm = 0.0012;
RRR_L(1).B = 0.00148;
RRR_L(1).Tc = [+0.395, -0.435];
RRR_L(1).G = 1.2;% 連桿2動力學參數
RRR_L(2).m = 15.2;
RRR_L(2).r = [-0.475; 0.097; 0.06];
RRR_L(2).I = [1.21 0.21 0.32;0.21 0.52 0.11;0.32 0.11 0.51];
RRR_L(2).Jm = 0.0048;
RRR_L(2).B = 0.00329;
RRR_L(2).Tc = [+0.462; -0.561];
RRR_L(2).G = 1.4;% 連桿3動力學參數
RRR_L(3).m = 0.6;
RRR_L(3).r = [0.01; 0.097; 0.016];
RRR_L(3).I = [0.021 0.03 0.382;0.03 0.152 0.11;0.382 0.11 0.651];
RRR_L(3).Jm = 0.0061;
RRR_L(3).B = 0.00429;
RRR_L(3).Tc = [+0.262; -0.661];
RRR_L(3).G = 1.7;three_link = SerialLink(RRR_L, 'name', '3-DOF');

??采用dyn( )函數可以查看動力學參數,如圖所示:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

2.2 動力學方程中的各項表示

(1)空間慣量矩陣 M ( q ) \boldsymbol{M}(\boldsymbol{q}) M(q)
??機器人的空間慣量是機器人各關節的位姿的函數,在不同機器人位形時具有不同的值。機器人工具箱中可以調用robot.inertia(q)函數獲得空間慣量矩陣。
??例如:當3-DOF平面機械臂三個關節角度為30°、45°和60°時,其空間慣量矩陣為:
在這里插入圖片描述

(2)科氏力和離心力耦合矩陣 C ( q , q ˙ ) \boldsymbol{C}(\boldsymbol{q},\dot{\boldsymbol{q}}) C(q,q˙?)
??科氏力和離心力耦合矩陣是關節位置和速度的函數。機器人工具箱中可以調用robot.coriolis(q, qd)函數獲得該耦合矩陣。
??例如:當3-DOF平面機械臂三個關節角度為30°、45°和60°,三個關節速度為10°/s、20°/s和30°/s時,其科氏力和離心力耦合矩陣為:
在這里插入圖片描述

(3)重力矩陣 G ( q ) \boldsymbol{G}(\boldsymbol{q}) G(q)
??重力矩陣與機器人的位形有關,是對各關節所受重力的描述,其值不受機器人的運動的影響。機器人工具箱中可以調用robot.gravload(q, grav)函數來獲得重力矩陣,其中grav自定義重力加速度向量。
??例如:當3-DOF平面機械臂三個關節角度為30°、45°和60°,重力加速度向量為 y y y軸負向,即grav = [0; -9.8; 0]。重力矩陣為:
在這里插入圖片描述

(4)摩擦力矩陣 F f ( q ˙ ) \boldsymbol{F}_f(\dot{\boldsymbol{q}}) Ff?(q˙?)
??摩擦力矩陣是由各關節的給定摩擦參數數值決定的,大小與各關節的速度有關。機器人工具箱中可以調用robot.friction(qd)函數來獲得重力矩陣。
??例如:當3-DOF平面機械臂三個關節速度為10°/s、20°/s和30°/s時,其摩擦力矩陣為:
在這里插入圖片描述

三、逆動力學分析

??機器人的逆動力學分析是在給定機器人關節位置、速度和加速度時,計算得到機器人各關節所需要的力和力矩大小。機器人工具箱中可以調用robot.rne(q, qd, qdd, grav)函數來計算逆動力學。其中,q, qd, qdd分別表示機器人關節位置、速度和加速度;grav表示自定義的重力加速度矢量。除此之外,還可以添加參數fext,表示末端執行器受到的外力和力矩 [ F x , F y , F z , τ x , τ y , τ z ] [F_x,\: F_y,\: F_z,\: \tau_x,\: \tau_y,\: \tau_z] [Fx?,Fy?,Fz?,τx?,τy?,τz?]
??例子:讓3-DOF平面機械臂按照下圖所示的軌跡運動。
在這里插入圖片描述

代碼:

%% 動力學
% RRR機械臂
clear;
close all;
clc;%               theta(z)   d(z)     a(x)     alpha(x)  
RRR_L(1) = Link([  0       0        1        0    ],'standard');
RRR_L(2) = Link([  0       0      0.8        0    ],'standard');
RRR_L(3) = Link([  0       0      0.6        0    ],'standard');% 連桿1動力學參數
RRR_L(1).m = 4.0;
RRR_L(1).r = [0.12; 0.08; 0.31];
RRR_L(1).I = [0.32 0.01 0.02;0.01 0.12 0.11;0.02 0.11 0.41];
RRR_L(1).Jm = 0.0012;
RRR_L(1).B = 0.00148;
RRR_L(1).Tc = [+0.395, -0.435];
RRR_L(1).G = 1.2;% 連桿2動力學參數
RRR_L(2).m = 15.2;
RRR_L(2).r = [-0.475; 0.097; 0.06];
RRR_L(2).I = [1.21 0.21 0.32;0.21 0.52 0.11;0.32 0.11 0.51];
RRR_L(2).Jm = 0.0048;
RRR_L(2).B = 0.00329;
RRR_L(2).Tc = [+0.462; -0.561];
RRR_L(2).G = 1.4;% 連桿3動力學參數
RRR_L(3).m = 5.6;
RRR_L(3).r = [0.01; 0.097; 0.016];
RRR_L(3).I = [0.921 0.03 0.382;0.03 0.252 0.11;0.382 0.11 1.251];
RRR_L(3).Jm = 0.0061;
RRR_L(3).B = 0.00429;
RRR_L(3).Tc = [+0.262; -0.661];
RRR_L(3).G = 1.7;three_link = SerialLink(RRR_L, 'name', '3-DOF');delta_t = 0.02;
t = 0:delta_t:4;
m = length(t);theta1 = 60*sin(4*pi*t/4);
theta2 = 60*sin(2*pi*t/4);
theta3 = 30*sin(2*pi*t/4);theta1_d = 60*pi*cos(4*pi*t/4);
theta2_d = 30*pi*cos(2*pi*t/4);
theta3_d = 15*pi*cos(2*pi*t/4);theta1_dd = -60*pi*pi*sin(4*pi*t/4);
theta2_dd = -15*pi*pi*sin(2*pi*t/4);
theta3_dd = -7.5*pi*pi*sin(2*pi*t/4);q = [theta1;theta2;theta3]'*pi/180;
qd = [theta1_d;theta2_d;theta3_d]'*pi/180;
qdd = [theta1_dd;theta2_dd;theta3_dd]'*pi/180;% 關節位置、速度、加速度繪圖
figure(1)
subplot(3,1,1)
plot(t, q(:,1)*180/pi, 'b')
hold on
plot(t, q(:,2)*180/pi, 'r--')
hold on
plot(t, q(:,3)*180/pi, 'm')
xlabel('time (s)', 'Interpreter', 'latex')
ylabel('$\theta$ (deg)', 'Interpreter', 'latex')
legend('$\theta_1$','$\theta_2$','$\theta_3$', 'Interpreter', 'latex')
set(gca, 'FontName','Times New Roman')subplot(3,1,2)
plot(t, qd(:,1)*180/pi, 'b')
hold on
plot(t, qd(:,2)*180/pi, 'r--')
hold on
plot(t, qd(:,3)*180/pi, 'm')
xlabel('time (s)', 'Interpreter', 'latex')
ylabel('$\dot{\theta}$ (deg)', 'Interpreter', 'latex')
legend('$\dot{\theta_1}$','$\dot{\theta_2}$','$\dot{\theta_3}$', 'Interpreter', 'latex')
set(gca, 'FontName','Times New Roman')subplot(3,1,3)
plot(t, qdd(:,1)*180/pi, 'b')
hold on
plot(t, qdd(:,2)*180/pi, 'r--')
hold on
plot(t, qdd(:,3)*180/pi, 'm')
xlabel('time (s)', 'Interpreter', 'latex')
ylabel('$\ddot{\theta}$ (deg)', 'Interpreter', 'latex')
legend('$\ddot{\theta_1}$','$\ddot{\theta_2}$','$\ddot{\theta_3}$', 'Interpreter', 'latex')
set(gca, 'FontName','Times New Roman')set(gcf, 'color',[1 1 1]);% 運動示意
figure(2)
three_link.plot(q,'trail','b');% 逆動力學
grav = [0; -9.8; 0];
tau = three_link.rne(q, qd, qdd, grav);% 關節驅動力矩
figure(3)
plot(t,tau(:,1), 'b')
hold on
plot(t, tau(:,2), 'r--')
hold on
plot(t, tau(:,3), 'm')
xlabel('time (s)', 'Interpreter', 'latex')
ylabel('$\tau$ (N/m)', 'Interpreter', 'latex')
legend('$\tau_1$','$\tau_2$','$\tau_3$', 'Interpreter', 'latex')
set(gca, 'FontName','Times New Roman')
set(gcf, 'color',[1 1 1]);

運行結果:
在這里插入圖片描述
在這里插入圖片描述

四、結語

??機器人工具箱還有其他的一些應用,譬如正動力學分析、視覺相關應用等,不過筆者對這些沒有接觸過,就不誤導大家了。
??我是木頭人,以上全是個人見解,有問題請大家評論區指出,大家共同進步!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12747.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12747.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12747.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp如何打包預約上門按摩APP

uniapp如何打包預約上門按摩APP? 開發工具:HBuilderX 一、創建移動應用 1、 點擊此處微信開放平臺 2、點擊【管理中心 - 移動應用 - 創建移動應用】填寫資料后等待審核 app運行流程圖 簽名如何獲取: 1)先把打包好的app安裝在手…

uniapp 小程序低功耗藍牙配網 ble配網 物聯網

1.獲取藍牙列表 bleList.vue <template><view><button touchstart"startSearch">獲取藍牙列表</button><scroll-view :scroll-top"scrollTop" scroll-y class"content-pop"><viewclass"bluetoothItem&q…

java多線程——線程池

概述 線程池是管理java線程生命周期的工具 降低資源消耗。通過池化技術能夠重復利用已創建的線程&#xff0c;降低線程頻繁創建和銷毀造成的資源消耗提高線程的可管理性。無需程序員手動銷毀線程&#xff0c;控制線程創建的數量&#xff0c;避免無限制的創建影響系統穩定性 …

找不到kotlin.Pair的類文件

需要添加kotlin的依賴&#xff1a; implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.22"

OpenHarmony上移植memtester

1. 下載源碼&#xff1a; wget https://pyropus.ca./software/memtester/old-versions/memtester-4.6.0.tar.gz 2. 解壓并指定交叉編譯方式 解壓 tar -xvf memtester-4.6.0.tar.gz 修改conf-cc和conf-ld&#xff0c;指定交叉編譯方式 conf-cc conf-ld 3. 編譯 直接運行m…

Ubuntu安裝ZLMediaKit

方式一 1、安裝vcpkg 在Ubuntu上安裝vcpkg的步驟如下&#xff1a; 安裝必要的依賴&#xff1a; 首先&#xff0c;你可能需要安裝cmake和ninja-build。你可以使用apt包管理器來安裝它們&#xff1a; bash復制代碼sudo apt install cmake ninja-build下載vcpkg源碼&#xff1a;…

后端開發面經系列 -- 阿里C++二面面經

阿里C二面面經 公眾號&#xff1a;阿Q技術站 來源&#xff1a;https://www.nowcoder.com/feed/main/detail/fc4a48403b534aafa6a6bce14b542c4e?sourceSSRsearch 1、智能指針&#xff1f; std::shared_ptr&#xff1a; 原理&#xff1a;std::shared_ptr是基于引用計數的智能指…

Stable Diffusion入門使用技巧及個人實例分享--大模型及lora篇

大家好&#xff0c;近期使用Stable Diffusion比較多&#xff0c;積累整理了一些內容&#xff0c;得空分享給大家。如果你近期正好在關注AI繪畫領域&#xff0c;可以看看哦。 本文比較適合已經解決了安裝問題&#xff0c;&#xff08;沒有安裝的在文末領取&#xff09; 在尋找合…

【RAG】Linux系統下ppt轉pptx,讀取解析pptx文本數據

前情提要 檢索增強生成&#xff08;RAG&#xff09;技術&#xff0c;作為 AI 領域的尖端技術&#xff0c;能夠提供可靠且最新的外部知識&#xff0c;極大地便利了各種任務。在 AI 內容生成的浪潮中&#xff0c;RAG 通過其強大的檢索能力為生成式 AI 提供了額外的知識&#xff…

vue3 動態加載頁面

首先&#xff0c;通過下面代碼告訴編譯器要編譯哪些頁面 static modules import.meta.glob(./views/**/*.vue);然后動態加載函數這樣寫&#xff1a; static asyncLoadView (path: string) > {return defineAsyncComponent({loader: <any>Global.modules[./views/${…

Redis的跳表:高效實現有序集合

在 Redis 中&#xff0c;跳表&#xff08;Skip List&#xff09;是一種常用的數據結構&#xff0c;用于實現有序集合&#xff08;Sorted Set&#xff09;。跳表是一種基于鏈表的數據結構&#xff0c;具有快速的查找、插入和刪除操作&#xff0c;適用于有序集合的實現。 本文將…

分布式搜索——ElasticSeach簡介

一般都用數據庫存儲數據&#xff0c;然后對數據庫進行查詢獲取數據&#xff0c;但是當數據量很大時&#xff0c;查詢效率就會很慢&#xff08;具體下面會講到&#xff09;&#xff0c;所以這種情況下就會使用到ElasticSeach ElasticSeach的基本介紹 ElasticSeach是一 款非常強…

2024重慶高等教育博覽會|2024重慶高教展|全國高等教育博覽會

2024重慶高等教育博覽會|2024重慶高教展|全國高等教育博覽會 第62屆全國高等教育博覽會&#xff08;2024.秋季重慶&#xff09; 時間&#xff1a;2024年11月15-17日 地點&#xff1a;重慶國際博覽中心 組織機構 主辦單位&#xff1a;中國高等教育學會 承辦單位&#xff1a;國藥…

杰發科技AC7801——ADC之Bandgap和內部溫度計算

0. 參考 電流模架構Bandgap設計與仿真 bandgap的理解&#xff08;內部帶隙電壓基準&#xff09; ? ? 雖然看不懂這些公式&#xff0c;但是比較重要的一句應該是這個&#xff1a;因為傳統帶隙基準的輸出值為1.2V ? 1. 使用 參考示例代碼。 40002000是falsh控制器寄…

NXP RT1176(一)——二級BootLoader開發(安全引導加載程序SBL)

目錄 1. 開發環境 2. 二級BOOT的功能 3. 步驟 3.1 配置源碼 3.2 構建項目 3.2.1 MDK 3.2.2 IAR&#xff08;IAR也編譯一下工程看看&#xff0c;這樣兩個平臺都可以支持了&#xff09; 單核M7的開發&#xff01;&#xff01; 1. 開發環境 本文Windows下開發&#xff1a;…

【無標題】vo dto

在Java中&#xff0c;VO、PO、DTO都是常用的數據對象模型。 VO&#xff08;Value Object&#xff09;是值對象&#xff0c;通常用于表示一個業務實體或者頁面展示的內容。VO通常包含了多個屬性&#xff0c;并且這些屬性的類型和名稱與業務相關。VO并不一定與數據庫中的表結構相…

MHD、MQA、GQA注意力機制詳解

MHD、MQA、GQA注意力機制詳解 注意力機制詳解及代碼前言&#xff1a;MHAMQAGQA 注意力機制詳解及代碼 前言&#xff1a; 自回歸解碼器推理是 Transformer 模型的 一個嚴重瓶頸&#xff0c;因為在每個解碼步驟中加 載解碼器權重以及所有注意鍵和值會產生 內存帶寬開銷 下圖為三…

鞏固學習8

在 Pandas 中&#xff0c;sep參數用于指定數據中字段之間的分隔符。常見的參數包括&#xff1a; 逗號&#xff1a;,&#xff0c;常用于CSV文件。 制表符&#xff1a;\t&#xff0c;常用于TSV文件。 空格&#xff1a;’ &#xff0c;用于空格分隔的數據。 分號&#xff1a;;&…

【合成孔徑雷達】合成孔徑雷達的多視角理解和時/頻成像算法的統一解釋

文章目錄 一、什么是雷達成像&#xff08;1&#xff09;主要的遙感探測手段&#xff1a;光學、紅外和雷達&#xff08;2&#xff09;從數學的角度&#xff1a;雷達成像主要研究什么&#xff1f;數據采集&#xff1a; y T x n yTxn yTxn信息提取&#xff1a; y ? > x ? y…

編譯錯誤:stray ‘\357’ in program的解決方法

目錄 把報錯文件更換編碼格式&#xff0c;我試的utf-8 bom編碼就可以了&#xff0c;可以多換幾種試試。 網友的另一種案例&#xff1a; 編譯錯誤&#xff1a;stray ‘\357’ in program的解決方法 把報錯文件更換編碼格式&#xff0c;我試的utf-8 bom編碼就可以了&#xff0c…