!! Demenagement du site !! => http://smartrobotics.org/blog

A la suite de la coupe de France de robotique 2012, j’ai décidé de faire peau neuve au site internet et de changer d’adresse.

.

.

.

Voici donc la nouvelle adresse :  http://smartrobotics.org/blog

.

.

.

.

Arrivée des cartes STM32F4 !

Aprés avoir utilisé des microcontroleurs Atmel pendant plusieurs années, j’ai décidé de passer aux STM32F4. (convaincu par les bons conseils de l’APBTeam ! )

J’ai donc commandé 2 cartes d’évaluation (au cas ou) pour effectuer des tests.

Voici les caracteristiques principales qui m’interessent :

– Core: ARM 32-bit Cortex™-M4 CPU with FPU, Adaptive real-time accelerator (ART Accelerator™) allowing 0-wait state execution from Flash memory, frequency up to 168 MHz, memory protection unit, 210 DMIPS/1.25 DMIPS/MHz (Dhrystone 2.1), and DSP instructions
– Up to 17 timers: up to twelve 16-bit and two 32-bit timers up to 168 MHz, each with up to 4 IC/OC/PWM or pulse counter and quadrature (incremental) encoder input
– Up to 15 communication interfaces
– USB 2.0 full-speed device/host/OTG controller with on-chip PHY

STM32F4 portée par L'Indomptable

STM32F4 portée par L’Indomptable

Le but de cette carte va donc etre de faire l’asservissement du robot (grâce aux compteurs interne, alors que c’était fait en software sur l’Atmel) ainsi que l’utilisation des I/O pour s’interfacer facilement avec des relais/capteurs. Etant donné son grand nombre d’entrée pour codeur en quadrature, je pourrais meme asservir d’autres moteurs (pas de propulsion) grâce à cette carte.

Les étapes à effectuer sont :
Faire marcher un UART / FAIT
Faire fonctionner 2 entrée de codeur en quadrature / FAIT
Faire fonctionner une interruption de timer / FAIT
– Utiliser les interruptions de l’UART
– Faire fonctionner une interruption externe / TODO
– Faire fonctionner l’USB en mode port série / TODO
– Implémenter la librairie de communication avec ROS / TODO
– Implémenter l’asservissement / TODO

Pour l’instant, la carte commence à être prise en main et à montrer ses possibilités. Je pense que c’était un bon choix et remercie ceux qui m’en ont parlé !

A bientot pour peut-etre une vidéo du robot asservit par le STM32 !

Driver ROS pour centrale inertielle CH6dm.

Il y a un moment, j’avais acheté une centrale inertielle pour mon hexapod ( https://smartrobotics.wordpress.com/2010/08/22/test-of-an-imu-on-the-hexapod-roll-and-pitch-adaptation/ ).

Utilisant maintenant ROS, je me suis dit qu’il était temps de faire un petit driver au cas ou je la réutilise pour d’autres projets futurs.

Les sources sont disponible ici : https://github.com/JBot/smart-ros-pkg

Et une vidéo ici :

L’Indomptable : Simulation des bras.

Voici la simulation des 2 bras du robot sur le terrain 2012.
Ce sont des premiers tests pour voir si les bras peuvent bien aller dans les endroits souhaités.

Tout le calcul est fait par le soft qui sera dans le robot, les messages finaux sont juste envoyés au simulateur au lieu d’etre envoyés aux moteurs.

La vidéo :

Positionnement de l’Indomptable : SLAM sans odométrie

N’ayant pas encore installé l’odométrie sur L’Indomptable, j’ai commencé a faire des tests avec son laser pour tester le positionnement. Le robot utilise un algorithme de SLAM (Simultaneous Localization And Mapping) pour se positionner.
Ca fonctionne plutot pas mal pour des gros trajets, ne necessitant pas une précision au mm prés. Pour la coupe, c’est pas assez précis par rapport a de la bonne odométrie.

Voici un petit test du robot se baladant dans mon appartement :

Tutorial : HC-SR04

Bonjour

Quitte à utiliser un capteur et faire des tests pour voir comment l’utiliser, autant publier ces tests afin qu’ils puissent servir à d’autres.

Nous allons donc voir comment brancher, utiliser ce capteur, mais avant tout, nous devons savoir que je HC-SR04 est un capteur ultrason facilement utilisable avec les cartes Arduino.

En fait pour çetre franc, c’est la copie Tawanaise du SRF04 de Devantech. Il est donné par son constructeur pour travailler entre 3 Cm et 3m.

Mais (en tout cas la copie que je test) n’est reelement precis que de 3 Cm à 2 m.

Son cone est assez large ce qui fait qu’il est facilement perturbé par des objets ou des murs qui ne sont normalement pas dans son champs de travail. Il est donc préférable de l’utiliser pour des applications de détections assez proches.

Vous trouverez ICI un comparatif des différents Sonars Devantech

Coté agréable de ce clone, il fonctionne tres bien avec la biblioteque du Sonar SRF04. Il est donc très simple à mettre en ouvre.

Le câblage

http://imageshack.us/photo/my-images/254/shema2l.jpg

Pour ce montage, j’utilise une Arduino Nano pour le rendre portable. Mais in est bien sur tres simple de transposer ce Shéma pour une Ono ou un Mega.

Seule difference notoire, le Bus I2C

Analogique A4 SDA et A5 SCL sont les Pins à utiliser pour la Nano et la Uno

Les Pins pour la Mega sont  20 SDA et 21 SCL

Pour rendre cet exemple portable je fais l’affichage sur un écran LCD I2C Mais vous pouvez bien sur utiliser l’affichage sur le serial monitor de votre PC ou un autre modèle d’afficheur. Vous devrez bien sur adapter ce code en fonction de votre choix.

Les bibliothèques utilisées sur cet exemples sont :

Wire.h Pour l’I2C

CLCD.h pour le LCD I2C (Cette Lib a été ecrite par Julien (Luj) de Pobot)  Voir l’article qu’il a fait a ce sujet

Ultrasonic.h pour le capteur

Le code

#include "Ultrasonic.h"
#include <Wire.h>
#include "CLCD.h"
RTC_Millis RTC;
CLCD lcd(0x00,16,2);
int pingPin = 13;
int inPin = 12;

void setup() {
lcd.clear();             // Effacer le LCD
lcd.backlight();             // Allumer le backlight du LCD
Serial.begin(57600);
Serial.println("testing...");
}

void loop() {
long duration, inches, cm;
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);
pinMode(inPin, INPUT);
duration = pulseIn(inPin, HIGH);
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
lcd.setCursor(0,0);
lcd.print("Inch: ");
lcd.print(inches);
lcd.print("            ");
lcd.setCursor(0,0);
lcd.setCursor(1,0);
lcd.print("Cm: ");
lcd.print(cm);
lcd.print("            ");
delay(100);
}
long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}

Quelques photos du montage
https://i2.wp.com/img843.imageshack.us/img843/6168/photo221111161338.jpg

http://img408.imageshack.us/img408/2617/photo221111161344.th.jpg

http://img638.imageshack.us/img638/9035/photo221111161355.th.jpg

http://img12.imageshack.us/img12/8092/photo221111161404.th.jpg

http://img5.imageshack.us/img5/8228/photo221111161413.th.jpg

http://img411.imageshack.us/img411/5893/photo221111161518.th.jpg

Voila

J’espère que ça vous a intéressé.

A bientôt pour un autre Tuto 😉

Yves


Robot aspirateur téléguidé par joystick.

Ayant démonté mon robot aspirateur (XV11) pour lui prendre son capteur laser, il était devenu incapable de fonctionner en autonome. Du coup, plutôt que jeter (ou laisser moisir dans un coin) ce beau robot aspirateur, j’ai décidé de bidouiller un peu pour pouvoir le téléguider à l’aide d’un joystick.
J’ai donc mis mon PC portable 10pouces sur le robot, connecté en USB, et j’ai connecté le joystick au PC.
Ensuite grâce à ROS, j’ai écrit quelques lignes de code pour pouvoir piloter le robot.

La mini vidéo de démonstration :

Je vais enfin pouvoir faire le ménage chez moi ! Ou pas 😉