README.md 4.65 KB
Newer Older
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
1
2
# S9-TurtleBot

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
3
4
5
Notes et connaissances sur le TurtleBot3 en PRE.
Toutes les informations importantes afin que les générations futures perdent moins de temps.

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
6
## Liens utiles & sources
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
7

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
8
9
- [Robotis e-Manual](https://emanual.robotis.com/docs/en/platform/turtlebot3/overview/)
- [The Robotics Backend](https://roboticsbackend.com/)
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
10
- [Install ROS on Windows WSL](https://github.com/MohanadSinan/Smart-Methods/wiki/Install-ROS-on-windows-10-using-WSL-%28Full-guide%29)
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
11
- [TurtleBot3 API](http://wiki.ros.org/turtlebot3)
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
12
- [Cours sur ROS et son système](https://homepages.laas.fr/ostasse/drupal/content/enseignements-ros)
SAJOUS Lucas's avatar
SAJOUS Lucas committed
13
- [Fonctions navigation utiles git étranger](https://github.com/markwsilliman/turtlebot)
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
14
- [Une liste de tutorials liés au git ci-dessus](http://learn.turtlebot.com/2015/02/01/10/)
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
15
16
17
18
19
20
21
22
23
24
25
26
27
28

## Nom de version de ROS à installer en fonction de la version d'Ubuntu

| Version de ROS \ Version d'Ubuntu |Ubuntu 16.04|Ubuntu 18.04|Ubuntu 20.04|
| ------ | ------ | ------ | ------ |
| ROS 1 | Kinetic | Melodic | Noetic |
| ROS 2 |  | Dashing | Foxy |

Bien vérifier la version de ROS en haut de la page sur Robotis e-Manual !

## Connexion au Raspberry PI via SSH

L'accès au Raspberry PI en SSH peux se faire avec la commande suivante :
```
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
29
ssh ubuntu@<IP du Raspberry PI>
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
30
31
32
```
Le mot de passe par défaut est `turtlebot`

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
33
34
>Pour les versions antérieures à Noetic, l'utilisateur est `pi` !

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
35
36
37
## Configuration réseau

Une préparation du fichier `~/.bashrc` est nécessaire pour configurer les IPs de l'ordinateur et du Raspberry PI.
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
38
39
40
41
42
>>>
Le fichier `~/.bashrc` est un script en bash éxécuté lors de la création d'un terminal pour automatiser des commandes.

Dans notre cas, nous avions comme IP sur le PC `192.168.0.10` et sur le PI `192.168.0.20`, cependant cela **devrait** fonctionner avec n'importe quelle couple d'IP.
>>>
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
43
44
45
46
47
48
49

### Sur le PC

```
nano ~/.bashrc
```

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
50
51
>Ici on utilise nano, mais si tu aime te casser les dents, tu peux apprendre à utiliser `vim` !

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
52
53
54
Ajouter en fin du fichier `~/.bashrc` les commandes suivantes :
```
export ROS_MASTER_URI=http://<IP PC>:11311
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
55
export ROS_HOSTNAME=<IP PC>
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
```

>Ici, les **2 IP indiqués sont celles du PC**

### Sur le Raspberry PI
```
nano ~/.bashrc
```

Ajouter en fin du fichier `~/.bashrc` les commandes suivantes :
```
export ROS_MASTER_URI=http://<IP PC>:11311
export ROS_HOSTNAME=<IP Raspberry PI>
```

>Ici, les **2 IP indiqués sont DIFFERENTES, celle du PC puis celle du Rapsberry PI**

## Mise en route du premier test

Dans l'ordre :

### Sur le PC

```
roscore
```

### Sur le Raspberry PI
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
84
85
86

C'est le programme `Bringup`

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
87
88
89
```
roslaunch turtlebot3_bringup turtlebot3_robot.launch
```
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
90
91
## Les différents programmes
### Déplacements au clavier
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
92

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
93
Une fois le Bringup lancé.
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
94

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
95
Sur le PC :
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
96
97
98
99
100
101
102
103
```
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
```

Si tout se passe bien, le robot doit se mettre à bouger à l'aide des touches `w a s d x`.

>On peux ajouter `export TURTLEBOT3_MODEL=burger` au fichier `~/.bashrc` du PC !
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
104
105
106
107
108
109
110
111
112
113

### SLAM (Simultaneous Localization and Mapping)

Une fois le Bringup lancé.

Sur le PC :
```
roslaunch turtlebot3_slam turtlebot3_slam.launch
```

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
114
>Pour déplacer le robot après le lancement du programme, voir la section juste au [dessus](#déplacements-au-clavier) !
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
115
116
117
118
119
120
121

## Monitoring

Afin de voir toutes les variables que le robot envoie au PC, une IHM est fourni.

Sur le PC :
```
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
122
rqt
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
123
```
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
124
125

Ensuite aller dans `plugin``Topics``Topic Monitor`
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
126
127
128
129
130
131
132
## Principe de node dans ROS
Dans ROS, chaque fonctionnalitées est une node et des nodes appartiennent à des paquets. Ces nodes communiquent entre-elles grâce à de multiples type de communication de ROS. (topics, services, actions, etc...)

Les avantages :
- Moins de répétition : Si une feature doit être réutilisée, il suffit d'en faire une node et d'y accéder.
- Pas de langage imposé : Une node peux être écrit en python/C++/autre mais pourra toujours communiquer avec une autre quelque soit le langage, les communication de ROS servent d'interface entre les deux.
- Plus stable : Comme les nodes sont des processus indépendants, si une node crash, les autres ne sont pas affectées.
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
133

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
134
## Routeurs
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
135
### Se connecter au Netgear
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
136
SSID : `NETGEAR_11N`
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
137

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
138
mdp : `sharedsecret`
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
139

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
140
### Se connecter au Pi Zero
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
141
142
143
144
SSID : `raspi-webgui`

mot de passe : `ChangeMe`

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
145
### Interface web du Pi Zero
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
146
Adresse : `192.168.0.41`
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
147

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
148
Utilisateur : `admin`
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
149

HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
150
mdp :  `secret`
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
151
152
153
154

### Erreurs chelou qui nous a coûté pas mal de temps

- Pour une raison obscure, pour pouvoir utiliser la navigation automatique après la création d'une carte, il faut _**ABSOLUMENT**_ que l'horloge de l'ordinateur hôte soit synchronisée avec l'horloge de Raspberry PI.
HERNIO Pierre-Louis's avatar
HERNIO Pierre-Louis committed
155
`date --set="$(ssh user@server date)"`