4.7.2 Моделирование поворотно-наклонной головки
Общая модель этого робота находится в файле box_robot_with_pan_tilt_head.xacro в каталоге rbx2_description/urdf/box_robot. Этот файл почти такой же, как и файл box_robot_with_kinect.xacro, который мы рассматривали ранее, хотя на этот раз мы включили файл box_pan_tilt_head.urdf.xacro вместо файла kinect.urdf.xacro. Сам файл box_pan_tilt_head.urdf.xacro включает в себя kinect.urdf.xacro, а также ссылки и совместные определения сервоприводов и скобок. Таким образом, мы можем прикрепить камеру к кронштейну для наклона головы. Файл box_pan_tilt_head.urdf.xacro также включает в себя другой файл под названием dynamixel_box_hardware.xacro. Этот файл определяет ряд свойств для хранения размеров сервоприводов и различных типов кронштейнов Dynamixel. Он также определяет коллекцию макросов, которые моделируют сервоприводы и скобки с помощью простых коробок. (Ниже мы будем использовать сетки для Pi Robot).
Мы не будем просматривать файлы серво URDF/Xacro построчно, как мы это делали с другими компонентами, так как это займет слишком много места. Основная идея заключается в том, что мы определяем связь для каждого сервопривода и кронштейна, а также стыки между ними. Однако, давайте, по крайней мере, посмотрим на пару блоков XML, которые иллюстрируют, как моделировать revolute jointints. Ссылаясь на файл box_pan_tilt_head.urdf.xacro, следующие строки определяют шарнир head_pan и соединение в терминах AX12 сервопривода и F3 кронштейна:
Макрос под названием dynamixel_AX12_fixed находится в файле dynamixel_box_hardware.xacro и выглядит следующим образом:
Этот макрос достаточно прямолинейный, он определяет ссылку как box с теми же размерами сервопривода AX-12 и определяет фиксированный стык между собой и родителем, которым в данном случае является head_base_link.
Второй приведенный выше макрос, bioloid_F3_head_revolute, выполняет работу по фактическому панорамированию головы. Этот макрос также определен в файле dynamixel_box_head_hardware.xacro и выглядит следующим образом:
Обратите внимание, что в этом случае тип соединения (выделенный жирным шрифтом выше) является реверсивным, а не фиксированным. Абсолютный шарнир принимает параметры нижней и верхней границы вращения, указанные в радиусах. Они задаются для конкретного шарнира путем передачи значений ${llimit} и ${ulimit} в коде выше. Сервопривод AX-12 имеет рабочий диапазон 300 градусов, то есть 150 градусов по обе стороны от центра. Значение 2.53 радиана, которое передается для нижней и верхней границ в приведенном выше определении bioloid_F3_head_revolute, составляет около 145 градусов - всего чуть меньше, чем полный диапазон, поэтому мы не заставляем сервопривод работать в собственных пределах.
Стык также принимает параметры скорости и усилия, которые являются ограничениями его динамики, которые должны соблюдаться реальным серворегулятором. Ограничение скорости в 1.571 радиан в секунду эквивалентно примерно 90 градусам в секунду, что является умеренно быстрым, особенно если сервопривод панорамирует камеру. Несмотря на то, что для отображения синтаксиса мы установили значение 1.0, ни пакет dynamixel_motor, ни arbotix не используют это значение.
Еще одним ключевым свойством revolute joint является этот тег <axis>, также выделенный жирным шрифтом выше. Компоненты xyz тега осей обычно равны 0 или 1 и определяют ось вращения шарнира. Эти параметры передаются в качестве аргумента блока, называемого осью, аналогично тому, как мы передаем исходные параметры. В случае шарнира головки мы передаем значения "0 0 -1", которые определяют вращение в отрицательном направлении z. В следующем разделе мы покажем, как определяются эти компоненты оси.
Last updated
Was this helpful?