BH Team - Mettez un python dans votre robot !
-
Upload
yannick-jost -
Category
Technology
-
view
320 -
download
1
description
Transcript of BH Team - Mettez un python dans votre robot !
BH TEAMMETTEZ UN PYTHON DANS VOTRE
MOTEUR ROBOT !
YANNICK
yannick (at) yjost.comPythonista depuis 1.4BH Team depuis 20099 participations à la Coupe de France de Robotique
@yanjost
La Plage Digitale
ERIC
eric.alber (at) gmail.comPythonista depuis 2.4BH Team depuis 20107 participations à la Coupe de France de Robotique
@eric_alber
BH TEAM6 personnesStrasbourg, Belfort, LyonDepuis 2007Meilleur classement : vice-champions de France (2011)
OuééééééDernier classement : 19 / 146www.bhteam.org / @thebhteam
LA COUPE DE FRANCE DE ROBOTIQUE
DE QUOI EST FAIT UN ROBOT ?
COMMENT CODER LA STRATÉGIE POURLE ROBOT ?
Multiples entrées-sorties (USB / Ethernet)Communication asynchrone entre les composantsTolérance aux erreurs
Pas besoin de hautes performances
Langage de haut niveau
Rapidité de modificationUtiliser des paradigmes modernes
StacktraceBref "batteries included"
BREWERY !Framework dédié à la robotiqueBasé sur asyncoreExiste depuis 2010 (Lua → Python)EvénementielEntrées multiplexées
ARCHITECTURE GÉNÉRALE
GESTION DES MACHINES À ÉTAT
GESTION DES MACHINES À ÉTAT
SHOW ME THE CODE !class Main(State): def on_enter(self): yield MoveToGlass(...) # Switch to state MoveToGlass yield TakeGlass(...) # Switch to state TakeGlass
class MovetoGlass(State): def on_enter(self): yield MoveLine(position_1) # Switch to state MoveLine, # move to position 1 yield MoveLine(position_2) # Switch to state MoveLine, # move to position 2 yield None # Pop back to state Main
class TakeGlass(State): def on_enter(self): yield CloseGripper(...) # Switch to state CloseGripper yield None # Pop back to state Main
STATE MACHINE PARALLÈLEclass DoParallel(State):
def on_enter(self): lb = StateMachine("barman", side = SIDE_LEFT) # Start parallel FSM rb = StateMachine("barman", side = SIDE_RIGHT) # for each side
yield MoveLine(1.0, 0.0) # Move to start position
yield None # Pop state
LE PROTOCOLE BH TEAMKISSPaquet TCP 256 octets1 octet : type255 octets : dataBasé sur struct
Ordres
Ouverture / fermeture actionneursParamétrageOrdres de déplacement
SÉRIALISATIONAPI déclarativeTypes de données
UIntFloatTableauxEnumBooléen
EXEMPLEclass TurretDetect(BasePacket): TYPE = 32 DEFINITION = ( ('distance', UInt8 (0, "Detection distance") ), ('angle' , UInt8 (0, "Detection angle") ), ('robot' , UEnum8(OPPONENT_ROBOT, OPPONENT_ROBOT_MAIN) ), )
Introspection des paquetsVisualisation des logsGénération des paquets pour l'interface web
UTILISATIONMapping automatique de méthode basé sur le nom dupaquet
TurretDetect : on_turret_detect(packet)GotoFinished : on_goto_finished(packet)
class MyObject: def on_turret_detect(packet): print("Received packet, distance={}".format(packet.distance))
my_object = MyObject()p = TurretDetect()# This calls my_object.on_turret_detect(p)p.dispatch(my_object)
CALCUL DE TRAJECTOIREUtilisation d'une "carte" du terrainMise à jour en fonction de l'état des capteursProblème de rapidité → réécriture en C
PRISE DE DÉCISION : GOAL MANAGERHeuristique
Objectifs restants réalisés par le robot et son acolyteUtilisation du pathfinding :
Distance des objectifsPosition de l'adversaire
Pas d'ordre défini mais pondération des objectifs
UTILISATION D'UNE CAMÉRAC++, OpenCVInvocation d'un subprocessTrès fiable
ONE MORETHING...
SIMULATION
PAQUETS ÉCHANGÉS
TRAJECTOIRE DEMANDÉE & RÉELLE
VITESSE DÉPLACEMENT
VITESSE ROTATION
WHAT'S NEXT ?Unifier appels inter-module et les évènementsMoteur physique dans le simulateurAméliorer communication entre les robotsTraitement d'image plus complexeFaire un package réutilisable
POUR EN SAVOIR PLUSThe source code : Twitter : Facebook : Site :
http://bitbucket.org/bhteam@thebhteam
TheBhTeamhttp://www.bhteam.org
MERCI AUX SPONSORS !
{{ yourcompany.logo }}
CONCLUSIONSOUI : Python et robotique font bon ménageNON : Python ne peut pas tout faire
Gain de productivité / vitesse de dev
"Pas testé, pas validé !"
Contents de notre choix !
CRÉDIT PHOTO
Marc ObergfellWat Horse :
le reste : (c) BH Team
http://www.mirror.co.uk/news/world-news/python-found-in-car-engine-16-ft-1309075
http://t.qkme.me/3ttns0.jpghttp://www.ludumdare.com/compo/wp-content/uploads/2013/04/i-have-no-idea-what-im-doing-dog.jpghttp://madan.wordpress.com/2007/01/06/kurukshetra-robotics-at-anna-university/