Оглавление:
- Шаг 1: добавление захвата
- Шаг 2: создание руки
- Шаг 3. Интерфейс MoveIt RobotCommander
- Шаг 4: Код Arduino для контроллера робота
- Шаг 5: (Необязательно) Создание подключаемого модуля IKfast
- Шаг 6: Тест на рампу
Видео: Роботизированная рука ROS MoveIt, часть 2: Контроллер робота: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
github.com/AIWintermuteAI/ros-moveit-arm.git
В предыдущей части статьи мы создали файлы URDF и XACRO для нашей роботизированной руки и запустили RVIZ для управления нашей роботизированной рукой в моделируемой среде.
На этот раз мы сделаем это с настоящей роботизированной рукой! Мы добавим захват, напишем контроллер робота и (необязательно) сгенерируем решатель обратной кинематики IKfast.
Джеронимо!
Шаг 1: добавление захвата
Добавление захвата сначала немного сбивало с толку, поэтому я пропустил эту часть в предыдущей статье. В конце концов, это оказалось не так уж и сложно.
Вам нужно будет изменить файл URDF, чтобы добавить звенья и соединения захватов.
К этому шагу прилагается измененный файл URDF для моего робота. В основном это следует той же логике, что и часть руки, я только что добавил три новых звена (claw_base, claw_r и claw_l) и три новых сустава (сустав5 - фиксированный, а сустав6, сустав7 - поворотные суставы).
После изменения файла URDF вам также необходимо обновить созданный пакет MoveIt и файл xacro с помощью помощника установки MoveIt.
Запустите помощник по установке с помощью следующей команды
roslaunch moveit_setup_assistant setup_assistant.launch
Нажмите «Изменить существующую конфигурацию MoveIt» и выберите папку с вашим пакетом MoveIt.
Добавьте новый захват группы планирования (со связями и шарнирами для захвата), а также концевой эффектор. Мои настройки представлены на скриншотах ниже. Обратите внимание, что вы не выбираете программу расчета кинематики для захвата, в этом нет необходимости. Создайте пакет и перезапишите файлы.
Запустить
сережка сделать
в вашем рабочем пространстве catkin.
Хорошо, теперь у нас есть рука с захватом!
Шаг 2: создание руки
Как я уже упоминал ранее, 3D-модель руки сделана Юргенлесснером, спасибо за отличную работу. Подробную инструкцию по сборке можно найти, перейдя по ссылке.
Однако мне пришлось модифицировать систему управления. Я использую Arduino Uno с сенсорным экраном для управления сервоприводами. Экран датчика значительно упрощает электромонтаж, а также упрощает подачу внешнего питания на сервоприводы. Я использую адаптер питания 12 В 6 А, подключенный через понижающий модуль (6 В) к сенсорному экрану.
Замечание о сервоприводах. Я использую сервоприводы MG 996 HR, купленные на Taobao, но качество очень плохое. Это определенно дешевый китайский подделка. Тот, что для локтевого сустава, не обеспечивал достаточного крутящего момента и даже однажды начал дымиться под большой нагрузкой. Пришлось заменить сервопривод локтевого сустава на MG 946 HR от более качественного производителя.
Короче - покупайте качественные сервоприводы. Если магический дым выходит из ваших сервоприводов, используйте более качественные сервоприводы. 6 В - очень безопасное напряжение, не увеличивайте его. Это не увеличит крутящий момент, но может повредить сервоприводы.
Электропроводка для сервоприводов следующая:
база 2
плечо 2 4 плечо 1 3
локоть 6
захват 8
запястье 11
Не стесняйтесь изменять его, если вы также не забываете изменить эскиз Arduino.
После того, как вы закончили с оборудованием, давайте посмотрим на картину в целом!
Шаг 3. Интерфейс MoveIt RobotCommander
Что теперь? Зачем вообще нужны MoveIt и ROS? Разве вы не можете просто управлять рукой напрямую через код Arduino?
Да, ты можешь.
Хорошо, а как насчет использования графического интерфейса или кода Python / C ++ для создания позы робота? Может ли Ардуино это сделать?
Вроде, как бы, что-то вроде. Для этого вам нужно будет написать решатель обратной кинематики, который будет принимать позу робота (координаты перемещения и вращения в трехмерном пространстве) и преобразовывать ее в сообщения об углах сочленения для сервоприводов.
Несмотря на то, что вы можете сделать это самостоятельно, это чертовски много работы. Итак, MoveIt и ROS предоставляют удобный интерфейс для решателя IK (обратной кинематики), который выполняет всю тяжелую тригонометрическую работу за вас.
Краткий ответ: Да, вы можете создать простую роботизированную руку, которая будет выполнять жестко запрограммированный эскиз Arduino, чтобы переходить из одной позы в другую. Но если вы хотите сделать своего робота более умным и добавить возможности компьютерного зрения, MoveIt и ROS - это то, что вам нужно.
Я сделал очень упрощенную схему, объясняющую, как работает фреймворк MoveIt. В нашем случае это будет еще проще, поскольку у нас нет обратной связи от наших сервоприводов и мы собираемся использовать тему / Joint_states, чтобы предоставить контроллеру робота углы для сервоприводов. Нам не хватает только одного компонента - контроллера робота.
Что мы ждем? Давайте напишем несколько контроллеров роботов, чтобы наш робот был … ну, более управляемым.
Шаг 4: Код Arduino для контроллера робота
В нашем случае контроллером робота будет Arduino Uno, на котором запущен узел ROS с rosserial. Код скетча Arduino прилагается к этому шагу, а также доступен на GitHub.
Узел ROS, работающий на Arduino Uno, в основном подписывается на тему / JointState, опубликованную на компьютере, на котором запущен MoveIt, а затем преобразует объединенные углы из массива из радианов в градусы и передает их сервоприводам с использованием стандартной библиотеки Servo.h.
Это решение немного взломано и не похоже на то, как это делается с промышленными роботами. В идеале вы должны публиковать траекторию движения в теме / FollowJointState, а затем получать отзывы по теме / JointState. Но в нашей руке сервоприводы для хобби не могут предоставить обратную связь, поэтому мы просто подпишемся напрямую на тему / JointState, опубликованную узлом FakeRobotController. В основном мы предполагаем, что любые углы, которые мы передали сервоприводам, выполнены идеально.
Для получения дополнительной информации о том, как работает rosserial, вы можете обратиться к следующим руководствам.
wiki.ros.org/rosserial_arduino/Tutorials
После того, как вы загрузите скетч в Arduino Uno, вам нужно будет подключить его с помощью последовательного кабеля к компьютеру, на котором установлена ваша ROS.
Чтобы вызвать всю систему, выполните следующие команды
roslaunch my_arm_xacro demo.launch rviz_tutorial: = true
sudo chmod -R 777 / dev / ttyUSB0
rosrun rosserial_python serial_node.py _port: = / dev / ttyUSB0 _baud: = 115200
Теперь вы можете использовать интерактивные маркеры в RVIZ, чтобы переместить руку робота в позу, а затем нажать «Планировать» и «Выполнить», чтобы она действительно переместилась в нужное положение.
Магия!
Теперь мы готовы написать код Python для нашего линейного теста. Ну, почти…
Шаг 5: (Необязательно) Создание подключаемого модуля IKfast
По умолчанию MoveIt предлагает использовать решатель кинематики KDL, который на самом деле не работает с плечами менее 6 степеней свободы. Если вы внимательно следите за этим руководством, то заметите, что модель руки в RVIZ не может принимать некоторые позы, которые должны поддерживаться конфигурацией руки.
Рекомендуемое решение - создать собственный решатель кинематики с помощью OpenRave. Это не так уж сложно, но вам придется собрать его и его зависимости из исходного кода или использовать контейнер докеров, в зависимости от того, что вы предпочитаете.
Процедура очень хорошо документирована в этом руководстве. Подтверждено, что он работает на виртуальной машине под управлением Ubuntu 16.04 и ROS Kinetic.
Я использовал следующую команду для создания решателя
openrave.py --database inversekinematics --robot = arm.xml --iktype = translation3d --iktests = 1000
а затем побежал
rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Translation3D.0_1_2_f3.cpp
для создания плагина MoveIt IKfast.
Вся процедура занимает немного времени, но не очень сложно, если вы внимательно следите за инструкциями. Если у вас есть вопросы по этой части, пишите мне в комментариях или в личку.
Шаг 6: Тест на рампу
Теперь мы готовы опробовать линейный тест, который мы выполним с помощью ROS MoveIt Python API.
Код Python прилагается к этому шагу, а также доступен в репозитории github. Если у вас нет пандуса или вы хотите попробовать еще один тест, вам нужно будет изменить позы робота в коде. Для этого первого выполнения
rostopic echo / rviz_moveit_motion_planning_display / robot_interaction_interactive_marker_topic / feedback
в терминале, когда уже запущены RVIZ и MoveIt. Затем переместите робота с интерактивными маркерами в желаемое положение. Значения положения и ориентации будут отображаться в терминале. Просто скопируйте их в код Python.
Чтобы выполнить тестовый запуск рампы
rosrun my_arm_xacro pick / pick_2.py
с уже запущенными РВИЗ и узлом rosserial.
Следите за обновлениями третьей части статьи, где я буду использовать стереокамеру для обнаружения объектов и выполнять конвейер выбора и размещения простых объектов!
Рекомендуемые:
Роботизированная рука Moslty, напечатанная на 3D-принтере, имитирующая марионеточный контроллер: 11 шагов (с изображениями)
Роботизированная рука Moslty, напечатанная на 3D-принтере, имитирующая марионеточный контроллер: я студент инженерного факультета из Индии, и это мой дипломный проект. Этот проект направлен на разработку недорогой роботизированной руки, которая в основном напечатана на 3D-принтере и имеет 5 степеней свободы с двумя пальцами. захват. Роботизированная рука управляется
Роботизированная рука с модулями Zio, часть 3: 4 шага
Роботизированная рука с модулями Zio. Часть 3: Это сообщение в блоге является частью серии Zio Robotics. Введение В нашем предыдущем блоге мы разместили учебные пособия Части 1 и 2 о том, как управлять роботизированной рукой с помощью модулей Zio. Часть 1 в основном посвящена автоматическому управлению когтем вашей роботизированной руки t
Роботизированная рука с модулями Zio, часть 2: 11 шагов
Роботизированная рука с модулями Zio, часть 2: в сегодняшнем руководстве мы будем использовать все 4 сервопривода и беспроводной контроллер PS2 для управления роботизированной рукой. Это сообщение в блоге является частью серии Zio Robotics. Введение В нашем предыдущем блоге мы разместили часть 1 учебник о том, как управлять роботом Ar
Роботизированная рука ROS MoveIt: 4 шага
Роботизированная рука ROS MoveIt: это будет серия статей о создании роботизированной руки, управляемой с помощью ROS (Robotic Operating System) и MoveIt. Если вы увлекаетесь робототехникой, ROS - отличный фреймворк, который поможет вам быстрее создавать лучших роботов. Это позволяет вам повторно использовать
КАК СОБРАТЬ ВПЕЧАТЛЯЮЩУЮ ДЕРЕВЯННУЮ РУКОЯТКУ РОБОТА (ЧАСТЬ 3: РУКОЯТКА РОБОТА) - НА ОСНОВЕ МИКРО: BITN: 8 шагов
КАК СОБРАТЬ ВПЕЧАТЛЯЮЩУЮ ДЕРЕВЯННУЮ РУКОЯТКУ РОБОТА (ЧАСТЬ 3: РУКОЯТКА РОБОТА) - НА ОСНОВЕ МИКРО: BITN: Следующий процесс установки основан на завершении режима избегания препятствий. Процесс установки в предыдущем разделе такой же, как и процесс установки в режиме отслеживания строк. Тогда давайте посмотрим на окончательную форму A