Installation de CoppeliaSim

À la date de l’installation, mon PC est sous Debian 11.

Télécharger CoppeliaSim depuis :
https://www.coppeliarobotics.com/downloads

Dans la console :

cd Téléchargements
tar -xJf CoppeliaSim*.tar.xz

Si le répertoire coppeliasim n’existe pas déjà, je le crée :
mkdir ~/.local/share/CoppeliaSim
J’installe l’application à l’endroit voulu :
cp -r CoppeliaSim*/* ~/.local/share/CoppeliaSim

Je télécharge l’icône CoppeliaSim et l’installe à l’endroit voulu :
wget http://entropie.org/3615/download/coppeliasim.png
mv coppeliasim.png ~/.local/share/CoppeliaSim

Pour intégrer le programme au menu de Mate, je passe par le menu auquel j’ai déjà intégré mozo :
Système > Préférences > Apparence > Menu Principal > Nouvel élément
Le fichier créé apparaît ici :
~/.local/share/applications/mozo-made.desktop

Pour effacer une version précédente :
rm -rf ~/.local/share/CoppeliaSim


J’installe ensuite Jupyter Notebook pour programmer Poppy en Python :
sudo apt-get install jupyter

Pour appeler rapidement Jupyter Notebook, j’installe également l’application dans le menu (avec mozo).
Télécharger l’icône de Jupyter :
wget http://entropie.org/3615/download/jupyter.svg
L’appel du programme se fait par : jupyter-notebook

Dans Jupyter Notebook, créer un nouveau Notebook et dans la première cellule, écrire puis exécuter :

# Import des bibliothèques et création du robot
from poppy_ergo_jr import PoppyErgoJr
creature = PoppyErgoJr(simulator='vrep')

Le robot apparaît alors dans CoppeliaSim (il faut avoir ouvert CoppeliaSim avant d’exécuter la cellule).

Installation de Poppy Ergo Jr

À la date de l’installation, mon PC est sous Debian 11.

Officiel : Documentation / GitHub / Poppy Forum

1/ Préparer la carte SD

Télécharger le fichier image pour la Raspberry Pi 2 :
https://github.com/poppy-project/poppy-ergo-jr/releases

Décompresser le fichier téléchargé pour obtenir le fichier image.

Version 4.0.1 :
2021-10-20-poppy-ergo-jr.img.7z
MD5 sums : ce648d0eba1099520e982032b0a9ca86
2021-10-20-poppy-ergo-jr.img
MD5 sums : bc87deb721ee851ccd8cc06311cba514

Transférer l’image sur la carte SD :

sudo fdisk -l (pour avoir la liste des disques)
cd Téléchargements
sudo dd if=2021-10-20-poppy-ergo-jr.img of=/dev/sdf bs=1M status=progress (à adapter)

À adapter : On indique en sortie le nom d’un périphérique (ici sdf), pas celui d’une partition comme sdf1. Il faut attendre quelques minutes pour que l’opération se finisse.

On met la carte SD dans la Raspberry Pi, on connecte le robot au réseau local et on branche le transformateur (7,5 V / 2 A) sur la carte Pixl prévue pour le robot Poppy Ergo Jr. Le + de la prise du transformateur est au centre, le – à l’extérieur.

2/ Améliorer la sécurité

Par défaut, pour se connecter à Poppy :
login : poppy / password : poppy
Il existe aussi un autre mode administrateur :
login : pi / password : raspoppy
On va modifier leur mot de passe.

ssh pi@192.168.0.xxx (à adapter)
passwd pi (pour modifier le mot de passe)
sudo passwd poppy (pour modifier le mot de passe)

3/ Modifier la configuration

Dans la console :

sudo raspi-config

Network Options > Hostname (modifier poppy en POPPY)
Localisation Options > Change Locale : fr_FR.UTF8 UTF-8
                     > Change TimeZone : Europe > Paris
                     > Change Keyboard Layout
Advanced Options > Expand Filesystem

Network Options modifie les fichiers :
/etc/hostname
/etc/hosts

4/ Ports à ouvrir sur le routeur / firewall à l’adresse du robot et à destination de mon ordinateur

nmap -p- -v 192.168.0.xxx (à adapter)

Nmap scan report for 192.168.0.xxx :
PORT     STATE SERVICE
22/tcp   open  ssh
53/tcp   open  domain
80/tcp   open  http
2280/tcp open  lnvpoller
4000/tcp open  remoteanything
6969/tcp open  acmsoda
8000/tcp open  http-alt
8080/tcp open  http-proxy
8888/tcp open  sun-answerbook
9009/tcp open  pichat

5/ Utiliser Poppy en le connectant directement sur un PC

En général, on utilise Poppy en le branchant sur un routeur, mais on peut vouloir être indépendant de tout réseau, soit parce qu’il n’y a tout simplement pas de réseau, soit parce que Poppy n’est pas reconnu. La solution est donc de brancher directement Poppy sur un PC en utilisant un câble RJ45 croisé (chez moi, ça fonctionne aussi avec un câble droit).

sudo nano /boot/cmdline.txt

Rajouter à la fin de la première ligne : ip=192.168.0.xxx (à adapter).
Pour repérer les cartes réseaux :
ip addr (ou ip a)
On donne une adresse ip à la carte Ethernet du PC :
sudo ifconfig eth0 192.168.0.yyy up (eth0 et adresse ip à adapter)
On teste la connection avec Poppy :
ping 192.168.0.xxx (à adapter)

Remarque : Pour avoir accès à ifconfig, il faut installer sous Debian 11 le paquet net-tools :
sudo apt-get install net-tools

Dans le navigateur Internet, on accède à l’interface Poppy par : http://192.168.0.xxx (à adapter).

Poppy Ergo Jr

import random
import time
from pypot.dynamixel.conversion import XL320LEDColors

#------------------------------------------------------
# CREATION DU ROBOT
#------------------------------------------------------

from pypot.creatures import PoppyErgoJr
poppy = PoppyErgoJr()

#------------------------------------------------------
# INITIALISATION DU ROBOT
#------------------------------------------------------

for m in poppy.motors :  # Boucle sur les six moteurs
    m.compliant = False
    m.led = 'green'
position_1 = {'m1': 0, 'm2': -110, 'm3': 66, 'm4': 0, 'm5': 34, 'm6': 20}  # safe_power_up
poppy.goto_position(position_1, 2, wait=True)  # 2 secondes pour prendre la position

#------------------------------------------------------
# FONCTION animation
#------------------------------------------------------

def animation(moteur, angleMin, angleMax, forceMax) :
    moteur.goal_position = random.randint(angleMin,angleMax)
    if abs(moteur.present_load) > forceMax :
        print (moteur.present_load)
        for m in poppy.motors :
            m.compliant = True
            m.led = 'off'
        for i in range(5) :
            moteur.led = 'red'
            time.sleep(0.5)
            moteur.led = 'off'
            time.sleep(0.5)
        time.sleep(1)

#------------------------------------------------------
# BOUCLE
#------------------------------------------------------

while 1 :
    for m in poppy.motors :
        m.moving_speed = random.randint(5,20)  # 5,20 à 5,30
        m.compliant = False
        m.led = XL320LEDColors(random.randint(2,8)).name
    animation(poppy.m1,-90,90,50)
    animation(poppy.m2,-110,0,30)
    animation(poppy.m3,0,60,30)
    animation(poppy.m4,-90,90,30)
    animation(poppy.m5,-40,40,20)
    animation(poppy.m6,-60,60,10)
    if random.randrange(4) == 1 :
        time.sleep(random.randrange(5))