Chariot de camion ROS. Partie 8. Nous contrôlons à partir du téléphone-ROS Control, GPS-node

Suite de la série d'articles.

Messages dans la série:
8. Nous contrôlons à partir du téléphone-ROS Control, GPS-node
7. Localisation du robot: gmapping, AMCL, points de référence sur le plan de la salle
6. Odométrie avec encodeurs de roue, plan de salle, lidar
5. Nous travaillons en rviz et gazebo: xacro, nouveaux capteurs.
4. Créez une simulation de robot à l'aide des éditeurs rviz et gazebo.
3. Accélérez, changez la caméra, corrigez la démarche
2. Logiciel
1. Fer

Lors de la création de cartes sur un robot dans un espace limité, il n'y a aucun problème. En contrôlant le robot depuis le clavier à partir de la station de contrôle ou sur le robot lui-même, vous pouvez observer visuellement ses mouvements et éviter les obstacles indésirables à temps. La situation est compliquée s'il y a plusieurs pièces. Et ici, il existe plusieurs options pour observer un robot qui construit une carte s'il quitte la salle de l'opérateur:
- connectez la caméra directement au robot;
- utiliser le système de vidéosurveillance existant à l'extérieur du robot;
- contrôle avec wi-fi, clavier bluetooth, être près du robot
- «portez le robot dans vos bras» pour que le lidar collecte des données;
- contrôler le robot depuis le téléphone.

Cette dernière option peut sembler pratique. Pour contrôler le robot à partir du téléphone, inclinez-le simplement (le téléphone) dans la bonne direction, pendant que le robot construit une carte. Une telle mission est possible.
Voyons comment diriger le robot depuis le téléphone, en envoyant les messages appropriés aux rubriques ROS sur le robot.

Il n'est pas nécessaire d'écrire une application distincte sur le téléphone aux fins indiquées. Pour profiter des pratiques existantes, il vous suffit de télécharger sur votre téléphone et d'installer l'application Android du marché - «ROS Control».

Configurez l'application ROS Control sur votre téléphone.


L'application est intuitive - un robot est ajouté avec un signe "+", son ip est définie:
image


Ensuite, sélectionnez "Afficher les options avancées" et prescrire des sujets pour le chariot robot:
image


image


Les messages provenant du téléphone porteront sur ces sujets et seront également acceptés dans un format que ROS comprend.
Dans l'application, des sujets sont à notre disposition:
- sujet du joystick - contrôle depuis le téléphone;
- sujet de balayage laser - données du lidar;
- sujet nav sat - données gps robot;
- odom - odométrie (tout ce qui arrive des encodeurs et / ou imu et / ou lidar);
- pose - "position", l'emplacement du robot.

Maîtrisez le sujet du joystick.


Le robot lui-même n'ira pas, donc, nous lancerons un sujet sur le robot avec un pilote de mouvement, qui est apparu à plusieurs reprises dans les articles précédents:
1er terminal:
rosrun rosbots_driver part2_cmr.py

Sur le téléphone dans l'application ROS Control, cliquez sur la ligne avec le nom du robot et échouez dans le menu de contrôle du robot:
image


Maintenant, si vous tirez le joystick avec votre doigt (dans n'importe quelle direction), le chariot ira. Tout est simple ici.
Si vous regardez ce qui se passe avec la rubrique du pilote du moteur s'exécutant sur la framboise, vous verrez que le téléphone publie et que le pilote reçoit des messages au format approprié:


Tous les autres sujets fonctionnent sur le même principe.

* Si, néanmoins, quelque chose s'est mal passé, il faut, en mode de contrôle du robot, cliquer sur trois bandes parallèles en haut à gauche de l'écran de l'application. Échouez dans les «Préférences» puis sélectionnez «Sujets»:

image


image


Ensuite, en cliquant sur le sujet approprié, enregistrez le chemin (valeur):
image



Voyons ce qu'est le lidar dans l'application.


Sur le robot, exécutez le nœud lidar:
roslaunch rplidar_ros rplidar.launch
Si vous entrez à nouveau dans l'application, sur l'écran de contrôle du robot, nous verrons des points caractéristiques et une flèche bleue:
image



* Vous pouvez également rouler en inclinant le téléphone dans différentes directions et en sélectionnant le mode de contrôle de l'inclinaison:
image


Il existe d'autres modes de "conduite", même avec la possibilité d'indiquer un point sur la carte, directement sur le téléphone, mais comme la carte est très arbitraire, le trajet sera également conditionnel, c'est-à-dire qu'il n'ira nulle part.

Avec les sujets de mouvement, comme les caméras (on ne va pas y penser), tout est plus ou moins clair, on va traiter du gps.


Il y a peu de sens dans la salle du GPS, mais il est intéressant de voir comment cela fonctionne.
Pour les tests, tout sifflet GPS convient. Mon option est la suivante -
image


Pour le faire fonctionner, vous devez d'abord installer le nœud gps sur framboise.
Mais d'abord, vérifions si le sifflet GPS fonctionne, sinon toutes les autres conversations seront en faveur des pauvres.
Nous mettons des paquets sur la framboise:
sudo apt-get install gpsd
sudo apt-get install gpsd-clients

Vérifiez que le sifflet GPS est défini parmi les appareils USB:
lsusb


Maintenant, vérifiez que gps accepte quelque chose:
gpscat -s 9600 /dev/ttyACM1
* Au lieu de ttyACM1, il peut y avoir d'autres valeurs (ttyACM0, ttyUSB0, ttyAMA0) selon le port sur lequel le sifflet GPS est activé.
Des messages GPS seront diffusés dans le terminal:
image


Des données plus structurées (agréables à l'œil) peuvent être obtenues comme suit:
gpsmon /dev/ttyACM1
image


* les coordonnées ne sont pas les miennes, ce qui est étrange. On ne sait pas exactement à quoi cela est lié.

Installez le nœud gps sur framboise:
sudo apt-get install libgps-dev
cd catkin_ws/src
git clone https://github.com/ros-drivers/nmea_navsat_driver
git clone https://github.com/ros/roslint
cd /home/pi/rosbots_catkin_ws
catkin_make


Maintenant que nous avons assemblé le nœud GPS, exécutez-le (sur le robot):
rosrun nmea_navsat_driver nmea_serial_driver _port:=/dev/ttyACM1 _baud:=9600

Si vous regardez les sujets (dans un autre terminal du robot), vous pouvez voir que le téléphone est abonné à un sujet, et la publication d'un nœud gps va à un autre:
image


Modifiez le sujet de réception sur le téléphone en sujet / fix via les paramètres décrits ci-dessus.
Après le changement, la publication et l'accueil dans un même thème:
image


Et au téléphone, vous pouvez observer les coordonnées:
image



Odométrie (sujet / odom).


Si vous exécutez la note du compteur kilométrique à partir de messages précédents, alors, lorsque le robot se déplace, vous pouvez également obtenir les vitesses linéaires et angulaires du robot sur le téléphone (les vitesses ne sont pas calculées en utilisant le GPS).
Sur le robot:
cd /home/pi/rosbots_catkin_ws/src/rosbots_driver/scripts/rosbots_driver
python diff_tf.py

Au téléphone:
image

Source: https://habr.com/ru/post/fr474650/


All Articles