Оглавление:
- Запасы
- Шаг 1. Начинаем все настраивать
- Шаг 2: понимание того, как работает контроллер
- Шаг 3: Создание интерфейса ROS-MATLAB
- Шаг 4: Получение IP-адреса
- Шаг 5: Создайте графический интерфейс для контроллера
- Шаг 6: Программирование редактируемых кнопок графического интерфейса пользователя
- Шаг 7: Программирование кнопок графического интерфейса пользователя
- Шаг 8: Настройка конфигурации сети на ПК с ROS (Linux)
- Шаг 9: Запустите контроллер
Видео: Роботизированный контроллер ROS на базе Matlab: 9 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
С детства я всегда мечтал стать Железным Человеком и до сих пор продолжаю. Железный Человек - один из тех персонажей, которые реально возможны, и, проще говоря, я стремлюсь когда-нибудь стать Железным Человеком, даже если люди смеются надо мной или говорят, что это невозможно, потому что «это невозможно, пока кто-то не сделает это», - Арнольд Шварценеггер.
ROS - это новая платформа, которая используется для разработки сложных робототехнических систем. Его приложения включают в себя: автоматизированные сборочные системы, телеоперации, протезы и тяжелое машинное оборудование в промышленном секторе.
Исследователи и инженеры используют ROS для разработки прототипов, в то время как разные поставщики используют ее для создания своих продуктов. У нее сложная архитектура, из-за которой хромому человеку трудно управлять ею. Использование MATLAB для создания связи интерфейса с ROS - это новый подход, который может помочь исследователям, инженерам и поставщикам в разработке более надежных решений.
Итак, это руководство о том, как создать роботизированный контроллер ROS на основе Matlab, это будет один из очень немногих руководств по этому вопросу и среди немногих инструкций по ROS. Цель этого проекта - разработать контроллер, который сможет управлять любым ROS-роботом, подключенным к вашей сети. Итак, приступим!
Авторы редактирования видео: Аммар Ахер, на [email protected]
Запасы
Для проекта требуются следующие компоненты:
(1) ROS ПК / робот
(2) Маршрутизатор
(3) ПК с MATLAB (версия: 2014 или выше)
Шаг 1. Начинаем все настраивать
Для этого я использую Ubuntu 16.04 для своего компьютера с Linux и ros-kinetic, поэтому, чтобы избежать путаницы, я рекомендую использовать ros kinetic и ubuntu 16.04, поскольку он лучше всего поддерживает ros-kinetic. Для получения дополнительной информации о том, как установить ros kinetic, перейдите на https://wiki.ros.org/kinetic/Installation/Ubuntu. Для MATLAB вы либо покупаете лицензию, либо загружаете пробную версию отсюда.
Шаг 2: понимание того, как работает контроллер
ПК запускает роботизированный контроллер на MATLAB. Контроллер принимает IP-адрес и порт компьютера / робота ros.
Тема ros используется для связи между контроллером и ПК / роботом ros, которая также принимается контроллером в качестве входных данных. Модем необходим для создания LAN (локальной сети), и именно он назначает IP-адреса всем устройствам, подключенным к его сети. Следовательно, компьютер ros / robot и компьютер, на котором запущен контроллер, должны быть подключены к одной и той же сети (т. Е. К сети модема). Итак, теперь, когда вы знаете, «как это работает», давайте перейдем к «как это устроено»…
Шаг 3: Создание интерфейса ROS-MATLAB
ROS-MATLABInterface - это полезный интерфейс для исследователей и студентов для создания прототипов своих алгоритмов роботов в MATLAB и тестирования их на ROS-совместимых роботах. Этот интерфейс может быть создан с помощью набора инструментов системы робототехники в Matlab, и мы можем создать прототип нашего алгоритма и протестировать его на робот с поддержкой ROS или в симуляторах роботов, таких как Gazebo и V-REP.
Чтобы установить набор инструментов системы робототехники на ваш MATLAB, просто перейдите к опции надстройки на панели инструментов и найдите роботизированный набор инструментов в проводнике надстроек. Используя роботизированный набор инструментов, мы можем опубликовать или подписаться на тему, например узел ROS, и сделать его мастером ROS. Интерфейс MATLAB-ROS имеет большинство функций ROS, которые могут потребоваться для ваших проектов.
Шаг 4: Получение IP-адреса
Для работы контроллера обязательно, чтобы вы знали IP-адрес вашего робота / ПК ROS и ПК, на котором запущен контроллер на MATLAB.
Чтобы получить ip вашего компьютера:
В Windows:
Откройте командную строку, введите команду ipconfig и запишите IPv4-адрес.
Для Linux:
Введите команду ifconfig и запишите inet-адрес. Теперь, когда у вас есть IP-адрес, пришло время создать графический интерфейс…
Шаг 5: Создайте графический интерфейс для контроллера
Чтобы создать графический интерфейс, откройте MATLAB и введите руководство в командном окне. Это откроет приложение-руководство, через которое мы будем создавать наш графический интерфейс. Вы также можете использовать конструктор приложений в MATLAB для разработки своего графического интерфейса.
Всего мы создадим 9 кнопок (как показано на рис.):
6 кнопок: вперед, назад, влево, вправо, подключиться к роботу, отключить
3 редактируемые кнопки: Ros pc ip, порт и название темы.
Редактируемые кнопки - это кнопки, которые будут принимать IP-адрес компьютера ROS, его порт и имя темы в качестве входных данных. Название темы - это то, через что обмениваются данными контроллер MATLAB и робот / компьютер ROS. Чтобы отредактировать строку на редактируемой кнопке, щелкните правой кнопкой мыши по кнопке >> перейдите в Свойства инспектора >> Строка и отредактируйте текст кнопки.
Как только ваш графический интерфейс будет готов, вы можете запрограммировать кнопки. Здесь начинается самое интересное …
Шаг 6: Программирование редактируемых кнопок графического интерфейса пользователя
Графический интерфейс пользователя сохраняется как файл.fig, но функции кода / обратного вызова сохраняются в формате.m. Файл.m содержит код для всех ваших кнопок. Чтобы добавить функции обратного вызова к вашим кнопкам, щелкните кнопку правой кнопкой мыши> > Просмотреть обратные вызовы >> обратный вызов. Это откроет файл.m для вашего графического интерфейса, где определена эта конкретная кнопка.
Первый обратный вызов, который мы собираемся закодировать, предназначен для редактируемой кнопки ROS IP. Под функцией edit1_Callback напишите следующий код:
функция edit1_Callback (hObject, eventdata, дескрипторы)
глобальный ros_master_ip
ros_master_ip = получить (hObject, 'Строка')
Здесь функция определена как edit1_Callback, что относится к первой редактируемой кнопке. Когда мы вводим IP-адрес из сети ROS в эту редактируемую кнопку, он сохраняет IP-адрес в виде строки в глобальной переменной ros_master_ip.
Затем прямо под _OpeningFcn (hObject, eventdata, handles, varargin) определите следующее (см. Рис):
глобальный ros_master_ip
глобальный ros_master_port
global teleop_topic_name
ros_master_ip = '192.168.1.102';
ros_master_port = '11311';
teleop_topic_name = '/ cmd_vel_mux / input / teleop';
Вы просто глобально жестко запрограммировали ip ros-pc (ros_master_ip), порт (ros_master_port) и имя темы Teleop. Это означает, что если вы оставите редактируемые кнопки пустыми, эти предопределенные значения будут использоваться при подключении.
Следующий обратный вызов, который мы собираемся кодировать, предназначен для кнопки редактирования порта.
Под функцией edit2_Callback напишите следующий код:
функция edit2_Callback (hObject, eventdata, дескрипторы)
глобальный ros_master_port
ros_master_port = получить (hObject, 'Строка')
Здесь функция определена как edit2_Callback, что относится ко второй редактируемой кнопке. Когда мы вводим здесь порт ros pc / robot из сети ROS с помощью этой редактируемой кнопки, он сохранит порт в виде строки в глобальной переменной ros_master_port.
Точно так же следующий обратный вызов, который мы собираемся закодировать, предназначен для кнопки редактирования имени темы.
Под функцией edit3_Callback напишите следующий код:
функция edit3_Callback (hObject, eventdata, дескрипторы)
global teleop_topic_name
teleop_topic_name = get (hObject, 'Строка')
Подобно ros_master_port, он также сохраняется в виде строки в глобальной переменной.
Далее мы рассмотрим функции обратного вызова для кнопок…
Шаг 7: Программирование кнопок графического интерфейса пользователя
Кнопки, которые мы создали ранее, мы будем использовать для перемещения, подключения и отключения робота от контроллера. Обратные вызовы кнопки определяются следующим образом:
например. функция pushbutton6_Callback (hObject, eventdata, дескрипторы)
Примечание: в зависимости от порядка, в котором вы создавали свои кнопки, они будут нумероваться соответственно. Поэтому функция pushbutton6 в моем файле.m может быть для Forward, тогда как в вашем.m файле она может быть для Backwards, так что имейте это в виду. Чтобы узнать, какая точная функция для вашей кнопки, просто щелкните правой кнопкой мыши >> Просмотреть обратные вызовы >> обратные вызовы, и она откроет функцию для вашей кнопки, но для этой инструкции я предполагаю, что она такая же, как у меня.
Для кнопки Подключиться к роботу:
Под функцией pushbutton6_Callback (hObject, eventdata, handles):
функция pushbutton6_Callback (hObject, eventdata, handles) global ros_master_ip
глобальный ros_master_port
global teleop_topic_name
глобальный робот
глобальный велмсг
ros_master_uri = strcat ('https://', ros_master_ip, ':', ros_master_port)
setenv ('ROS_MASTER_URI', ros_master_uri)
канифоль
робот = rospublisher (teleop_topic_name, 'geometry_msgs / Twist');
velmsg = rosmessage (робот);
Этот обратный вызов установит переменную ROS_MASTER_URI путем объединения ros_master_ip и порта. Затем команда rosinit инициализирует соединение. После подключения он создаст издателя geometry_msgs / Twist, который будет использоваться для отправки команды скорости. Название темы - это имя, которое мы даем в поле редактирования. После успешного подключения мы сможем использовать кнопки «Вперед», «Назад», «Влево» и «Вправо».
Прежде чем добавлять обратные вызовы к кнопкам прямого и обратного нажатия, нам необходимо инициализировать скорости линейной и угловой скорости.
Поэтому ниже _OpeningFcn (hObject, eventdata, handles, varargin) определите следующее (см. Рис):
global left_spinVelocity global right_spinVelocity
global forwardVelocity
глобальная обратная скорость
left_spinVelocity = 2;
right_spinVelocity = -2;
forwardVelocity = 3;
backwardVelocity = -3;
Примечание: все скорости указаны в рад / с.
Теперь, когда глобальные переменные определены, давайте запрограммируем кнопки движения.
Для кнопки Вперед:
функция pushbutton4_Callback (hObject, eventdata, handles) глобальный velmsg
глобальный робот
global teleop_topic_name
global forwardVelocity
velmsg. Angular. Z = 0;
velmsg. Linear. X = forwardVelocity;
отправить (робот, велмсг);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', истина);
Аналогично для кнопки «Назад»:
функция pushbutton5_Callback (hObject, eventdata, дескрипторы)
глобальный велмсг
глобальный робот
глобальная обратная скорость
global teleop_topic_name
velmsg. Angular. Z = 0;
velmsg. Linear. X = backwardVelocity;
отправить (робот, велмсг);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', истина);
Аналогично для левой кнопки: функция pushbutton3_Callback (hObject, eventdata, дескрипторы)
глобальный робот global left_spinVelocity
global teleop_topic_name
velmsg. Angular. Z = left_spinVelocity;
velmsg. Linear. X = 0;
отправить (робот, велмсг);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', истина);
Аналогично для правой кнопки:
глобальный велмсглобальный робот
global right_spinVelocity
global teleop_topic_name
velmsg. Angular. Z = right_spinVelocity;
velmsg. Linear. X = 0;
отправить (робот, велмсг);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', истина);
После добавления всех функций обратного вызова и сохранения файлов мы можем протестировать наш контроллер.
Шаг 8: Настройка конфигурации сети на ПК с ROS (Linux)
Мы будем тестировать контроллер на ПК ros (Linux), что потребует настройки конфигурации сети. Если вы также используете контроллер на ПК с Linux, вам также придется настроить конфигурацию сети там.
Конфигурация сети:
Откройте окно терминала и введите gedit.bashrc.
После открытия файла добавьте следующее:
#Robot Machine Configuration
экспорт ROS_MASTER_URI = https:// localhost: 11311
#IP-адрес главного узла ROS
экспорт ROS_HOSTNAME =
экспорт ROS_IP =
echo "ROS_HOSTNAME:" $ ROS_HOSTNAME
echo "ROS_IP:" $ ROS_IP
эхо "ROS_MASTER_URI:" $ ROS_MASTER_URI
Вы должны выполнять этот шаг каждый раз из-за динамического назначения IP.
Шаг 9: Запустите контроллер
Мы собираемся протестировать наш контроллер на боте Turtle в Gazebo.
Чтобы установить Gazebo, перейдите по ссылке
Чтобы установить бота Turtle, перейдите по ссылке
Откройте папку, в которой вы сохранили файлы.fig и.m на MATLAB, и нажмите Run (как показано на рисунке). Это откроет контроллер на ПК. Перед тем, как нажать кнопку подключения, убедитесь, что ваш симулятор черепахи-бота работает.
Чтобы проверить симуляцию TurtleBot:
Откройте Терминал на ПК Ros и введите: $ roslaunch turtlebot_gazebo turtlebot_world.launch. Это откроет имитацию Turtlebot на этом ПК. Название темы TurtleBot - / cmd_vel_mux / input / teleop, которое мы уже предоставили в приложении. Введите IP-адрес ros pc, порт и название темы в редактируемых кнопках и нажмите кнопку. Подключиться к роботу. Ваш бот-черепаха должен начать двигаться, когда вы нажимаете "Вперед", "Назад" и т. Д.
Чтобы просмотреть линейную и угловую скорости:
Откройте новый терминал и введите команду: $ rostopic echo / cmd_vel_mux / input / teleop
И вот, у вас есть собственный роботизированный контроллер ROS на базе Matlab. Если вам понравился мой наставник, пожалуйста, проголосуйте за него на Конкурсе авторов, впервые получивший его, и поделитесь им с как можно большим количеством людей. Спасибо.
Рекомендуемые:
Роботизированный вездеход: 10 шагов
Роботизированный вездеход: Привет, я Proxy303, специалист по робототехнике. В этом уроке я научу вас, как построить своего собственного робота, подобного моему. Я не говорю об одной из тех прославленных машин с дистанционным управлением, которые люди называют роботами. Одно из самых определений
Контроллер DIY на базе Arduino - Игровой контроллер Arduino PS2 - Игра в Tekken с DIY-геймпадом Arduino: 7 шагов
Контроллер DIY на базе Arduino | Игровой контроллер Arduino PS2 | Игра в Tekken с помощью DIY Arduino Gamepad: Здравствуйте, ребята, играть в игры всегда весело, но играть с вашим собственным игровым контроллером DIY еще веселее. Поэтому мы создадим игровой контроллер с использованием arduino pro micro в этих инструкциях
Роботизированная рука ROS MoveIt, часть 2: Контроллер робота: 6 шагов
Роботизированная рука ROS MoveIt, часть 2: Контроллер робота: https://github.com/AIWintermuteAI/ros-moveit-arm.git В предыдущей части статьи мы создали файлы URDF и XACRO для нашей роботизированной руки и запустили RVIZ для управления нашим роботизированная рука в смоделированной среде. На этот раз мы сделаем это с ре
YABC - еще один контроллер Blynk - контроллер температуры и влажности облака IoT, ESP8266: 4 шага
YABC - Еще один контроллер Blynk - Контроллер температуры и влажности облака IoT, ESP8266: Привет, производители, недавно я начал выращивать грибы дома, вешенки, но у меня уже есть 3x таких контроллера дома для контроля температуры ферментера для моего домашнего пива, жена также сейчас занимается этим чайным грибом, и в качестве термостата для тепла
Емкостное касание с Evive (контроллер на базе Arduino): 6 шагов (с изображениями)
Емкостное касание с Evive (контроллер на базе Arduino): знаете ли вы, как работает сенсорный экран вашего смартфона? Смартфон имеет множество сенсорных датчиков под стеклянным экраном. В настоящее время он основан на емкостной технологии определения касания, и даже легкое прикосновение легко обнаруживается. Обнаруживается емкостное прикосновение