idMotor : integer (0 ou 1)
direction : integer (0 pour anti-horraire et 1 pour horraire)
speed : float (en mm/s)
Bras/Storage
ID commande
1st param
Opt params
Description
0
stop()
1
ping
2
idServo
angle
setAngle(idServo, angle)
3
idServo
getAngle(idServo)
4
idServo
angle
getAngleACK(idServo, angle)
5
idServo
speed
setSpeed(idServo, speed)
6
idServo
getSpeed(idServo)
7
idServo
speed
getSpeedACK(idServo, speed)
8
idServo
duration
setSpinDuration(idServo, duration)
9
idServo
mode
changeMode(idServo, mode)
10
idServo
mode
getMode(idServo, Mode)
11
idServo
torque
setTorque(idServo, torque)
12
idServo
getTorque(idServo)
13
idServo
reboot(idServo)
14
idServo
clearError(idServo)
15
idServo
getError(idServo)
16
idServo
getStatusDetail(idServo)
17
grab()
18
release()
19
moveToHomePosition()
20
moveToReadyPosition()
21
moveFindObjetLow()
22
moveFindObjetHigh()
23
putInStock()
24
getFromStock()
25
movePlaceObject()
26
nextRing()
27
previousRing()
idServo : integer (0 à 253)
angle : float (de 159.8 deg à -159.8 deg)
speed : integer (de 1023 à -1023, 0 pour arrêter) - actuellement on sait pas comment convertir en deg/s
duration : integer (en ms)
mode : integer (0 pour Position Control, 1 pour Speed Control)
torque : integer (0 pour TorqueOFF, 1 pour TorqueON, 2 pour TorqueBREAK)
Capteurs
ID commande
1st param
Opt params
Description
0
stop()
1
ping()
2
idImu
get_accel(idImu)
3
idImu
get_ang_vel(idImu)
4
idTof
get_distance(idTof)
Message Tirette (carte capteur)
ID commande
1st param
Opt params
Description
5
on
message d'activation de la tirette
Urgence
ID commande
1st param
Opt params
Description
0
stop()
Raspi
En fonction des interfaces de chacun => peut interpréter les messages correctement.
Notes
Header
11 bits
Idée 1:
3 pour ID module (Qui?) -> max 7 modules (0 pour urgence)
4 pour action -> max 16 actions
4 pour metadata -> max 16 metatada sur actions
=> On a pas d'info sur qui nous a envoyé l'info, la priorité est couplée au module, pas cool
Idée 2:
Suivre ce qu'à fait Aude -> pas trop mal
3 bits de priorité: 0 à 7 (default = 1)
4 bits de l'id destinataire: 1 à 15
4 bits de l'id origine: 1 à 15
ids:
cas particulier: tous les bits à 0: arret URGENCE
raspi: 1
bras & stockage: 2
base roulante 1 & 2 : 3
capteurs (Imu, ultrasons): 4
Data
8 octets = 64 bits
Modules
0 URGENCE
1 Raspi
2 Bras + stockage (1STM)
3 Base roulante (2STMs)
4 Multi-use (1STM)
Urgence
Actions
stop
start
Base roulantes
Actions
setSpeed(idMot)
setMotorCW(idMot, true/false)
getPosition(idMot)
Message
1 octet de commande
1 octet d'id
6 octets de params
La structure générale semble correct pour tout le monde, si modifications nécessaires il y a, alors on peut facilement les changer car c'est assez modulaire pour le contenu de message.
Solution générale
(3bits)
(4bits)
(4bits)
(1 Byte)
(1 Byte)
(6 Bytes)
Base roulante
Commande
idMotor : integer (0 ou 1) direction : integer (0 pour anti-horraire et 1 pour horraire) speed : float (en mm/s)
Bras/Storage
idServo : integer (0 à 253) angle : float (de 159.8 deg à -159.8 deg) speed : integer (de 1023 à -1023, 0 pour arrêter) - actuellement on sait pas comment convertir en deg/s duration : integer (en ms) mode : integer (0 pour Position Control, 1 pour Speed Control) torque : integer (0 pour TorqueOFF, 1 pour TorqueON, 2 pour TorqueBREAK)
Capteurs
Message Tirette (carte capteur)
Urgence
Raspi
En fonction des interfaces de chacun => peut interpréter les messages correctement.
Notes
Header
11 bits
Idée 1:
Idée 2:
Suivre ce qu'à fait Aude -> pas trop mal
ids: cas particulier: tous les bits à 0: arret URGENCE raspi: 1 bras & stockage: 2 base roulante 1 & 2 : 3 capteurs (Imu, ultrasons): 4
Data
8 octets = 64 bits
Modules
Urgence
Actions
Base roulantes
Actions
Message
1 octet de commande 1 octet d'id 6 octets de params
Bras + stockage
Message