exponenta event banner

replaceBody

Заменить тело на роботе

Описание

пример

replaceBody(robot,bodyname,newbody) заменяет тело в модели робота новым телом. Все свойства тела обновляются соответствующим образом, за исключением Parent и Children свойства. Остальная часть модели робота не затрагивается.

Примеры

свернуть все

Чтобы использовать динамические функции для расчета крутящих моментов и ускорений соединения, укажите динамические свойства rigidBodyTree объект и rigidBody.

Создайте модель дерева жесткого тела. Создайте два жестких тела для присоединения к нему.

robot = rigidBodyTree('DataFormat','row');
body1 = rigidBody('body1');
body2 = rigidBody('body2');

Укажите соединения для присоединения к телам. Установка фиксированного преобразования body2 кому body1. Это преобразование имеет значение 1m в направлении X.

joint1 = rigidBodyJoint('joint1','revolute');
joint2 = rigidBodyJoint('joint2');
setFixedTransform(joint2,trvec2tform([1 0 0]))
body1.Joint = joint1;
body2.Joint = joint2;

Укажите свойства динамики для двух тел. Добавьте тела в модель робота. В этом примере основные значения для стержня (body1) с присоединенной сферической массой (body2) даны.

body1.Mass = 2;
body1.CenterOfMass = [0.5 0 0];
body1.Inertia = [0.001 0.67 0.67 0 0 0];

body2.Mass = 1;
body2.CenterOfMass = [0 0 0];
body2.Inertia = 0.0001*[4 4 4 0 0 0];

addBody(robot,body1,'base');
addBody(robot,body2,'body1');

Вычислите положение центра масс всего робота. Постройте график положения робота. Переместите вид в плоскость xy.

comPos = centerOfMass(robot);

show(robot);
hold on
plot(comPos(1),comPos(2),'or')
view(2)

Figure contains an axes. The axes contains 6 objects of type patch, line. These objects represent base, body1, body2.

Измените массу второго тела. Обратите внимание на изменение центра масс.

body2.Mass = 20;
replaceBody(robot,'body2',body2)

comPos2 = centerOfMass(robot);
plot(comPos2(1),comPos2(2),'*g')
hold off

Figure contains an axes. The axes contains 7 objects of type patch, line. These objects represent base, body1, body2.

Входные аргументы

свернуть все

Модель робота, заданная как rigidBodyTree объект. Жесткое тело добавляется к этому объекту и прикрепляется к жесткому телу, указанному bodyname.

Имя тела, указанное как строковый скалярный или символьный вектор. Это тело должно находиться на модели робота, указанной в robot.

Типы данных: char | string

Жесткое тело, указанное как rigidBody объект.

Расширенные возможности

.
Представлен в R2016b