Главная » Хабрахабр » Управление самобалансирующим роботом EduMip с помощью джойстика PS4 dualshock 4 через ROS

Управление самобалансирующим роботом EduMip с помощью джойстика PS4 dualshock 4 через ROS


Это простой пример про то, как с помощью ROS можно связать несколько устройств по сети и пересылать данные управления.

Я купил dualshock 4 v2, первой версии тоже должен работать. Под катом в конце — видеодемонстрация управления роботом с джойстика.
Нам понадобится сам джойстик, можно взять от своей ps4 или купить в магазине.

1+. Также нужен блютус на вашем компьютере с ROS, в документации к драйверам рекомендуют usb blutooth адаптеры версии 2. Также можно подключить джойстик и просто usb кабелем. У меня прекрасно заработал со встроенным в ноутбук адаптером.

Затем в Ubuntu c ROS нужно установить драйвер по инструкции.

После установки драйверов и соединения джойстика по блютус, запускаем графическую утилиту jstest-gtk и видим что у нас два джойстика, нам нужен второй, так как на нем есть все кнопки и стики.

Так как по умолчанию ROS работает с joy0, то нам это надо переопределить на joy1:

sudo chmod a+rw /dev/input/js1
rosparam set joy_node/dev "/dev/input/js1"

Теперь нам нужно соединить это все в единую сеть. Ноутбук с ROS будет master, а EduMip с BeagleBone Blue ROS соединяться по wifi к ноутбуку. Оба устройства находятся в локальной сети wifi роутера.

На вашем ПК установите переменные среды ROS для поиска мастера ros (roscore) на ПК с команд .bashrc (добавьте эти команды в конец вашего файла .bashrc ):

“export ROS_MASTER_URI=http://192.168.10.101:11311” <- это сообщает ROS IP-адрес машины, на которой выполняется мастер ros (roscore).
“export ROS_IP=192.168.10.101” <- это сообщает ROS IP-адрес этой машины (вашего ПК).

На вашем EduMIP установите переменные среды ROS чтобы он нашел мастер ros (roscore) на ПК с команд .bashrc (добавьте эти команды в конец вашего файла .bashrc ):

“export ROS_MASTER_URI=http://192.168.10.101:11311” <- это сообщает ROS IP-адрес машины, на которой выполняется мастер ros (roscore).
“export ROS_IP=192.168.10.102” <- это говорит ROS IP-адрес этой машины (Ваш EduMIP).

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

// Callback function for joystick pessaged
void joyCallback(const sensor_msgs::Joy::ConstPtr& joy)
{ // X vel driven by left joystick for and aft command_velocity_twist.linear.x = joy->axes[1]; // heading driven by left joysticj left and right command_velocity_twist.angular.z = joy->axes[0];
} // this function gets called at 10Hz to publish the command_velocity array of 2 floats
void timerCallback(const ros::TimerEvent& event)
{ cmd_vel_publisher.publish(command_velocity_twist);
}

На вашем ПК вы можете визуально посмотреть nodes и topics, запустив «rqt_graph»:

Демонстрация управления роботом с помощью джойстика:

Резюме: С помощью ROS можно построить систему для работа распределенную на несколько устройств и например большие вычисления производить на основном компьютере, на самом же роботе оставить только то что нужно для быстрого реагирования. На BeagleBone Blue стоит программируемая подсистеме реального времени (PRU‐ICSS).

Каждое ядро имеет свою область памяти, а также совместную с Linux область памяти, может использовать выводы общего назначения, расположенные на разъемах P8-P9, и формировать прерывания. PRU-ICSS состоит из микропроцессора на двух 32-битных ядрах, имеющих RISC-архитектуру и работающих на частоте 200МГц.

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

Если говорить про следующий шаг эволюции то это ROS2, где одним из отличий является DDS (Data Distribution Service) позволяющий построить сеть разных взаимодействующих роботов и устройств на которых ROS не запущен.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

toString: Великий и Ужасный

Она — причина многочисленных шуток и мемов про многие подозрительные арифметические операции, преобразования, вводящие в ступор [object Object]'ы. Функция toString в языке JavaScript наверно самая "неявно" обсуждаемая как среди самих js-разработчиков, так и среди внешних наблюдателей. Уступает, возможно, лишь удивлениям ...

Ракета-носитель «Союз-5SL» будет работать с двигателями советского образца

Так выглядит Falcon Heavy, тяжелая ракета-носитель от SpaceX, с которой собирается конкурировать S7 Space Генеральный директор S7 Space Сергей Сопов на днях заявил о том, что эта частная аэрокосмическая компания (в некоторых СМИ ее называют “Российской SpaceX”) собирается возродить производство ...