Главная » Хабрахабр » Управление самобалансирующим роботом 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 Интересное!

Репост со стороннего Telegram-канала (PHP MadelineProto)

Решив заняться бессовестным копипастом (а точнее его автоматизацией) постов с чужого Telegram-канала в свой, я первым делом полез в документацию по телеграм-ботам. Но как выяснилось, боты не только не имеют методов для получения сообщений, их просто-напросто нельзя добавить в чужой ...

Тесла планирует устанавливать новые массивные стационарные аккумуляторные батареи в Калифорнии

Источник На первом этапе, Тесле достался объем в 730 МВт*ч (мощность 182,5 МВт*ч нужно отдавать на протяжении 4 часов), в дальнейшем может расшириться до 1,2 ГВт*ч.Документ по проекту Летом 2018-го года Тесла стала одной из 4 компаний, которые обеспечат Калифорнию ...