Après Activator, voici Manipulator.
Il permet de gérer un main complète : les 6 servos (pinky, ring, major, index, thrumb et wrist),
les 5 capteurs aux bouts des doigts, et un capteur de distance. Le capteur de distance permet au robot de prendre un objet uniquement lorsque celui ci se trouve dans la zone de la main. La prise en main devient automatique mais uniquement si le capteur est actif.
Pour cela je demande au robot de prendre un objet, il lève le bras et attend l’objet. Dés qu’il le détecte, alors il ferme la main.
Si après 10 secondes il n’a rien détecté, alors il baisse le bras et le capteur se désactive.
Le cœur est un arduino nano avec la dernière version de MrlComm et, bien sur, géré par MyRobotLab. Le port de communication est l’USB.
Avec un nano, les 6 servos ne posent aucun problème. Pour les capteurs, on utilise les entrées analogiques. MrlComm gère sur un nano, A0 à A5.
Problème, A4 et A5 sont utilisés pour la com I2C. Pas de chance… Alors, il reste A6 et A7 qui ne sont pas encore gérés. Grog de l’équipe MRL est au courant du problème, on va donc trouver une solution. En attendant, j’ai dû faire une petite modif dans MrlComm.ino.
J’ai ajouté ce petit bout de code:
`// Test for analogRead with A6 and A7
unsigned long cm = millis();
unsigned int val1;
unsigned int val2;
if (cm – pm >= 1000)
{
pm = cm;
val1 = analogRead(6);
val2 = analogRead(7);
sndBuff[0] = 41;
sndBuff[1] = (val1 >> 8) & 0x00FF;
sndBuff[2] = val1 & 0x00FF;
sndBuff[3] = (val2 >> 8) & 0x00FF;
sndBuff[4] = val2 & 0x00FF;
mrlComm.sendCustomMsg(sndBuff, 5);
}`
Ainsi, toute les secondes, je reçois dans MRL, la valeur des 2 entrées manquantes.
Toutes la gestion est faite en python.
Pour la réalisation, voici mes photos:
Attachments:
You must be
logged in to view attached files.