Используйте параметры Denavit-Hartenberg (DH) робота манипулятора Puma560®, чтобы инкрементно создать модель робота дерева твердого тела. Задайте относительные параметры DH для каждого соединения, когда вы присоединяете их. Визуализируйте системы координат робота и взаимодействуйте с итоговой моделью.
Параметры DH задают геометрию того, как каждое твердое тело присоединяет к своему родительскому элементу через соединение. Параметры следуют четырем соглашениям преобразования:
— Длина общей нормальной линии между этими двумя осями z, которая перпендикулярна обеим осям
— Угол вращения для общего нормального
— Возместите вдоль оси 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, выполняющие этот процесс:
Создайте rigidBody
объект с уникальным именем.
Создайте и назовите вращательный rigidBodyJoint
объект.
Используйте setFixedTransform
задавать преобразование от тела к телу соединения с помощью параметров DH. Функция игнорирует итоговый элемент параметров DH, theta
, потому что угол тела зависит от объединенного положения.
Используйте 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);
Визуализируйте модель робота, чтобы подтвердить ее размерности при помощи interactiveRigidBodyTree
объект.
figure(Name="Interactive GUI")
gui = interactiveRigidBodyTree(robot,MarkerScaleFactor=0.5);
Перетащите маркер в интерактивном графический интерфейсе пользователя, чтобы изменить местоположение исполнительного элемента конца. Графический интерфейс пользователя использует инверсную кинематику, чтобы решить для объединенных положений, которые достигают самого лучшего соответствия к заданной позиции исполнительного элемента конца. Щелкните правой кнопкой по определенной системе координат тела, чтобы установить его как целевое тело маркера или изменить метод управления для установки определенных объединенных положений.
Теперь, когда вы создали свою модель в 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.