Home » mobile robot

Tag: mobile robot

MRPi1 Raspberry Pi robot – Speech synthesis

  • Speech synthesis
  • Autonomous robot
  • Python program

The python program :


from mrpi1_lib import *
import time

#main program

state = 1

try:
  # infinite loop
  while 1:

    if state == 2:
      play("Thank you bye")# speech synthetis
      state = 3
    # read sensors
    p3 = proxSensor(3) 
    p4 = proxSensor(4)

    forward(30)
    print "%d %d" %(p3, p4)

    if (p3 > 900 or p4 > 900):
     stop() # stop robot
     state = 2
     playWav("BeCarefull.wav") # play wav file
     
     
except:
  stop()
  exit()

 

 

 

Architecture logicielle du microcontrôleur

Voici, l’architecture logicielle du microcontrôleur STM32F407 du robot MRPi1 :

  • Un bloc de la gestion pour la communication série 8 bits vers la carte Raspberry Pi.
  • Un bloc scheduler pour la gestion des différentes taches de manière synchrone et en temps réel,
  • Un bloc d’acquisition et de traitement des capteurs du robot,
  • Un bloc de contrôle du niveau de la tension de la batterie lipo,
  • Un bloc d’asservissement du robot en position/orientation avec deux régulateurs numérique de type PID,
  • Un bloc de commande des moteurs en signaux PWM,
  • Un bloc d’acquisition des encodeurs en quadrature avec deux timers configuré sur les front des signaux,
  • Un bloc du calcul de la position du robot sur les axes X et Y puis sur l’orientation du robot.

 

archi_micro

 

 

MRPi1 – Wake up alarm

Wake up alarm with MRPi1 robot. The robot stops the alarm automaticly when the robot detects the light.

Python program :

# import mrpi1 lib
from mrpi1_lib import *
import time

try:

  while 1:
    al1 = ambiantLight(1) # read ambiant light,sensor 1
    al2 = ambiantLight(2)
    al3 = ambiantLight(3)
    al4 = ambiantLight(4)
    al5 = ambiantLight(5)
    al6 = ambiantLight(6)
    print "Ambiant light = %d %d %d %d %d %d" %(al1, al2, al3, al4, al5, al6)

    if (al1 < 4000 and al2 < 4000): # light detects
     print "end alarm"
     writeCommand("SPD")# disable speaker
     exit()
    else:
      playWav("alarmClock.wav") # play alarm wav file
    time.sleep(0.2)

except:
  writeCommand("SPD") # disable speaker
  exit()

 

PID control

In this video MRPi1 robot is controled by two PID controller. The PID controller calculates an error values between motors encoders and desired value (orientation and distance).

  • Orientation control
  • Distance control

The speed profile :

  • Trapezoid profile with 3 parts : acceleration, constant speed and deceleration.

Encoders specification :

  • Magnetic encoder,
  • Resolution : 12 ticks/tr

Raspberry Pi robot – MRPi1 from macerobotics on Vimeo.