Home » Archives for macerobotics

Author: macerobotics

Toulouse Robot Race 2019

Mace Robotics a participé à la Toulouse Robot Race 2019 dans la catégorie multipattes avec le robot quadrupède Borvo. Le robot Borvo à terminer à la 2éme place dans la catégorie multipattes.

Robot Borvo

Caractéristiques du robot quadrupède Borvo :

  • 8 servomoteurs JX PDI-6221MG 20KG
  • Microcontrôleur : teensys 3.5 (compatible avec Arduino)
  • 2x capteurs de distance VL53L0X à droite et gauche du robot. Pour le recalage en orientation du robot avec les bordures de la piste.
  • 1 capteur LIDAR TFmini-Plus pour la détection du portique de la fin de la course.
  • Batterie LiPo 2S
  • Mécanique : bois peuplier 3 mm (découpé au laser)
  • Bouton ON/OFF
  • Switch start
  • Bouton arrêt urgence 
  • Taille : 400 x 105 x 160 mm

Voici quelques robots rencontré à la Toulouse Robot Race :

  • Voiture autonome avec carte NVDIA Jetson GPU  (équipe TurboDroid )

La piste de course :

Les participants à la Toulouse Robot Race 2019 :

Toulouse 2019.jpg

Plus d’informations :

http://toulouse-robot-race.org/

https://fr.macerobotics.com/robot-borvo/

Robot MRPiZ + capteur de gestes

Une vidéo du robot MRPiZ avec le capteur de gestes 3D Flick:

 

Le programme en langage python:

#!/usr/bin/env python
import sys
from mrpiZ_lib import *
import time
import flicklib
from copy import copy
import subprocess


def message(value):
  print value

@flicklib.move()
def move(x, y, z):
  global xyz
  xyz = [x,y,z]

def main():
  time_PasDetection = 0
  global xyz
  xyz = [0,0,0]
  old_xyz = [0,0,0]
  deplacement_axeX = 0

  print "Exemple"

  while True:
    if old_xyz != xyz:
      deplacement_axeX = xyz[0]
      deplacement_axeY = xyz[1]

    print "X", deplacement_axeX
    print "Y", deplacement_axeY

    if(deplacement_axeX < 0.35):
      print "avancer"
      forward(25)
    if(deplacement_axeX > 0.75):
      print "reculer"
      back(25)
    if((deplacement_axeY > 0.75)and(deplacement_axeX > 0.35)and(deplacement_axeX < 0.75)):
      print "tourner droite"
      turnRight(25)
    if((deplacement_axeY < 0.5)and(deplacement_axeX > 0.35)and(deplacement_axeX < 0.75)):
      print "tourner gauche"
      turnLeft(25)
    time.sleep(0.5)
    #stop()
    else:
      print "pas de detection"
      time_PasDetection = time_PasDetection + 1
    if(time_PasDetection > 5):
      stop()
      time_PasDetection = 0
    old_xyz = copy(xyz)
    time.sleep(0.2)

if __name__ == "__main__":
  main()

Un servomoteur avec Processing

Simulation d’un servomoteur de modélisme avec Processing:

  • Simulation d’un servomoteur:
    • Touche ‘b’: augmenter l’angle du servomoteur
    • Touche ‘n’: diminuer l’angle

Le programme complet:

// simulation d'un servomoteur

int angleServomoteur=0;

void setup()
{
  // taille de la fenetre
  size(800, 400);// largeur, hauteur

  // couleur du fond
  background(255);
}

void draw()
{
float radian;
float pox, poy;

  clear();
  background(255);

  strokeWeight(4); // Thicker


  // conversion degre radian
  radian = (angleServomoteur * 3.14)/180;
  pox = int(cos(radian)*100);
  poy = int(sin(radian)*100);


  fill(204, 102, 0);// couleur du cercle (RGB)
  // dessine cercle pour représenter servomoteur
  ellipse(400, 100, 50, 50);

  // dessine ligne


  line(400,100,int(pox)+400,100-int(poy));

  text("Angle:", 12, 45, -30); 
  text(angleServomoteur, 50, 45, -30); 

  if (keyPressed)
  {
    if (key == 'b')
    {
      angleServomoteur++;

      print("Angle servomoteur = ");
      println(angleServomoteur);

   }
   else if (key == 'n')
   {
     angleServomoteur--;

     print("Angle servomoteur = ");
     println(angleServomoteur);
   }
  }

}