Aller au contenu


Photo
- - - - -

Rolling Robot (UGV)


7 réponses à ce sujet

#1 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 768 messages
  • Gender:Male

Posté 11 juillet 2022 - 11:30

Cliquez moi.

                                             DSC_3686-L.jpg

 

Voici mon dernier né. Il s'agit d'un robot roulant, ou UGV ( Unmanned Ground Vehicle ).

L'idée, c'était de faire un robot roulant de bonne taille, et très facile à faire, en moins d'une heure.

Cela a été rendu possible, grâce aux GeekServo verts à rotation continue que l'on peut voir sur l'image. 

Comme à mon habitude, un Arduino Nano est enfiché sur le NANO Shield de Keyestudio.

Ce Shield est très pratique car il possède un interrupteur. Le seul problème est le petit connecteur d'alimentation JST PH2, alors que les petites batteries sont souvent munis d'un connecteur JST 2P, basique. Mais j'ai trouvé un adaptateur.

 

Ce robot ne montera pas des escaliers et il n'est pas tout terrain. Sa vocation est de rouler sur une surface lisse, quoique ses grandes roues lui permettent de franchir un obstacle carré de 4cm, ce qui est déjà pas si mal.

Tout cela fait de ce robot une excellente base pour tout débutant désireux de se lancer dans la robotique. Pour commencer, on peut , par exemple, y ajouter un détecteur d'obstacle à ultrasons ou à infrarouge, ou une caméra Huskylens pour faire un suiveur de ligne, voir un GPS pour se repérer sur une surface.

 

Si j'avais une application à faire, ce serait un suiveur de mur, comme le projet de Dakota99. Mais ici, pas de problèmes mécaniques !  Il suffirait de monter un capteur à ultrasons (ou autre) sur un GeekServo 360°, gris, pour valider la faisabilité. Ne resterait que le développement du programme, qui, à mon avis, est le plus important dans ce type de projet.

 

Le code fait moins de 30 lignes, ceci grâce à la fonction Go() qui a . . . . 3 lignes. Je me suis un peu amusé. L'idée, c'était de faire une fonction de guidage universelle avec un seul paramètre. Ce paramètre est basé sur les cadrans du cercle trigonométrique.

Le premier cadran permet de paramétrer la courbure à gauche ou à droite en marche avant, à 45° on avance en ligne droite. Le troisième cadran fait la même chose en marche arrière. Le deuxième et le quatrième cadrans, pour des valeurs respectives de 135° et 315°, permettent de tourner sur place, à gauche ou à droite. Avec ces derniers cadrans, on pourrait également faire varier l'angle de rotation sur place. Cela peut être une alternative au premier et troisième quadran.

 

Ici, le code propose une séquence de démonstration pour ma future vidéo. Bientôt.

// UGV-RollingRobot - 10/07/2022
void(* resetFunc) (void) = 0;               // soft reset function
#include <Servo.h>
Servo RF,RB,LF,LB;          // right servo and left servo
int Bp=A0, Speed=50;
 
void setup() {
  delay(500);                     // for reset consideration
  Serial.begin(9600);
  pinMode(Bp,INPUT_PULLUP);       // start/stop/reset button attachment
  RF.attach(2,500,2500);RF.write(90);     // right front servo initialization
  RB.attach(3,500,2500);RB.write(90);     // right back  servo initialization
  LF.attach(4,500,2500);LF.write(90);     // left  front servo initialization
  LB.attach(5,500,2500);LB.write(90);     // left  back  servo initialization
  Serial.print("\n\t To start, click on the Start button"); while(digitalRead(Bp)); delay(400); Serial.print("\n\t Started");
}
 
void loop() {
  if (! digitalRead(Bp)) resetFunc();
  Go( 15); delay(5000);
  Go( 75); delay(5000);
  Go(135); delay(3000);
  Go(315); delay(3000);
  Go( 45); delay(3000);
  Go(225); delay(3000);
}
 
void Go(int a){
  // Value of a
  // Forward  : from  15 to  44 turn right,  45 straight forward,   from  75 to  46 turn left
  // Backward : from 195 to 224 turn left,  225 straight Backward,  from 255 to 226 turn right
  // Left spin spot : 135  ,  Right spin spot : 315
  float S=sin(a*PI/180), C=cos(a*PI/180);
  RF.write(90+(Speed*S));  RB.write(90+(Speed*S));
  LF.write(90-(Speed*C));  LB.write(90-(Speed*C));
}

 

L'adaptateur JST PH2 vers JST 2P.   https://fr.aliexpres...ayAdapt=glo2fra

JST-PH2-to-JST-2P.jpg

 

Le GeekServo vert à rotation continue.

GeekServo-ContinuousRotation-S.jpg

 

Le NANO Shield de Keyestudio.

NanoShieldKeyestudio-S.jpg



#2 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 768 messages
  • Gender:Male

Posté 13 juillet 2022 - 06:36

Et voici la vidéo !

 



#3 Forthman

Forthman

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 382 messages
  • Gender:Not Telling
  • Location:Montauban (82)

Posté 15 juillet 2022 - 08:29

les grandes roues c'est bien aussi pour rouler sur la moquette épaisse. :Koshechka_08:
quand j'étais gosse il y avait une moquette dans ma chambre, et c'était très frustrant de ne pas pouvoir y jouer avec les petites voitures :crazy:



#4 Thot

Thot

    Membre passionné

  • Membres
  • PipPipPip
  • 327 messages
  • Gender:Male
  • Location:Toulouse

Posté 18 juillet 2022 - 01:00

Joli projet, je ne connaissais pas ces moteurs adaptés aux LEGO ! C'est en effet idéal pour apprendre avec la possibilité de sortir une mécanique en LEGO assez vite et un contrôleur Arduino. Ils chauffent rapidement ou tu sens qu'ils sont assez robustes ces servos ?


"Il n'y a rien de plus étrange pour l'homme que son image" RUR, Karel Capek
Caliban Midi - Art - Terroir et Robotique


#5 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 768 messages
  • Gender:Male

Posté 18 juillet 2022 - 03:24

Ils chauffent rapidement ou tu sens qu'ils sont assez robustes ces servos ?

Sur ce roulant, dont la vocation est l'initiation, je les utilise avec le 5V du Shield.

Mais sur mon quadrupède je les utilise en 7.4V avec une petite modification du Shield. 12DOF-Q-3 Quadrupède à 12 degrés de liberté avec GeekServos - V3 - Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ... - Robot Maker (robot-maker.com)

Ils sont assez permissifs, ils ne crament pas facilement, mais en insistant, on y arrive quand même . . .

Ils sont en plusieurs versions, les verts pour la rotation continue, et les gris pour 360°. GeekServo - vrai 360° - compatible Lego - comment le programmer - Servomoteurs - Robot Maker (robot-maker.com)

Sur mon quadrupède, je les utilise en 180°.



#6 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 18 juillet 2022 - 04:15

Super !
Très interessant

#7 Thot

Thot

    Membre passionné

  • Membres
  • PipPipPip
  • 327 messages
  • Gender:Male
  • Location:Toulouse

Posté 11 août 2022 - 08:05

J'ai commandé et reçu 4 moteurs verts et 4 moteurs gris, c'est clairement des moteurs impressionnants, surtout pour le fait d'être standard servo. J'ai toujours eu du mal avec les moteurs LEGO officiels qui ont une forme chelou et l'impossibilité de mettre ses propres capteurs. L'imagination est partie un peu loin :-) merci pour le tuyau !

"Il n'y a rien de plus étrange pour l'homme que son image" RUR, Karel Capek
Caliban Midi - Art - Terroir et Robotique


#8 Thot

Thot

    Membre passionné

  • Membres
  • PipPipPip
  • 327 messages
  • Gender:Male
  • Location:Toulouse

Posté 11 août 2022 - 08:11

Et la possibilité de piloter son robot LEGO via une télécommande RC standard c'est aussi top.

"Il n'y a rien de plus étrange pour l'homme que son image" RUR, Karel Capek
Caliban Midi - Art - Terroir et Robotique




Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users