mirror of
https://github.com/modelec/Documentations.git
synced 2026-01-18 16:37:30 +01:00
doc ros v0.0.2
This commit is contained in:
8
Writerside/Writerside_libraries.tree
Normal file
8
Writerside/Writerside_libraries.tree
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE instance-profile
|
||||
SYSTEM "https://resources.jetbrains.com/writerside/1.0/product-profile.dtd">
|
||||
|
||||
<instance-profile id="Writerside_libraries"
|
||||
name="Writerside_libraries" is-library="true">
|
||||
|
||||
</instance-profile>
|
||||
@@ -22,6 +22,75 @@
|
||||
</toc-element>
|
||||
<toc-element topic="Panneau-de-commande.md"/>
|
||||
<toc-element topic="Moteur-CC.md"/>
|
||||
<toc-element topic="Code-Rasp.md">
|
||||
<toc-element topic="ROS2.md">
|
||||
<toc-element topic="ROS2-Intro.md"/>
|
||||
<toc-element topic="ROS2-Installation.md">
|
||||
<toc-element topic="ROS2-avec-JetBrain-pour-windows.md"/>
|
||||
</toc-element>
|
||||
<toc-element topic="ROS2-Modelec.md">
|
||||
<toc-element topic="Nodes.md">
|
||||
<toc-element topic="Multiple-Serial-Listener-Node.md"/>
|
||||
<toc-element topic="PCA9685-Controller-Node.md"/>
|
||||
<toc-element topic="Odometry-Logic-Processor-Node.md"/>
|
||||
<toc-element topic="Button-GPIO-Controller-Node.md"/>
|
||||
<toc-element topic="Lidar-Controller-Node.md"/>
|
||||
<toc-element topic="Move-Controller-Node.md"/>
|
||||
<toc-element topic="PCB-Alim-Interface-Node.md"/>
|
||||
<toc-element topic="Solenoid-Controller-Node.md"/>
|
||||
<toc-element topic="Tirette-Controller-Node.md"/>
|
||||
<toc-element topic="Arm-Controller-Node.md"/>
|
||||
<toc-element topic="Game-Controller-Listener-Node.md"/>
|
||||
</toc-element>
|
||||
<toc-element topic="Topics.md">
|
||||
<toc-element topic="Arm-Control-Topic.md"/>
|
||||
<toc-element topic="Button-Topic.md"/>
|
||||
<toc-element topic="Lidar-Topic.md"/>
|
||||
<toc-element topic="Odometry-Data-Topic.md"/>
|
||||
<toc-element topic="Solenoid-Topic.md"/>
|
||||
<toc-element topic="Serial-Listener-Topic.md">
|
||||
<toc-element topic="Raw-Data-Topic.md"/>
|
||||
<toc-element topic="Send-To-Serial-Topic.md"/>
|
||||
<toc-element topic="Odometry-Listener-Serial-Topic.md"/>
|
||||
<toc-element topic="PCB-Alim-Serial-Topic.md"/>
|
||||
</toc-element>
|
||||
<toc-element topic="Servo-Topic.md">
|
||||
<toc-element topic="Servo-Control-Topic.md"/>
|
||||
<toc-element topic="Clear-PCA9685.md"/>
|
||||
</toc-element>
|
||||
<toc-element topic="Tirette-Topic.md"/>
|
||||
<toc-element topic="Joy-Topic.md"/>
|
||||
</toc-element>
|
||||
<toc-element topic="Services.md">
|
||||
<toc-element topic="Add-Button-Service.md"/>
|
||||
<toc-element topic="Add-Solenoid-Service.md"/>
|
||||
<toc-element topic="Add-Serial-Listener-Service.md"/>
|
||||
<toc-element topic="Add-Servo-Service.md"/>
|
||||
<toc-element topic="Button-Service.md"/>
|
||||
<toc-element topic="Tirette-Service.md"/>
|
||||
</toc-element>
|
||||
<toc-element topic="Utils.md"/>
|
||||
</toc-element>
|
||||
<toc-element topic="ROS2-UI.md"/>
|
||||
<toc-element topic="ROS2-Interfaces.md">
|
||||
<toc-element topic="Message.md">
|
||||
<toc-element topic="Button-Message-Interface.md"/>
|
||||
<toc-element topic="OdometryData-Message-Interface.md"/>
|
||||
<toc-element topic="PCA9685Servo-Message-Interface.md"/>
|
||||
<toc-element topic="Solenoide-Message-Interface.md"/>
|
||||
<toc-element topic="ServoMode-Message-Interface.md"/>
|
||||
</toc-element>
|
||||
<toc-element topic="Service.md">
|
||||
<toc-element topic="AddButton-Service-Interface.md"/>
|
||||
<toc-element topic="AddSolenoid-Service-Interface.md"/>
|
||||
<toc-element topic="AddSerialListener-Service-Interface.md"/>
|
||||
<toc-element topic="AddServoMotor-Service-Interface.md"/>
|
||||
<toc-element topic="Button-Service-Interface.md"/>
|
||||
<toc-element topic="Tirette-Service-Interface.md"/>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
<toc-element topic="Coupe-De-France-de-Robotique-2024.md">
|
||||
|
||||
@@ -23,4 +23,25 @@
|
||||
<description>Created after removal of "dev" from Documentation Robot Modelec 2024</description>
|
||||
<accepts>Reseau.html</accepts>
|
||||
</rule>
|
||||
<rule id="2aee5e8a">
|
||||
<description>Created after removal of "ROS2" from Documentation Robot Modelec 2024</description>
|
||||
<accepts>ROS2.html</accepts>
|
||||
</rule>
|
||||
<rule id="7d1843c2">
|
||||
<description>Created after removal of "ArduinoData message interface" from Documentation Robot Modelec 2024
|
||||
</description>
|
||||
<accepts>ArduinoData.html</accepts>
|
||||
</rule>
|
||||
<rule id="797a0cd5">
|
||||
<description>Created after removal of "ModelecSnippet" from Documentation Robot Modelec 2024</description>
|
||||
<accepts>modelecsnippet.html</accepts>
|
||||
</rule>
|
||||
<rule id="19d7dbd0">
|
||||
<description>Created after removal of "Add Button" from Documentation Robot Modelec 2024</description>
|
||||
<accepts>Add-Button.html</accepts>
|
||||
</rule>
|
||||
<rule id="2aaa44a4">
|
||||
<description>Created after removal of "Robot Position" from Documentation Robot Modelec 2024</description>
|
||||
<accepts>Robot-Position.html</accepts>
|
||||
</rule>
|
||||
</rules>
|
||||
14
Writerside/topics/Add-Button-Service.md
Normal file
14
Writerside/topics/Add-Button-Service.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# Add Button
|
||||
|
||||
## Nom du service : **add_button**
|
||||
[Interface](AddButton-Service-Interface.md)
|
||||
|
||||
## Objectif
|
||||
Setup le contrôle d'un nouveau bouton sur les GPIO.
|
||||
Le bouton peut ensuite être contrôlé via le topic [](Button-Topic.md)
|
||||
|
||||
### Service
|
||||
- [](Button-GPIO-Controller-Node.md)
|
||||
|
||||
### Client
|
||||
-
|
||||
18
Writerside/topics/Add-Serial-Listener-Service.md
Normal file
18
Writerside/topics/Add-Serial-Listener-Service.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Add Serial Listener
|
||||
|
||||
## Nom du service : **add_serial_listener**
|
||||
[Interface](AddSerialListener-Service-Interface.md)
|
||||
|
||||
## Objectif
|
||||
Setup un listener sur un nouveau port série.
|
||||
Deux topics sont ensuite créés :
|
||||
- [](Raw-Data-Topic.md) : pour recevoir les données brutes du port série.
|
||||
- [](Send-To-Serial-Topic.md) : pour envoyer des données vers le port série.
|
||||
|
||||
### Service
|
||||
- [](Multiple-Serial-Listener-Node.md)
|
||||
|
||||
### Client
|
||||
- [](PCB-Alim-Interface-Node.md)
|
||||
- [](Game-Controller-Listener-Node.md)
|
||||
- [](Odometry-Logic-Processor-Node.md)
|
||||
14
Writerside/topics/Add-Servo-Service.md
Normal file
14
Writerside/topics/Add-Servo-Service.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# Add Servo
|
||||
|
||||
## Nom du service : **add-servo**
|
||||
[Interface](AddServoMotor-Service-Interface.md)
|
||||
|
||||
## Objectif
|
||||
Setup le contrôle d'un nouveau servo moteur.
|
||||
|
||||
### Service
|
||||
- [](PCA9685-Controller-Node.md)
|
||||
|
||||
### Client
|
||||
- [](Arm-Controller-Node.md)
|
||||
- [](Game-Controller-Listener-Node.md)
|
||||
13
Writerside/topics/Add-Solenoid-Service.md
Normal file
13
Writerside/topics/Add-Solenoid-Service.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Add Solenoid
|
||||
|
||||
## Nom du service : **add_solenoid**
|
||||
[Interface](AddSolenoid-Service-Interface.md)
|
||||
|
||||
## Objectif
|
||||
Setup le contrôle d'un solénoïde.
|
||||
|
||||
### Service
|
||||
- [](Solenoid-Controller-Node.md)
|
||||
|
||||
### Client
|
||||
-
|
||||
29
Writerside/topics/AddButton-Service-Interface.md
Normal file
29
Writerside/topics/AddButton-Service-Interface.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# AddButton
|
||||
`<modelec_interface/srv/add_button.hpp>`
|
||||
|
||||
## Objectif
|
||||
Ajouter le contrôle d'un bouton.
|
||||
|
||||
## Interface
|
||||
```cpp
|
||||
uint8 pin
|
||||
string name
|
||||
---
|
||||
bool success
|
||||
```
|
||||
|
||||
## Params
|
||||
|
||||
| Type | Name | Description |
|
||||
|--------|------|---------------|
|
||||
| uint8 | pin | pin du bouton |
|
||||
| string | name | nom du bouton |
|
||||
|
||||
## Retour
|
||||
|
||||
| Type | Name | Description |
|
||||
|------|---------|------------------------|
|
||||
| bool | success | requête réussie ou non |
|
||||
|
||||
## Utilisé par
|
||||
- [](Button-GPIO-Controller-Node.md)
|
||||
34
Writerside/topics/AddSerialListener-Service-Interface.md
Normal file
34
Writerside/topics/AddSerialListener-Service-Interface.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# AddSerialListener
|
||||
`<modelec_interface/srv/add_serial_listener.hpp>`
|
||||
|
||||
## Objectif
|
||||
|
||||
## Interface
|
||||
```cpp
|
||||
string name
|
||||
string serial_port
|
||||
int64 bauds
|
||||
---
|
||||
bool success
|
||||
string publisher
|
||||
string subscriber
|
||||
```
|
||||
|
||||
## Params
|
||||
|
||||
| Type | Name | Description |
|
||||
|--------|-------------|-----------------------------|
|
||||
| string | name | nom du listener |
|
||||
| string | serial_port | port série à écouter |
|
||||
| int64 | bauds | vitesse de la liaison série |
|
||||
|
||||
## Retour
|
||||
|
||||
| Type | Name | Description |
|
||||
|------|---------|------------------------|
|
||||
| bool | success | requête réussie ou non |
|
||||
|
||||
## Utilisé par
|
||||
- [](Game-Controller-Listener-Node.md)
|
||||
- [](Multiple-Serial-Listener-Node.md)
|
||||
- [](PCB-Alim-Interface-Node.md)
|
||||
28
Writerside/topics/AddServoMotor-Service-Interface.md
Normal file
28
Writerside/topics/AddServoMotor-Service-Interface.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# AddServoMotor
|
||||
`<modelec_interface/srv/add_servo_motor.hpp>`
|
||||
|
||||
## Objectif
|
||||
|
||||
## Interface
|
||||
```cpp
|
||||
uint8 pin
|
||||
---
|
||||
bool success
|
||||
```
|
||||
|
||||
## Params
|
||||
|
||||
| Type | Name | Description |
|
||||
|-------|------|---------------------|
|
||||
| uint8 | pin | pin du servo moteur |
|
||||
|
||||
## Retour
|
||||
|
||||
| Type | Name | Description |
|
||||
|------|---------|------------------------|
|
||||
| bool | success | requête réussie ou non |
|
||||
|
||||
## Utilisé par
|
||||
- [](Arm-Controller-Node.md)
|
||||
- [](Game-Controller-Listener-Node.md)
|
||||
- [](PCA9685-Controller-Node.md)
|
||||
26
Writerside/topics/AddSolenoid-Service-Interface.md
Normal file
26
Writerside/topics/AddSolenoid-Service-Interface.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# AddSolenoid
|
||||
`<modelec_interface/srv/add_solenoid.hpp>`
|
||||
|
||||
## Objectif
|
||||
|
||||
## Interface
|
||||
```cpp
|
||||
uint8 pin
|
||||
---
|
||||
bool success
|
||||
```
|
||||
|
||||
## Params
|
||||
|
||||
| Type | Name | Description |
|
||||
|-------|------|-----------------|
|
||||
| uint8 | pin | pin du solenoid |
|
||||
|
||||
## Retour
|
||||
|
||||
| Type | Name | Description |
|
||||
|------|---------|------------------------|
|
||||
| bool | success | requête réussie ou non |
|
||||
|
||||
## Utilisé par
|
||||
- [](Solenoid-Controller-Node.md)
|
||||
13
Writerside/topics/Arm-Control-Topic.md
Normal file
13
Writerside/topics/Arm-Control-Topic.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Arm Control
|
||||
|
||||
## Nom du topic : **arm_control**
|
||||
[Interface](ServoMode-Message-Interface.md)
|
||||
|
||||
## Objectif
|
||||
Contrôler les actionneurs du bras de [](Serge.md)
|
||||
|
||||
### Publisher
|
||||
- [](Game-Controller-Listener-Node.md)
|
||||
|
||||
### Subscriber
|
||||
- [](Arm-Controller-Node.md)
|
||||
1
Writerside/topics/Arm-Controller-Node.md
Normal file
1
Writerside/topics/Arm-Controller-Node.md
Normal file
@@ -0,0 +1 @@
|
||||
# Arm Controller
|
||||
1
Writerside/topics/Button-GPIO-Controller-Node.md
Normal file
1
Writerside/topics/Button-GPIO-Controller-Node.md
Normal file
@@ -0,0 +1 @@
|
||||
# Button GPIO Controller
|
||||
21
Writerside/topics/Button-Message-Interface.md
Normal file
21
Writerside/topics/Button-Message-Interface.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Button
|
||||
`<modelec_interface/msg/button.hpp>`
|
||||
|
||||
## Objectif
|
||||
Bouton on / off.
|
||||
|
||||
## Interface
|
||||
```cpp
|
||||
uint8 pin
|
||||
bool state
|
||||
```
|
||||
|
||||
## Params
|
||||
|
||||
| Type | Name | Description |
|
||||
|-------|-------|-----------------|
|
||||
| uint8 | pin | pin du solenoid |
|
||||
| bool | state | état du bouton |
|
||||
|
||||
## Utilisé par
|
||||
- [](Button-GPIO-Controller-Node.md)
|
||||
29
Writerside/topics/Button-Service-Interface.md
Normal file
29
Writerside/topics/Button-Service-Interface.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Button
|
||||
`<modelec_interface/srv/button.hpp>`
|
||||
|
||||
## Objectif
|
||||
Connaitre l'état d'un bouton.
|
||||
|
||||
## Interface
|
||||
```cpp
|
||||
uint8 pin
|
||||
string name
|
||||
---
|
||||
bool status
|
||||
```
|
||||
|
||||
## Params
|
||||
|
||||
| Type | Name | Description |
|
||||
|--------|------|----------------|
|
||||
| uint8 | pin | pin du button |
|
||||
| string | name | nom du button |
|
||||
|
||||
## Retour
|
||||
|
||||
| Type | Name | Description |
|
||||
|------|--------|------------------|
|
||||
| bool | status | statue du bouton |
|
||||
|
||||
## Utilisé par
|
||||
- [](Button-GPIO-Controller-Node.md)
|
||||
13
Writerside/topics/Button-Service.md
Normal file
13
Writerside/topics/Button-Service.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Button
|
||||
|
||||
## Nom du service : **button**
|
||||
[Interface](Button-Service-Interface.md)
|
||||
|
||||
## Objectif
|
||||
Vérifier l'état d'un bouton.
|
||||
|
||||
### Service
|
||||
- [](Button-GPIO-Controller-Node.md)
|
||||
|
||||
### Client
|
||||
-
|
||||
14
Writerside/topics/Button-Topic.md
Normal file
14
Writerside/topics/Button-Topic.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# Button
|
||||
|
||||
## Nom du topic : **button/<name>**
|
||||
[Interface](Button-Message-Interface.md)
|
||||
|
||||
### Objectif
|
||||
Pour chaque bouton crée à partir du Service [`Add Button`](Add-Button-Service.md), un topic est crée suivant la nomenclature suivante : `button/<name>`
|
||||
Ce topic permet de recevoir continuellement l'état du bouton.
|
||||
|
||||
### Publisher
|
||||
- [](Button-GPIO-Controller-Node.md)
|
||||
|
||||
### Subscriber
|
||||
- []()
|
||||
13
Writerside/topics/Clear-PCA9685.md
Normal file
13
Writerside/topics/Clear-PCA9685.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Clear PCA9685
|
||||
|
||||
## Nom du topic : **clear_pca9685**
|
||||
Interface : std_msgs/msg/Empty
|
||||
|
||||
## Objectif
|
||||
Reset tous les PWM du PCA9685.
|
||||
|
||||
### Publisher
|
||||
- [](Game-Controller-Listener-Node.md)
|
||||
|
||||
### Subscriber
|
||||
- [](PCA9685-Controller-Node.md)
|
||||
8
Writerside/topics/Code-Rasp.md
Normal file
8
Writerside/topics/Code-Rasp.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# Code Rasp
|
||||
|
||||
Vous touverez ici la documentation pour tout savoir sur notre raspberry pi et le code qui tourne dessus.
|
||||
|
||||
### Dependence
|
||||
- [ROS2](ROS2.md)
|
||||
- [Qt6](https://www.qt.io/download) : Qt est un framework de développement d'applications multiplateformes. Il est utilisé pour créer l'interface graphique du robot.
|
||||
- [WiringPi](https://github.com/WiringPi/WiringPi) : WiringPi est une bibliothèque C pour la Raspberry Pi qui permet d'accéder aux GPIO. Elle est utilisée pour contrôler les actionneurs et lire les capteurs du robot.
|
||||
1
Writerside/topics/Game-Controller-Listener-Node.md
Normal file
1
Writerside/topics/Game-Controller-Listener-Node.md
Normal file
@@ -0,0 +1 @@
|
||||
# Game Controller Listener
|
||||
13
Writerside/topics/Joy-Topic.md
Normal file
13
Writerside/topics/Joy-Topic.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Joy
|
||||
|
||||
## Nom du topic : **joy**
|
||||
Interface : sensor_msgs/msg/Joy
|
||||
|
||||
## Objectif
|
||||
Transmettre les données de la manette de jeu.
|
||||
|
||||
### Publisher
|
||||
- Joy
|
||||
|
||||
### Subscriber
|
||||
- [](Game-Controller-Listener-Node.md)
|
||||
1
Writerside/topics/Lidar-Controller-Node.md
Normal file
1
Writerside/topics/Lidar-Controller-Node.md
Normal file
@@ -0,0 +1 @@
|
||||
# Lidar Controller
|
||||
13
Writerside/topics/Lidar-Topic.md
Normal file
13
Writerside/topics/Lidar-Topic.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Lidar
|
||||
|
||||
## nom du topic : **scan**
|
||||
Interface : sensor_msgs/msg/LaserScan
|
||||
|
||||
## Objectif
|
||||
Recevoir les données de télémétrie du lidar.
|
||||
|
||||
### Publisher
|
||||
- Rplidar
|
||||
|
||||
### Subscriber
|
||||
- [](Lidar-Topic.md)
|
||||
1
Writerside/topics/Message.md
Normal file
1
Writerside/topics/Message.md
Normal file
@@ -0,0 +1 @@
|
||||
# Message
|
||||
1
Writerside/topics/Move-Controller-Node.md
Normal file
1
Writerside/topics/Move-Controller-Node.md
Normal file
@@ -0,0 +1 @@
|
||||
# Move Controller
|
||||
4
Writerside/topics/Multiple-Serial-Listener-Node.md
Normal file
4
Writerside/topics/Multiple-Serial-Listener-Node.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# Multiple Serial Listener
|
||||
|
||||
## Objectif
|
||||
Un listener pour plusieurs ports série.
|
||||
3
Writerside/topics/Nodes.md
Normal file
3
Writerside/topics/Nodes.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Nodes
|
||||
|
||||
Start typing here...
|
||||
13
Writerside/topics/Odometry-Data-Topic.md
Normal file
13
Writerside/topics/Odometry-Data-Topic.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Odometry Data
|
||||
|
||||
### Nom du topic : **odometry_data**
|
||||
[Interface](OdometryData-Message-Interface.md)
|
||||
|
||||
### Objectif
|
||||
Transmettre la position du robot renvoyé par l'odométrie.
|
||||
|
||||
### Publisher
|
||||
- [](Odometry-Logic-Processor-Node.md)
|
||||
|
||||
### Subscriber
|
||||
- []()
|
||||
13
Writerside/topics/Odometry-Listener-Serial-Topic.md
Normal file
13
Writerside/topics/Odometry-Listener-Serial-Topic.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Odometry
|
||||
|
||||
Un usb listener est setup avec comme nom `odometry`, il permet d'envoyer des données à l'odométrie grace au topic [](Send-To-Serial-Topic.md) et de recevoir des données de l'odométrie grace au topic [](Raw-Data-Topic.md).
|
||||
Les paramètres sont les suivants :
|
||||
- **name** : `odometry`
|
||||
- **baudrate** : `115200`
|
||||
- **serial_port** : `/dev/pts/6`
|
||||
|
||||
### Publisher
|
||||
- [](Multiple-Serial-Listener-Node.md)
|
||||
|
||||
### Subscriber
|
||||
- [](Odometry-Logic-Processor-Node.md)
|
||||
1
Writerside/topics/Odometry-Logic-Processor-Node.md
Normal file
1
Writerside/topics/Odometry-Logic-Processor-Node.md
Normal file
@@ -0,0 +1 @@
|
||||
# Odometry Logic Processor
|
||||
22
Writerside/topics/OdometryData-Message-Interface.md
Normal file
22
Writerside/topics/OdometryData-Message-Interface.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# OdometryData
|
||||
`<modelec_interface/msg/odometry_data.hpp>`
|
||||
|
||||
## Objectif
|
||||
Transmission des données d'odométrie depuis le controller vers la rasp
|
||||
|
||||
## Interface
|
||||
```cpp
|
||||
int64 x
|
||||
int64 y
|
||||
int64 theta
|
||||
```
|
||||
|
||||
## Params
|
||||
| Type | Name | Description |
|
||||
|-------|-------|---------------|
|
||||
| int64 | x | position en x |
|
||||
| int64 | y | position en y |
|
||||
| int64 | theta | angle selon z |
|
||||
|
||||
## Utilisé par
|
||||
- [](Odometry-Logic-Processor-Node.md)
|
||||
1
Writerside/topics/PCA9685-Controller-Node.md
Normal file
1
Writerside/topics/PCA9685-Controller-Node.md
Normal file
@@ -0,0 +1 @@
|
||||
# PCA9685 Controller
|
||||
23
Writerside/topics/PCA9685Servo-Message-Interface.md
Normal file
23
Writerside/topics/PCA9685Servo-Message-Interface.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# PCA9685Servo
|
||||
`<modelec_interface/msg/pca9685_servo.hpp>`
|
||||
|
||||
## Objectif
|
||||
Activer / désactiver un servo moteur.
|
||||
|
||||
## Interface
|
||||
```cpp
|
||||
uint8 pin
|
||||
int64 angle
|
||||
```
|
||||
|
||||
## Params
|
||||
|
||||
| Type | Name | Description |
|
||||
|-------|-------|-----------------------|
|
||||
| uint8 | pin | pin du solenoid |
|
||||
| int64 | angle | angle du servo moteur |
|
||||
|
||||
## Utilisé par
|
||||
- [](PCA9685-Controller-Node.md)
|
||||
- [](Arm-Controller-Node.md)
|
||||
- [](Game-Controller-Listener-Node.md)
|
||||
1
Writerside/topics/PCB-Alim-Interface-Node.md
Normal file
1
Writerside/topics/PCB-Alim-Interface-Node.md
Normal file
@@ -0,0 +1 @@
|
||||
# PCB Alim Interface
|
||||
13
Writerside/topics/PCB-Alim-Serial-Topic.md
Normal file
13
Writerside/topics/PCB-Alim-Serial-Topic.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# PCB Alim
|
||||
|
||||
Un usb listener est setup avec comme nom `pcb_alim`, il permet d'envoyer des données au PCB grace au topic [](Send-To-Serial-Topic.md) et de recevoir des données du PCB grace au topic [](Raw-Data-Topic.md).
|
||||
Les paramètres sont les suivants :
|
||||
- **name** : `odometry`
|
||||
- **baudrate** : `115200`
|
||||
- **serial_port** : `/dev/serial0`
|
||||
|
||||
### Publisher
|
||||
- [](Multiple-Serial-Listener-Node.md)
|
||||
|
||||
### Subscriber
|
||||
- [](PCB-Alim-Interface-Node.md)
|
||||
17
Writerside/topics/ROS2-Installation.md
Normal file
17
Writerside/topics/ROS2-Installation.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# Installation
|
||||
|
||||
Si vous êtes sur Windows, il est recommandé d'utiliser WSL (Windows Subsystem for Linux) pour installer ROS2. Si vous êtes sur Linux, vous pouvez suivre les instructions ci-dessous.
|
||||
> Il existe tout de même une version de [ROS2 pour Windows](https://docs.ros.org/en/foxy/Installation/Windows-Install-Binary.html), mais elle est moins stable et moins bien supportée que la version Linux.
|
||||
> De plus aucun test n'a été effectué sur cette version. À vos risques et périls.
|
||||
|
||||
## Installation sur WSL
|
||||
|
||||
### Installation ROS2 sur WSL
|
||||
Installation de ROS2 sur WSL (Windows Subsystem for Linux) pour Windows. Il est recommandé d'utiliser la version 22.04 d'Ubuntu, car elle est plus stable et compatible avec ROS2.
|
||||
Ensuite, suivez la documentation officielle de [ROS2 Jazzy](https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html)
|
||||
|
||||
Il faut savoir que le projet ne peut pas être lancé directement depuis WSL, Modelec utilise la librairie [WiringPi](https://github.com/WiringPi/WiringPi) pour utiliser les GPIO de la Raspberry Pi. Lorsque vous lancez le projet autre part que sur une Raspberry Pi, la lib detecteras qu'elle n'est pas sur une Raspberry Pi et ne fonctionnera pas. Il faut donc lancer le projet sur la Raspberry Pi.
|
||||
Tout de même, il est possible de faire tourner le projet sans les `Nodes` liés aux actionneurs et capteurs. (Vous pouvez lancer des Nodes indépendamment de ceux liés aux actionneurs et capteurs de plus WiringPi va seulement afficher des erreurs, mais ne vas pas "cassé" le projet).
|
||||
|
||||
### Developpement sur WSL
|
||||
Pour développer sur WSL, vous pouvez utiliser différent IDE, actuellement, nous utilisons VS-Code ainsi que CLion. Pour utiliser VS-Code, ouvrez simplement votre projet WSL, pour CLion rendez-vous [ici](ROS2-avec-JetBrain-pour-windows.md) pour savoir comment le configurer.
|
||||
3
Writerside/topics/ROS2-Interfaces.md
Normal file
3
Writerside/topics/ROS2-Interfaces.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Interfaces package
|
||||
|
||||
Start typing here...
|
||||
24
Writerside/topics/ROS2-Intro.md
Normal file
24
Writerside/topics/ROS2-Intro.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Intro
|
||||
|
||||
#### Intro by ChatGPT
|
||||
ROS 2 (Robot Operating System 2) est un framework open-source conçu pour le développement de logiciels pour robots. C'est une évolution de ROS 1, améliorée pour mieux répondre aux exigences des systèmes robotiques modernes, notamment en matière de fiabilité, de performances et de compatibilité avec les environnements embarqués et temps réel.
|
||||
|
||||
##### Caractéristiques principales de ROS 2 :
|
||||
- Architecture distribuée : Les différents composants d'un robot (capteurs, actionneurs, algorithmes, etc.) communiquent via un système de messages asynchrones.
|
||||
- Middleware DDS : ROS 2 repose sur DDS (Data Distribution Service), un standard permettant une communication robuste et adaptable aux réseaux variés.
|
||||
- Support multi-plateforme : Compatible avec Linux, Windows, macOS et même des systèmes embarqués.
|
||||
- Gestion améliorée du temps réel : Permet un meilleur contrôle des latences, essentiel pour les robots nécessitant des réactions précises.
|
||||
- Modularité et scalabilité : Facilite le développement de robots complexes en permettant d'ajouter ou de modifier des composants indépendamment.
|
||||
|
||||
##### Composants clés :
|
||||
- Nœuds : Petits programmes qui effectuent des tâches spécifiques.
|
||||
- Topics : Canaux de communication permettant aux nœuds d’échanger des messages.
|
||||
- Services : Communication synchrone entre nœuds (requête/réponse).
|
||||
- Actions : Permettent l’exécution de tâches longues avec des mises à jour d’état.
|
||||
- Paramètres : Variables configurables qui influencent le comportement des nœuds.
|
||||
|
||||
#### Exemples d'utilisation :
|
||||
- Contrôle d’un bras robotique
|
||||
- Navigation autonome d’un robot mobile
|
||||
- Fusion de données issues de plusieurs capteurs
|
||||
- Si tu veux commencer avec ROS 2, l’installation et la configuration initiale se font via Ubuntu (recommandé) et tu peux tester avec des packages comme turtlesim pour voir le fonctionnement des nœuds et topics en pratique.
|
||||
28
Writerside/topics/ROS2-Modelec.md
Normal file
28
Writerside/topics/ROS2-Modelec.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Modelec package
|
||||
|
||||
## Pourquoi ROS2 sur Marcel ?
|
||||
|
||||
### 2024
|
||||
En 2024, le robot [Serge](Serge.md) n'utilisait pas ROS2 ni aucun framework de robotique. Il était programmé en C++, mais il n'y avait pas de structure de code particulière. Le code était divisé en plusieurs fichiers, mais il n'y avait pas de séparation claire entre les différentes parties du code. Le code était difficile à lire et à comprendre, ce qui rendait la maintenance et l'ajout de nouvelles fonctionnalités difficiles.
|
||||
|
||||
|
||||
#### Avantages du vanilla c++
|
||||
- Facilité de compréhension : Le code est plus facile à comprendre pour les personnes qui ne connaissent pas ROS2.
|
||||
- Pas de dépendances : Le code n'a pas besoin de dépendances externes, ce qui le rend plus léger et plus facile à déployer.
|
||||
- Pas de surcoût : Le code n'a pas besoin de ressources supplémentaires pour fonctionner, ce qui le rend plus rapide et plus efficace.
|
||||
- Pas de complexité : Le code est plus simple et plus facile à comprendre, ce qui le rend plus facile à maintenir et à déboguer.
|
||||
|
||||
#### Inconvenients
|
||||
- Pas de modularité : Le code n'est pas modulaire, ce qui rend difficile l'ajout de nouvelles fonctionnalités.
|
||||
- Pas de réutilisabilité : Le code n'est pas réutilisable, ce qui rend difficile l'utilisation de bibliothèques externes.
|
||||
- Pas de standardisation : Le code n'est pas standardisé, ce qui rend difficile la compréhension du code par d'autres personnes.
|
||||
- Pas de documentation : Le code n'est pas documenté, ce qui rend difficile la compréhension du code par d'autres personnes.
|
||||
|
||||
### Conclusion
|
||||
En 2024, le robot Serge n'utilisait pas ROS2 ni aucun framework de robotique. Le code était écrit en C++ sans structure particulière, ce qui le rendait difficile à lire et à maintenir. Bien que cela ait des avantages en termes de simplicité et de légèreté, cela a également entraîné des inconvénients majeurs tels que le manque de modularité, de réutilisabilité et de documentation. En conséquence, il était difficile d'ajouter de nouvelles fonctionnalités ou de comprendre le code par d'autres personnes.
|
||||
C'est pourquoi en 2025 le club Modelec a décidé de passer à ROS2 après avoir étudié son potentiel et ses avantages par rapport à la programmation en C++ sans structure particulière. Le passage à ROS2 a permis de structurer le code, de le rendre plus modulaire et réutilisable, et de faciliter la compréhension et la maintenance du code. De plus, ROS2 offre de nombreuses bibliothèques et outils qui facilitent le développement de logiciels pour robots, ce qui a permis au club Modelec de se concentrer sur l'implémentation de nouvelles fonctionnalités plutôt que sur la gestion du code.
|
||||
|
||||
> À partir de maintenant, nous allons plonger à l'intérieur de l'infrastructure ROS2 et de son fonctionnement.
|
||||
> Il est donc indispensable d'avoir des bases en ROS2 pour comprendre la suite.
|
||||
> Si vous ne connaissez pas ROS2, il est fortement recommandé de lire la documentation officielle ou de suivre un tutoriel d'introduction avant de continuer.
|
||||
{style="warning"}
|
||||
14
Writerside/topics/ROS2-UI.md
Normal file
14
Writerside/topics/ROS2-UI.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# GUI packages
|
||||
|
||||
Modelec utilise Qt6 pour créer l'interface graphique de son robot.
|
||||
> ROS2 utilise nativement Qt5 pour l'interface graphique, mais nous avons choisi de passer à Qt6 pour des raisons de compatibilité et de fonctionnalités.
|
||||
|
||||
## Installation de Qt6
|
||||
Pour installer Qt6 sur votre Raspberry Pi, suivez les instructions suivantes :
|
||||
- exécutez la commande suivante :
|
||||
```bash
|
||||
sudo apt install qt6-base-dev qt6-base-dev-tools
|
||||
```
|
||||
|
||||
## Programmation de l'interface graphique
|
||||
L'interface graphique est developpée dans le package ros <modelec_gui> et tourne dans une Node (ce qui lui permet d'échanger avec les autres Nodes du projet).
|
||||
28
Writerside/topics/ROS2-avec-JetBrain-pour-windows.md
Normal file
28
Writerside/topics/ROS2-avec-JetBrain-pour-windows.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# ROS2 avec JetBrain (pour windows)
|
||||
Pour les personnes utilisant un IDE JetBrain sur Windows, mais avec une installation ROS2 sur WLS, voici comment load le projet sur JetBrain.
|
||||
>Test Effectué avec CLion
|
||||
|
||||
## Requis
|
||||
- Avoir installé WSL avec une distribution Linux (Ubuntu 20.04 ou 22.04 recommandés)
|
||||
- Avoir installé un editeur JetBrain (CLion préféré, car nous développons principalement en C++)
|
||||
- Avoir installé ROS2 sur WSL (voir [ici](ROS2-Installation.md#installation-sur-wsl))
|
||||
|
||||
## 1. Ouvrir le projet
|
||||
- Ouvrir CLion
|
||||
- Si vous êtes dans un projet aller dans File > Close Project
|
||||
- Ensuite aller dans Remote Development > WSL
|
||||
- Connecter vous ensuite a votre distribution WSL via le menu
|
||||
- Puis ouvrir le dossier de votre projet ROS2 (cela peut être un peu long, car JetBrain va installer un serveur sur WSL)
|
||||
- Et pouf, vous avez votre projet ROS2 sur JetBrain
|
||||
|
||||
## 2. Configurer le projet
|
||||
- Dans le terminal de votre WSL, execute les commandes suivante :
|
||||
```bash
|
||||
source /opt/ros/jazzy/setup.bash
|
||||
colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=1
|
||||
```
|
||||
- Ensuite cela devrait avoir crée un dossier `build` dans votre projet
|
||||
- Dans ce dossier build devrait être présent un fichier `compile_commands.json`
|
||||
- Faite clique droit sur ce fichier et selectionner `Load Compilation Database Project`
|
||||
- Si tout c'est bien passé, votre projet devrais maintenant être configuré avec ROS2 sur JetBrain !
|
||||
- Pour tester, vous pouvez essayer de faire un `Ctrl + Click` sur une fonction de ROS2 et cela devrais vous amener a la déclaration de la fonction.
|
||||
3
Writerside/topics/ROS2.md
Normal file
3
Writerside/topics/ROS2.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# ROS2
|
||||
|
||||
Documentation pour utiliser ROS2 en adéquation avec le robot Marcel 2k25.
|
||||
7
Writerside/topics/Raw-Data-Topic.md
Normal file
7
Writerside/topics/Raw-Data-Topic.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Raw Data
|
||||
|
||||
## Nom du topic : **raw_data/<name>**
|
||||
Interface : std_msgs/msg/String
|
||||
|
||||
## Objectif
|
||||
Transmettre des données brutes depuis le port vers le rasp.
|
||||
7
Writerside/topics/Send-To-Serial-Topic.md
Normal file
7
Writerside/topics/Send-To-Serial-Topic.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Send To Serial
|
||||
|
||||
## Nom du topic : **send_to_serial/<name>**
|
||||
Interface : std_msgs/msg/String
|
||||
|
||||
## Objectif
|
||||
Transmettre des données vers le port série.
|
||||
5
Writerside/topics/Serial-Listener-Topic.md
Normal file
5
Writerside/topics/Serial-Listener-Topic.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# Serial Listener
|
||||
|
||||
Pour chaque [](Serial-Listener-Topic.md), deux topics sont créés :
|
||||
- [](Raw-Data-Topic.md) : recupère les données brutes envoyées par le port série et les transmet au rasp.
|
||||
- [](Send-To-Serial-Topic.md) : envoie les données brutes au port série.
|
||||
1
Writerside/topics/Service.md
Normal file
1
Writerside/topics/Service.md
Normal file
@@ -0,0 +1 @@
|
||||
# Service
|
||||
1
Writerside/topics/Services.md
Normal file
1
Writerside/topics/Services.md
Normal file
@@ -0,0 +1 @@
|
||||
# Services
|
||||
14
Writerside/topics/Servo-Control-Topic.md
Normal file
14
Writerside/topics/Servo-Control-Topic.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# Servo Control
|
||||
|
||||
## Nom du topic : **servo_control**
|
||||
[Interface](PCA9685Servo-Message-Interface.md)
|
||||
|
||||
## Objectif
|
||||
Mettre à jour la position angulaire d'un servo moteur.
|
||||
|
||||
### Publisher
|
||||
- [](Game-Controller-Listener-Node.md)
|
||||
- [](Arm-Controller-Node.md)
|
||||
|
||||
### Subscriber
|
||||
- [](PCA9685-Controller-Node.md)
|
||||
2
Writerside/topics/Servo-Topic.md
Normal file
2
Writerside/topics/Servo-Topic.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# Servo
|
||||
Topic liée au contrôle des servos moteurs.
|
||||
36
Writerside/topics/ServoMode-Message-Interface.md
Normal file
36
Writerside/topics/ServoMode-Message-Interface.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# ServoMode
|
||||
`<modelec_interface/msg/servo_mode.hpp>`
|
||||
|
||||
## Objectif
|
||||
Activer / désactiver un servo moteur (dans le contexte de Serge).
|
||||
|
||||
## Interface
|
||||
```cpp
|
||||
uint8 PINCE_CLOSED=0
|
||||
uint8 PINCE_MIDDLE=1
|
||||
uint8 PINCE_OPEN=2
|
||||
uint8 PINCE_FULLY_OPEN=3
|
||||
uint8 ARM_BOTTOM=4
|
||||
uint8 ARM_MIDDLE=5
|
||||
uint8 ARM_TOP=6
|
||||
|
||||
uint8 pin
|
||||
uint8 mode
|
||||
bool is_arm
|
||||
```
|
||||
|
||||
> DEPECATED: Ce message était utilisé pour [Serge](Serge.md)
|
||||
> Il va donc être supprimé dans une prochaine version.
|
||||
{style="warning"}
|
||||
|
||||
## Params
|
||||
|
||||
| Type | Name | Description |
|
||||
|-------|--------|----------------------|
|
||||
| uint8 | pin | pin du solenoid |
|
||||
| uint8 | mode | mode du servo moteur |
|
||||
| bool | is_arm | si c'est un bras |
|
||||
|
||||
## Utilisé par
|
||||
- [](Arm-Controller-Node.md)
|
||||
- [](Game-Controller-Listener-Node.md)
|
||||
1
Writerside/topics/Solenoid-Controller-Node.md
Normal file
1
Writerside/topics/Solenoid-Controller-Node.md
Normal file
@@ -0,0 +1 @@
|
||||
# Solenoid Controller
|
||||
13
Writerside/topics/Solenoid-Topic.md
Normal file
13
Writerside/topics/Solenoid-Topic.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Solénoïde
|
||||
|
||||
## Nom du topic : **solenoid**
|
||||
[Interface](Solenoide-Message-Interface.md)
|
||||
|
||||
## Objectif
|
||||
Contrôler l'état d'un solénoïde.
|
||||
|
||||
### Publisher
|
||||
- []()
|
||||
|
||||
### Subscriber
|
||||
- [](Solenoid-Controller-Node.md)
|
||||
21
Writerside/topics/Solenoide-Message-Interface.md
Normal file
21
Writerside/topics/Solenoide-Message-Interface.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Solénoïde
|
||||
`<modelec_interface/msg/solenoid.hpp>`
|
||||
|
||||
## Objectif
|
||||
Activer / désactiver un solénoïde.
|
||||
|
||||
## Interface
|
||||
```cpp
|
||||
uint8 pin
|
||||
bool state
|
||||
```
|
||||
|
||||
## Params
|
||||
|
||||
| Type | Name | Description |
|
||||
|-------|-------|------------------|
|
||||
| uint8 | pin | pin du solenoid |
|
||||
| bool | state | état du solenoid |
|
||||
|
||||
## Utilisé par
|
||||
- [](Solenoid-Controller-Node.md)
|
||||
1
Writerside/topics/Tirette-Controller-Node.md
Normal file
1
Writerside/topics/Tirette-Controller-Node.md
Normal file
@@ -0,0 +1 @@
|
||||
# Tirette Controller
|
||||
22
Writerside/topics/Tirette-Service-Interface.md
Normal file
22
Writerside/topics/Tirette-Service-Interface.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# Tirette
|
||||
`<modelec_interface/srv/tirette.hpp>`
|
||||
|
||||
## Objectif
|
||||
Connaitre l'état de la tirette.
|
||||
|
||||
## Interface
|
||||
```cpp
|
||||
---
|
||||
bool status
|
||||
```
|
||||
|
||||
## Params
|
||||
|
||||
## Retour
|
||||
|
||||
| Type | Name | Description |
|
||||
|------|--------|----------------------|
|
||||
| bool | status | statue de la tirette |
|
||||
|
||||
## Utilisé par
|
||||
- [Tirette](Tirette-Controller-Node.md)
|
||||
13
Writerside/topics/Tirette-Service.md
Normal file
13
Writerside/topics/Tirette-Service.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Tirette
|
||||
|
||||
## Nom du service : **tirette**
|
||||
[Interface](Tirette-Service-Interface.md)
|
||||
|
||||
## Objectif
|
||||
Vérifier l'état de la tirette.
|
||||
|
||||
### Service
|
||||
- [](Tirette-Controller-Node.md)
|
||||
|
||||
### Client
|
||||
-
|
||||
11
Writerside/topics/Tirette-Topic.md
Normal file
11
Writerside/topics/Tirette-Topic.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Tirette
|
||||
|
||||
## nom du topic : **tirette_state**
|
||||
|
||||
## Objectif
|
||||
Vérifier l'état de la tirette en permanence.
|
||||
|
||||
### Publishers
|
||||
- [](Tirette-Controller-Node.md)
|
||||
|
||||
### Subscribers
|
||||
2
Writerside/topics/Topics.md
Normal file
2
Writerside/topics/Topics.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# Topics
|
||||
pour voir en temps réel lors de l'execution les topics créer executé cette commande : `ros2 topic list`
|
||||
26
Writerside/topics/Utils.md
Normal file
26
Writerside/topics/Utils.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Utils
|
||||
|
||||
## Objectif
|
||||
Fonction utilitaire pour le développement utile pour plusieurs Nodes.
|
||||
|
||||
### Variable
|
||||
PI -> 3.14159265358979323846
|
||||
|
||||
### Fonctions
|
||||
#### `std::vector<std::string> split(const std::string &s, char delim)`
|
||||
Découpe une chaîne de caractères en fonction d'un délimiteur.
|
||||
|
||||
#### `std::string join(const std::vector<std::string> &v, const std::string &delim)`
|
||||
Joint un vecteur de chaînes de caractères en une seule chaîne, séparée par un délimiteur.
|
||||
|
||||
#### `bool startsWith(const std::string &s, const std::string &prefix)`
|
||||
Vérifie si une chaîne commence par un certain préfixe.
|
||||
|
||||
#### `bool endsWith(const std::string &s, const std::string &suffix)`
|
||||
Vérifie si une chaîne se termine par un certain suffixe.
|
||||
|
||||
#### `bool contains(const std::string &s, const std::string &substring)`
|
||||
Vérifie si une chaîne contient une sous-chaîne.
|
||||
|
||||
#### `T mapValue(T v, T v_min, T v_max, T v_min_prime, T v_max_prime)`
|
||||
Mappe une valeur d'un intervalle à un autre.
|
||||
@@ -5,4 +5,5 @@
|
||||
<topics dir="topics" web-path="topics"/>
|
||||
<images dir="images" web-path="images"/>
|
||||
<instance src="gu.tree" web-path="/gu/" version="1.0"/>
|
||||
<instance src="Writerside_libraries.tree"/>
|
||||
</ihp>
|
||||
Reference in New Issue
Block a user