Создайте робота манипулятора Используя кинематические параметры DH

Используйте параметры Denavit-Hartenberg (DH) робота манипулятора Puma560®, чтобы инкрементно создать модель робота дерева твердого тела. Задайте относительные параметры DH для каждого соединения, когда вы присоединяете их. Визуализируйте системы координат робота и взаимодействуйте с итоговой моделью.

Параметры DH задают геометрию того, как каждое твердое тело присоединяет к своему родительскому элементу через соединение. Параметры следуют четырем соглашениям преобразования:

  • A — Длина общей нормальной линии между этими двумя осями z, которая перпендикулярна обеим осям

  • α — Угол вращения для общего нормального

  • d — Возместите вдоль оси z в нормальном направлении от родительского элемента до дочернего элемента

  • θ — Угол вращения для оси X вдоль предыдущей оси z

Задайте параметры для робота Puma560 [1] как матрица. Значения прибывают из.

dhparams = [0   	pi/2	0   	0;
            0.4318	0       0       0
            0.0203	-pi/2	0.15005	0;
            0   	pi/2	0.4318	0;
            0       -pi/2	0   	0;
            0       0       0       0];

Создайте объект дерева твердого тела.

robot = rigidBodyTree;

Создайте массив ячеек для объекта твердого тела и другого для объединенных объектов. Выполните итерации через параметры DH, выполняющие этот процесс:

  1. Создайте rigidBody объект с уникальным именем.

  2. Создайте и назовите вращательный rigidBodyJoint объект.

  3. Используйте setFixedTransform задавать преобразование от тела к телу соединения с помощью параметров DH. Функция игнорирует итоговый элемент параметров DH, theta, потому что угол тела зависит от объединенного положения.

  4. Используйте addBody присоединить тело к дереву твердого тела.

bodies = cell(6,1);
joints = cell(6,1);
for i = 1:6
    bodies{i} = rigidBody(['body' num2str(i)]);
    joints{i} = rigidBodyJoint(['jnt' num2str(i)],"revolute");
    setFixedTransform(joints{i},dhparams(i,:),"dh");
    bodies{i}.Joint = joints{i};
    if i == 1 % Add first body to base
        addBody(robot,bodies{i},"base")
    else % Add current body to previous body by name
        addBody(robot,bodies{i},bodies{i-1}.Name)
    end
end

Проверьте, что ваш робот был создан правильно при помощи showdetails или show функция. showdetails функционируйте перечисляет все корпуса робота в командном окне MATLAB®. show функционируйте отображает робота с заданной настройкой (домой по умолчанию).

showdetails(robot)
--------------------
Robot: (6 bodies)

 Idx    Body Name   Joint Name   Joint Type    Parent Name(Idx)   Children Name(s)
 ---    ---------   ----------   ----------    ----------------   ----------------
   1        body1         jnt1     revolute             base(0)   body2(2)  
   2        body2         jnt2     revolute            body1(1)   body3(3)  
   3        body3         jnt3     revolute            body2(2)   body4(4)  
   4        body4         jnt4     revolute            body3(3)   body5(5)  
   5        body5         jnt5     revolute            body4(4)   body6(6)  
   6        body6         jnt6     revolute            body5(5)   
--------------------
figure(Name="PUMA Robot Model")
show(robot);

Figure PUMA Robot Model contains an axes object. The axes object contains 13 objects of type patch, line. These objects represent base, body1, body2, body3, body4, body5, body6.

Взаимодействуйте с моделью робота

Визуализируйте модель робота, чтобы подтвердить ее размерности при помощи interactiveRigidBodyTree объект.

figure(Name="Interactive GUI")
gui = interactiveRigidBodyTree(robot,MarkerScaleFactor=0.5);

Figure Interactive Visualization contains an axes object. The axes object contains 23 objects of type patch, line, surface. This object represents base.

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

Следующие шаги

Теперь, когда вы создали свою модель в MATLAB®, это некоторые возможные следующие шаги.

  • Выполните Инверсную кинематику, чтобы получить объединенные настройки на основе желаемых положений исполнительного элемента конца. Задайте ограничения робота в дополнение к тем из параметров модели, включая стремление ограничений, Декартовых границ и целей положения.

  • Генерация траектории и После, на основе waypoints и других параметров, с трапециевидными скоростными профилями, B-сплайнами или полиномиальными траекториями.

  • Планирование Движения Манипулятора Peform, использующее ваши модели робота и планировщика пути к быстро исследующему случайному дереву (RRT).

  • Используйте Обнаружение столкновений с препятствиями в вашей среде, чтобы гарантировать безопасное и эффективное движение для вашего робота.

Ссылки

[1] Corke, P. I. и Б. Армстронг-Хелуври. “Поиск Согласия Среди Параметров модели, о которых Сообщают для робота PUMA 560”. Продолжения 1 994 Международных конференций IEEE по вопросам Робототехники и Автоматизации, 1608–13. Сан-Диего, CA, США: IEEE Comput. Soc. Нажмите, 1994. https://doi.org/10.1109/ROBOT.1994.351360.