FAQ robots basés sur Raspberry Pi

🔔 Mon Turtlebot bipe

🔋 Il s’agit du signal de batterie faible et il ne doit pas être ignoré.

Turtlebot est alimenté par une batterie puissante de type Li-Po. Ce type de batterie rend dangereux leur utilisation lorsque la charge est très faible. Dans un cas extrême elle pourrait chauffer et prendre feu. Mettre en charge rapidement la batterie lorsque Turtlebot bipe.

📥 Flasher la carte SD

Note préliminaire : la carte SD du robot ne se comporte pas tout-à-fait comme une carte SD “normale”. Elle ne permet pas de stocker des fichiers dessus ; il est également normal qu’une carte SD insérée dans votre ordinateur n’apparaisse pas dans le Poste de Travail avant de l’avoir flashée.

Téléchargez ces images ROS en vue de remettre à zéro les cartes SD des robots pour ROS4PRO (⚠️⏳ Optimisez votre temps, le téléchargement peut prendre 1 heure) :

Pour flasher l’une de ces images sur une carte SD :

⚠️ Si votre ordinateur n’arrive pas à lire la carte SD, vous pouvez essayer la procédure suivante :

  1. Fermer tous les terminaux ouverts et réessayer
  2. Ouvrir un terminal et exécuter les 2 commandes suivantes. Redémarrer l’ordinateur et réessayer
sudo apt-get install --reinstall udisks2
sudo apt-get install exfat-fuse exfat-utils

📡 Connecter le robot en Wifi

Mise en place

Workshop : Utilisation des routeurs

Lors des workshop ROS, le wifi vous est fourni via des routeurs.
Une combinaison nom et mot de passe vous sont donnés au début de la session (souvent ROS4PRO<groupe> comme nom de wifi et mot de passe)
Vérifiez que vous avez bien des Raspberry qui supportent le 5 GHz (Raspberry Pi 3B+ à minima).

Utiliser votre smartphone comme point d’accès

Utilisez votre smartphone comme hotspot réseau. Tous les smartphones ne se valent pas. En particulier :

Poppy Ergo Jr

Utilisez le câble réseau une première fois en vue de configurer le Wifi du robot :

⚠️ Il est possible d’utiliser le robot avec le câble plutôt qu’en Wifi, cependant pour utiliser ROS le robot doit pouvoir synchroniser son horloge en se connectant à Internet. Si vous décidez d’utiliser un câble Ethernet direct ne donnant pas accès à Internet, suivez la procédure de synchronisation d’horloge ci-dessous.

Turtlebot 3

⚠️ Cette procédure ne fonctionne qu’avec le Turtlebot éteint et la carte SD hors du robot.

  1. Télécharger le fichier 50-cloud-init.yaml et modifiez-le pour renseigner le bon login et mot de passe wifi dans les WIFI_SSID et password. Respectez scrupuleusement l’indentation ! Ne rajoutez pas d’espaces ou de sauts de lignes et n’utilisez pas des tabulations (l’indentation se fait avec 4 espaces) Il est facile de faire une erreur sur ce fichier et il n’y aura aucun message d’erreur puisque c’est lui qui détermine si le robot va réussir à s’appairer au réseau.

  2. Insérer la carde SD du robot en question dans votre poste de travail (pas dans votre robot)

  3. Ouvrir un terminal et copier le fichier avec cette commande :

sudo cp ~/Téléchargements/50-cloud-init.yaml /media/$(whoami)/writable/etc/netplan/
  1. Vérifier dans /media/$(whoami)/writable/etc/netplan si le fichier a correctement été copié.

Aide dans la documentation (en cas de problème)

🖧 Se connecter via SSH à un robot

SSH (Secure SHell) permet d’ouvrir un terminal à distance sur une autre machine que celle sur laquelle on tape les commandes (par exemple le robot, qui n’a ni clavier ni écran pour interagir avec un terminal). Il est nécessaire de connaître :

Note : Par mesure de sécurité, la commande ssh n’affiche pas le mot de passe tapé que vous écrivez.

La commande est l’une des suivantes, à taper dans un terminal sur Ubuntu :

ssh poppy@poppy.local
ssh ubuntu@turtlebot.local

Taper yes pour confirmer la connexion puis taper le mot de passe (turtlebot pour Turtlebot ou poppy pour Poppy). Votre invite de commande devrait désormais indiquer poppy@poppy.local~$ ou ubuntu@turtlebot.local~$ : toute commande tapée dans ce terminal sera exécutée par le robot. En cas d’erreur, consultez la procédure de diagnostic ci-dessous.

🔑 Mots de passe par défaut

Turtlebot

Poppy

🕗 Synchronisation d’horloge

Si vous obtenez l’erreur Received JointState is XXXXXX.XXXXXX seconds old ou tout autre erreur en relation avec le temps, il se peut que l’horloge de votre robot et de votre PC soit désynchronisée.

Vérifiez avec la commande date que l’horloge de votre robot est à moins d’une demi-seconde près égale à celle de votre PC.

Pour activer la synchronisation automatique, vérifiez que la machine à syncrhoniser est connectée à Internet via la 4G, le réseau Ethernet ou le wifi, puis tapez :

sudo timedatectl set-ntp on

La commande suivante permet de forcer une nouvelle synchronisation NTP automatique :

sudo journalctl -u systemd-timesyncd -f     # Dans ce terminal, consultez les logs en direct de la synchronisation NTP
sudo service systemd-timesyncd restart      # Le synchro a fonctionné uniquement si les logs affichent "Initial synchronization to time server..."

Si vous souhaitez passer de la synchronisation automatique à la synchronisation manuelle :

sudo timedatectl set-ntp off
sudo timedatectl set-time "2021-09-30 18:00:00"   # Mettre une heure PRECISE à moins d'une demi-sec (il faut être très rapide)

Note : ntpdate est osbolète et n’est plus installé sur Ubuntu

💽 Espace disque insuffisant sur les robots

Si votre carte SD fait 8Go, vous devez forcément libérer de l’espace disque. Supprimez les archives APT du robot rm -fr /var/cache/apt/archives/*. Si ce n’est pas suffisant, la suppression de fichiers doit être vue au cas par cas.

Si votre carte SD fait + de 8Go : Les images des robots sont conçues pour des cartes SD 8 Go, elles n’utilisent pas tout l’espace disponible de la carte SD. Si vous avez besoin de plus d’espace disque et que la carte SD a bien une effectivement supérieure à 8 Go, il est nécessaire d’étendre la partition au maximum. Pour cela, insérez la carte SD du robot dans votre station de travail et utilisez l’outil GParted pour la redimensionner :

sudo apt install gparted
sudo gparted

Ensuite :

  1. sélectionner la carte SD dans la liste déroulante (⚠️ GParted peut redimensionner n’importe quelle partition de n’importe quel disque, assurez vous de ne pas vous tromper dans la liste déroulante)
  2. faites clic droit sur la ext4 (la partition la plus à droite) et sélectionnez “Redimensionner”
  3. Glisser le curseur de fin de la partition au maximum à droite. Validez ensuite l’opération de redimensionnement.

🔧 Procédure de diagnostic

💻 Dans un terminal taper ping poppy.local (pour Poppy) ou ping turtlebot.local (pour Turtlebot) :

(1) si toutefois les délais de réponse excèdent environ 100ms, consultez la section “Wifi trop lent ou saturé”.

🐌 Wifi trop lent ou saturé

Si vos commandes ROS sont lentes voire échouent de façon désorganisée sous la forme de divers timeouts, votre réseau Wifi peut être trop dégradé pour que le système foncitonne convenablement. Quelques pistes :

❌ Erreur Unable to connect to move_group action server 'move_group' within allotted time (30s)

Cette erreur peut survenir si :

❌ Erreur Unable to ping my own server at XXXXX.local

Cela peut survenir lors d’un changement de la configuration réseau. Exécutez :

sudo service avahi-daemon restart

📥 Mettre à jour l’openCR du Turtlebot

Si vous avez une erreur à propos d’une openCR incompatible, voici la méthode pour mettre à jour le firmware.

Tapez les commandes suivantes sur la raspberry pi (donc en SSH depuis votre PC):

cd ./opencr_update
./update.sh /dev/ttyACM0 burger_noetic.opencr

Puis testez la mise à jour :

  1. Placer le robot sur un sol plat dans un espace libre

  2. Appuyer longuement sur le bouton PUSH SW 1 pendant quelque secondes, le robot devrait aller tout droit pendant 30 centimètres

  3. Appuyer longuement sur le bouton PUSH SW 2 pendant quelque secondes, le robot devrait tourner de 180 degrées sur place

OpenCR

📡 Comment effectuer un scan pour trouver l’adresse IP de la raspberry pi ?

Normalement vous n’avez pas besoin d’utiliser les adresses IP en dur, à la place on utilise avahi-daemon (déjà installé) pour effectuer la résolution des noms. Mais si vous voulez quand même le faire, voici comment précéder. Ouvrir un terminal et exécuter les commandes suivantes :

sudo apt install arp-scan
sudo arp-scan --localnet

Les machines connectées à votre réseau devraient apparaître avec un nom qui permet de les discriminer.