Динамический анализ шестиосного робота-манипулятора MATLAB

1 Обзор

В основе динамики лежит второй закон Ньютона, который устанавливает взаимосвязь между силой, ускорением и массой.
В динамике частиц есть два основных типа задач:
одна — найти движение частицы с учетом силы, действующей на частицу.Это положительная динамика.
Второй — узнать движение частицы и найти силу, действующую на частицу.Это относится к обратной динамике.

При решении задач первого типа достаточно взять производную второго порядка уравнения движения частицы, чтобы получить ускорение частицы, а затем подставить второй закон Ньютона, чтобы найти силу
. задаче, вам необходимо решить дифференциальное уравнение движения частицы или вычислить интеграл. Так называемое дифференциальное уравнение движения частицы заключается в том, чтобы записать второй закон движения в виде уравнения, содержащего производную координат частицы по времени.

В этом разделе в основном используется Matlab для ознакомления с практическим применением динамики в области робототехники.

2. Кинетические параметры

На примере робота-манипулятора p560 давайте проверим его динамические параметры.
Сначала запустите набор инструментов робота. Если вы не установили этот пакет, вы можете проверить: Набор инструментов rvctools MATLAB, чтобы ознакомиться с кинематикой [Пример робота-манипулятора]
Далее мы будет Робот загружен. Есть много встроенных роботов. Здесь мы решили использовать робота p560, чтобы увидеть, какие параметры атрибутов, связанные с динамикой, имеет этот робот. С помощью функции dyn  мы можем получить атрибуты инерции каждого соединения как следует: 

startup_rvc
mdl_puma560
p560.dyn

Link 1::Revolute(std): theta=q, d=0, a=0, alpha=1.5708, offset=0
  m    = 0          
  r    = 0           0           0          
  I    = | 0           0           0           |
         | 0           0.35        0           |
         | 0           0           0           |
  Jm   = 0.0002     
  Bm   = 0.00148    
  Tc   = 0.395      (+) -0.435     (-)
  G    = -62.61     
  qlim = -2.792527 to 2.792527

Link 2::Revolute(std): theta=q, d=0, a=0.4318, alpha=0, offset=0
  m    = 17.4       
  r    = -0.3638     0.006       0.2275     
  I    = | 0.13        0           0           |
         | 0           0.524       0           |
         | 0           0           0.539       |
  Jm   = 0.0002     
  Bm   = 0.000817   
  Tc   = 0.126      (+) -0.071     (-)
  G    = 107.8      
  qlim = -0.785398 to 3.926991

Link 3::Revolute(std): theta=q, d=0.15005, a=0.0203, alpha=-1.5708, offset=0
  m    = 4.8        
  r    = -0.0203     -0.0141     0.07       
  I    = | 0.066       0           0           |
         | 0           0.086       0           |
         | 0           0           0.0125      |
  Jm   = 0.0002     
  Bm   = 0.00138    
  Tc   = 0.132      (+) -0.105     (-)
  G    = -53.71     
  qlim = -3.926991 to 0.785398

Link 4::Revolute(std): theta=q, d=0.4318, a=0, alpha=1.5708, offset=0
  m    = 0.82       
  r    = 0           0.019       0          
  I    = | 0.0018      0           0           |
         | 0           0.0013      0           |
         | 0           0           0.0018      |
  Jm   = 3.3e-05    
  Bm   = 7.12e-05   
  Tc   = 0.0112     (+) -0.0169    (-)
  G    = 76.04      
  qlim = -1.919862 to 2.967060

Link 5::Revolute(std): theta=q, d=0, a=0, alpha=-1.5708, offset=0
  m    = 0.34       
  r    = 0           0           0          
  I    = | 0.0003      0           0           |
         | 0           0.0004      0           |
         | 0           0           0.0003      |
  Jm   = 3.3e-05    
  Bm   = 8.26e-05   
  Tc   = 0.00926    (+) -0.0145    (-)
  G    = 71.92      
  qlim = -1.745329 to 1.745329

Link 6::Revolute(std): theta=q, d=0, a=0, alpha=0, offset=0
  m    = 0.09       
  r    = 0           0           0.032      
  I    = | 0.00015     0           0           |
         | 0           0.00015     0           |
         | 0           0           4e-05       |
  Jm   = 3.3e-05    
  Bm   = 3.67e-05   
  Tc   = 0.00396    (+) -0.0105    (-)
  G    = 76.69      
  qlim = -4.642576 to 4.642576

Здесь отображаются атрибуты параметров шести суставов. Мы также можем просмотреть параметры одного сустава, например второго сустава: p560.dyn(2) или p560.links(2).dyn . Эти атрибуты описываются следующим образом . :

m : масса шарнира
r : вектор шестерни шарнира или центр масс
I : симметричная матрица инерции размером 3x3 (симметричная матрица - это ее транспонирование). Матрица инерции – это момент инерции твердого тела по разным координатным осям.Через собственные значения и собственные векторы матрицы симметрии можно получить главную ось и момент инерции твердого тела.
Jm : Инерция двигателя
Bm : Вязкое трение
Tc : Кулоновское трение (конечно, если кулоновское трение игнорируется: p560.nofriction().dyn , тогда Tc равно 0 и кулоновское трение отсутствует)
G : Передаточное число (скорость ведущего колеса/скорость ведомого колеса или количество зубьев ведомого колеса/зубья ведущего колеса) Если передаточное число меньше 1, это означает увеличение скорости, если больше 1, это означает замедление. Например, на велосипеде с регулируемой скоростью при подъеме на гору малая и большая шестерни используются для замедления. Это экономит усилия и облегчает вращение педалей, но требует гораздо большего количества оборотов. Следует отметить, что это экономит усилия, но это не экономит энергию.
qlim : максимальный диапазон вращения сустава

Вот как получить эти свойства:

p560.links(2).m
17.4000
p560.links(1).G
-62.6111
%其他类似...

3. Поступательная динамика

Прямая динамика также называется прямой динамикой. Это процесс определения угловой скорости и углового ускорения в зависимости от силовой ситуации.
Имитируйте движение Puma 560 в статическом состоянии с нулевым углом, а крутящий момент сустава равен нулю. С помощью функции fdyn(TMAX, FTFUN) динамика робота в течение периода времени от 0 до TMAX будет интегрирована, так что время T, можно получить соединения. Положение q, скорость соединения qd.

p560=p560.nofriction( );
tic
[T,q,qd]=p560.fdyn(10,[],qz);
toc
%时间已过 1.366665 秒。

Вы также можете самостоятельно установить крутящий момент для получения положения и скорости:

torqfun = [1 2 3 4 5 6]; 
[T,q,qd]=p560.fdyn(10,[],torqfun);

В результате движения построим график его угловой скорости во времени:

set(gcf,'Position',[10,10, 800, 1000]);
subplot(6,1,1); plot(T,qd(:,1)); xlabel('Time (s)'); ylabel('Joint 1 (rad)')
subplot(6,1,2); plot(T,qd(:,2)); xlabel('Time (s)'); ylabel('Joint 2 (rad)')
subplot(6,1,3); plot(T,qd(:,3)); xlabel('Time (s)'); ylabel('Joint 3 (rad)')
subplot(6,1,4); plot(T,qd(:,4)); xlabel('Time (s)'); ylabel('Joint 4 (rad)')
subplot(6,1,5); plot(T,qd(:,5)); xlabel('Time (s)'); ylabel('Joint 5 (rad)')
subplot(6,1,6); plot(T,qd(:,6)); xlabel('Time (s)'); ylabel('Joint 6 (rad)')

Или нарисуйте такую ​​картинку, что более интуитивно понятно. Здесь я выберу скорость от 1 до 4 суставов:

figure('Position', [10, 10, 800, 1000]);
plot(T,qd(:,1:4));
legend('q1','q2','q3','q4');
text(0.9,0.28,'\leftarrow q1');
legend('q1','q2','q3','q4');
grid on

Независимо от того, к какому рисунку вы привыкли, мы можем видеть, что скорость со временем становится равной 0, то есть механическая рука робота останавливается вертикально вниз под действием собственной силы тяжести. 

Угловое ускорение суставов

Найдите угловое ускорение, введя позу, угловую скорость и крутящий момент.
Давайте посмотрим на результаты углового ускорения каждого сустава в позе qz , а угловая скорость и момент равны 0 , а именно:

p560.accel(qz, zeros(1,6), zeros(1,6))
%结果分别为-0.2462,-8.682,3.146,0.002,0.0603,0.0001

Продемонстрируем положение роботизированной руки под действием силы тяжести (эта анимация сохранения проще, и траекторию можно нарисовать):

p560.plot(q,'trail','b-','movie','r.gif')

Анимированное изображение (поскольку его размер превышает 5M, его можно сделать только как снимок экрана, а окончательное состояние остается неподвижным) выглядит следующим образом:

4. Обратная динамика

Обратная динамика — это дисциплина, которая определяет направление и величину внешних сил, действующих на объект, на основе определенного состояния движения, которого объект хочет достичь. Учитывая угол, угловую скорость, угловое ускорение и другие значения, рассчитайте силу, необходимую каждому суставу.
Крутящий момент
шарнира Крутящий момент — это величина силы, умноженная на длину плеча момента (Ньютон*метр), поэтому, когда мы используем гаечный ключ для затягивания гайки, чем длиннее плечо момента ключа, тем легче это сделать, потому что чем больше момент .

q1 = qn;%关节位姿
qd = [5 1 0 0 0 0];  %关节角速度
qdd = [0 0 0 0 0 0]; %关节角加速度
TAU = p560.rne(q1,qd,qdd);%求解逆向动力学
TAU =

   22.1585   56.8861   -3.3693   -0.0018    0.0283    0.0002


Опция параметра «гравитация» G в rne относится к гравитации, которая представляет собой ускорение свободного падения (по умолчанию [0,0,9.81] ). Таким образом, значение по умолчанию выше: TAU = p560.rne(q,qd,qdd,[0,0,9.81]);
"fext", W определяет ключ, действующий на концевой эффектор W=[Fx Fy Fz Mx My Mz ]
«медленно» : не использовать файлы MEX.

Остальные свойства решаются следующим образом:

%关节负载:
p560.gravload(q1)
ans =
   -0.0000   31.6399    6.0351    0.0000    0.0283         0
%空间惯性矩阵:
p560.inertia(qz)
ans =

    3.9611   -0.1627   -0.1389    0.0016   -0.0004    0.0000
   -0.1627    4.4566    0.3727    0.0000    0.0019    0.0000
   -0.1389    0.3727    0.9387    0.0000    0.0019    0.0000
    0.0016    0.0000    0.0000    0.1924    0.0000    0.0000
   -0.0004    0.0019    0.0019    0.0000    0.1713    0.0000
    0.0000    0.0000    0.0000    0.0000    0.0000    0.1941
%科氏力:
qd = [0.1 0.1 0.1 0.1 0.1 0.1];
p560.coriolis(qn,qd)
%增加载荷质量:
R.payload(M, P) %在位置P增加一个质点为M的有效载荷
R.payload(0) %删除添加的有效载荷
%我们测试下:
p560.payload(1,[0 0.1 0.2])

%惯性矩阵:p560.inertia(qz)
ans =

    4.1476   -0.1880   -0.1643   -0.0034   -0.0100   -0.0050
   -0.1880    5.0224    0.7609    0.0632    0.1269    0.0632
   -0.1643    0.7609    1.3188    0.0632    0.1269    0.0632
   -0.0034    0.0632    0.0632    0.2024    0.0200    0.0100
   -0.0100    0.1269    0.1269    0.0200    0.2113    0.0200
   -0.0050    0.0632    0.0632    0.0100    0.0200    0.2041

Сравнивая предыдущую матрицу инерции, мы видим, что значение матрицы изменяется под действием внешней силы.

5. Резюме

Есть несколько простых объяснений трения:
Статическое трение, Fs: Трение в состоянии покоя
Кулоновское трение Кулоновское трение, Fc: Статическое трение + динамическое
трение Вязкое трение, Fv: Из-за трения между поверхностями объектов Трение, вызванное вязкостью. Например, трение между шарнирами и смазочным маслом обычно имеет нелинейную зависимость от скорости, и только когда скорость движения объекта относительно мала, ее приблизительно считают линейной по отношению к скорости.

Здесь видно, что есть большая разница между динамикой и кинематикой.Динамика связана с силой.Используются три закона Ньютона.По силовому анализу можно получить движение объекта, или наоборот, на основе движения.Анализировать различные силовые ситуации. Кинематика не учитывает эти факторы, главным образом геометрические свойства движения и пространственные изменения.

Guess you like

Origin blog.csdn.net/weixin_41896770/article/details/134946430