Загрузите предопределенные модели робота

Чтобы быстро получить доступ к общим моделям робота, используйте loadrobot функция, которая загружает коммерчески доступные модели робота как Универсальный Robots™ UR10 cobot, Бостон гуманоид Атласа Dynamics™ и Генерал KINOVA™ 3 манипулятора. Исследуйте, как сгенерировать объединенные настройки и взаимодействовать с моделями робота.

Чтобы импортировать ваш собственный универсальный формат описания робота (URDF), смотрите importrobot функция.

Задайте тип модели робота как строку к loadrobot функция. Используйте заполнение клавишей Tab, чтобы выбрать из списка предоставленных моделей как входные параметры.

Чтобы использовать вектор-столбцы для объединенных настроек, задайте формат данных как "column".

ur10 = loadrobot("universalUR10");
atlas = loadrobot("atlas");
gen3 = loadrobot("kinovaGen3","DataFormat","column");

loadrobot функция возвращает rigidBodyTree объект, который это, представляет кинематику и динамику каждой модели робота. Некоторые модели не могут загрузить с динамикой или инерционными свойствами для тел. Смотрите отдельные твердые тела с помощью Bodies свойство или getBody функция.

disp(gen3);
  rigidBodyTree with properties:

     NumBodies: 8
        Bodies: {1x8 cell}
          Base: [1x1 rigidBody]
     BodyNames: {1x8 cell}
      BaseName: 'base_link'
       Gravity: [0 0 0]
    DataFormat: 'column'

Вызовите show визуализировать модели робота в домашней настройке. Замените gen3 объект с другими моделями, чтобы визуализировать их.

show(gen3);

Figure contains an axes object. The axes object contains 25 objects of type patch, line. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh.

show(atlas);

Figure contains an axes object. The axes object contains 169 objects of type patch, line. These objects represent pelvis, ltorso, mtorso, utorso, l_clav, l_scap, l_uarm, l_larm, l_ufarm, l_lfarm, l_hand, l_hand_force_torque, l_situational_awareness_camera_link, l_situational_awareness_camera_optical_frame, head, center_bottom_led_frame, center_top_led_frame, left_camera_frame, left_camera_optical_frame, left_led_frame, pre_spindle, pre_spindle_cal_x, pre_spindle_cal_y, pre_spindle_cal_z, pre_spindle_cal_roll, pre_spindle_cal_pitch, pre_spindle_cal_yaw, post_spindle, post_spindle_cal_x, post_spindle_cal_y, post_spindle_cal_z, post_spindle_cal_roll, post_spindle_cal_pitch, hokuyo_link, head_hokuyo_frame, right_camera_frame, right_camera_optical_frame, right_led_frame, r_clav, r_scap, r_uarm, r_larm, r_ufarm, r_lfarm, r_hand, r_hand_force_torque, r_situational_awareness_camera_link, r_situational_awareness_camera_optical_frame, l_uglut, l_lglut, l_uleg, l_lleg, l_talus, l_foot, r_uglut, r_lglut, r_uleg, r_lleg, r_talus, r_foot, ltorso_mesh, mtorso_mesh, utorso_mesh, l_clav_mesh, l_scap_mesh, l_uarm_mesh, l_larm_mesh, l_ufarm_mesh, l_lfarm_mesh, l_hand_force_torque_mesh, l_situational_awareness_camera_link_mesh, head_mesh, hokuyo_link_mesh, r_clav_mesh, r_scap_mesh, r_uarm_mesh, r_larm_mesh, r_ufarm_mesh, r_lfarm_mesh, r_hand_force_torque_mesh, r_situational_awareness_camera_link_mesh, l_uglut_mesh, l_lglut_mesh, l_uleg_mesh, l_lleg_mesh, l_talus_mesh, l_foot_mesh, r_uglut_mesh, r_lglut_mesh, r_uleg_mesh, r_lleg_mesh, r_talus_mesh, r_foot_mesh, pelvis_mesh.

show(ur10);

Figure contains an axes object. The axes object contains 28 objects of type patch, line. These objects represent world, base_link, base, shoulder_link, upper_arm_link, forearm_link, wrist_1_link, wrist_2_link, wrist_3_link, ee_link, tool0, base_link_mesh, shoulder_link_mesh, upper_arm_link_mesh, forearm_link_mesh, wrist_1_link_mesh, wrist_2_link_mesh, wrist_3_link_mesh.

Сгенерируйте объединенные настройки

Сгенерируйте случайные настройки для робота КИНОВОЙ Gen3. randomConfiguration функционируйте выходные параметры случайные объединенные положения в рамках модели. Проверять модель ведет себя как ожидалось, визуализируйте набор четырех настроек.

for i = 1:4
    subplot(2,2,i)
    config = randomConfiguration(gen3);
    show(gen3,config);
end

Figure contains 4 axes objects. Axes object 1 contains 25 objects of type patch, line. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh. Axes object 2 contains 25 objects of type patch, line. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh. Axes object 3 contains 25 objects of type patch, line. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh. Axes object 4 contains 25 objects of type patch, line. These objects represent base_link, Shoulder_Link, HalfArm1_Link, HalfArm2_Link, ForeArm_Link, Wrist1_Link, Wrist2_Link, Bracelet_Link, EndEffector_Link, Shoulder_Link_mesh, HalfArm1_Link_mesh, HalfArm2_Link_mesh, ForeArm_Link_mesh, Wrist1_Link_mesh, Wrist2_Link_mesh, Bracelet_Link_mesh, base_link_mesh.

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

Чтобы переместить модель робота вокруг и смотреть поведение, загрузите интерактивный графический интерфейс пользователя дерева твердого тела. Можно установить целевые положения исполнительного элемента конца, вручную переместить соединения и выбрать различные элементы в модели.

interactiveGUI = interactiveRigidBodyTree(gen3);

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

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

Нажмите rigidBody просмотреть их определенные параметры.

Щелкните правой кнопкой, чтобы установить различное целевое тело маркера. Изменение целевого тела обновляет исполнительный элемент конца решателя инверсной кинематики.

Чтобы вручную управлять соединениями, щелкните правой кнопкой и переключите метод управления маркера.

Чтобы управлять вращением соединения revolue на теле, вы выбрали, перетащите желтый круг.

Сохраните объединенные настройки

Сохраните определенные настройки, что вы устанавливаете использование addConfiguration функция, которая хранит текущие объединенные положения в StoredConfigurations свойство. Этот пример устанавливает случайную настройку перед хранением.

interactiveGUI.Configuration = randomConfiguration(gen3);

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

addConfiguration(interactiveGUI)
disp(interactiveGUI.StoredConfigurations)
   -0.4218
   -1.6647
    1.3419
   -2.0818
    1.8179
   -0.4140
   -1.4517

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

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

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

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

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

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