33
BH TEAM METTEZ UN PYTHON DANS VOTRE MOTEUR ROBOT !

BH Team - Mettez un python dans votre robot !

Embed Size (px)

DESCRIPTION

La BH Team participe depuis 7 ans à la Coupe de France de Robotique. Ce challenge consiste en la conception et la réalisation complète d'un robot autonome en énergie et en commande. Les robots ainsi réalisés s'affrontent dans des matchs d'une durée de 90 secondes, sans intervention de leurs concepteurs. La principale difficulté de cette compétition est que son règlement, diffusé 9 mois à l'avance seulement, implique systématiquement un changement presque total des contraintes du jeu. A un moment de notre parcours, nous avons eu le besoin de pouvoir décrire dans un langage de haut niveau notre stratégie. Notre expérience dans le développement logiciel nous a amené à choisir le langage Python. Trois ans après la première édition du framework "Brewery", voici une présentation de ses capacités et des avantages qu'il confère à l'équipe. Nous commencerons par une explication du contexte de la compétition, de l'évolution des différents modules développés par l'équipe au fur et à mesure des années, et enfin nous détaillerons les points remarquables du framework.

Citation preview

Page 1: BH Team - Mettez un python dans votre robot !

BH TEAMMETTEZ UN PYTHON DANS VOTRE

MOTEUR ROBOT !

Page 2: BH Team - Mettez un python dans votre robot !

YANNICK

yannick (at) yjost.comPythonista depuis 1.4BH Team depuis 20099 participations à la Coupe de France de Robotique

@yanjost

La Plage Digitale

Page 3: BH Team - Mettez un python dans votre robot !

ERIC

eric.alber (at) gmail.comPythonista depuis 2.4BH Team depuis 20107 participations à la Coupe de France de Robotique

@eric_alber

Page 4: BH Team - Mettez un python dans votre robot !

BH TEAM6 personnesStrasbourg, Belfort, LyonDepuis 2007Meilleur classement : vice-champions de France (2011)

OuééééééDernier classement : 19 / 146www.bhteam.org / @thebhteam

Page 5: BH Team - Mettez un python dans votre robot !

LA COUPE DE FRANCE DE ROBOTIQUE

Page 6: BH Team - Mettez un python dans votre robot !

DE QUOI EST FAIT UN ROBOT ?

Page 7: BH Team - Mettez un python dans votre 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"

Page 8: BH Team - Mettez un python dans votre robot !

BREWERY !Framework dédié à la robotiqueBasé sur asyncoreExiste depuis 2010 (Lua → Python)EvénementielEntrées multiplexées

Page 9: BH Team - Mettez un python dans votre robot !
Page 10: BH Team - Mettez un python dans votre robot !

ARCHITECTURE GÉNÉRALE

Page 11: BH Team - Mettez un python dans votre robot !

GESTION DES MACHINES À ÉTAT

Page 12: BH Team - Mettez un python dans votre robot !

GESTION DES MACHINES À ÉTAT

Page 13: BH Team - Mettez un python dans votre robot !

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

Page 14: BH Team - Mettez un python dans votre robot !

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

Page 15: BH Team - Mettez un python dans votre robot !

LE PROTOCOLE BH TEAMKISSPaquet TCP 256 octets1 octet : type255 octets : dataBasé sur struct

Ordres

Ouverture / fermeture actionneursParamétrageOrdres de déplacement

Page 16: BH Team - Mettez un python dans votre robot !

SÉRIALISATIONAPI déclarativeTypes de données

UIntFloatTableauxEnumBooléen

Page 17: BH Team - Mettez un python dans votre robot !

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

Page 18: BH Team - Mettez un python dans votre robot !

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)

Page 19: BH Team - Mettez un python dans votre robot !

CALCUL DE TRAJECTOIREUtilisation d'une "carte" du terrainMise à jour en fonction de l'état des capteursProblème de rapidité → réécriture en C

Page 20: BH Team - Mettez un python dans votre robot !

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

Page 21: BH Team - Mettez un python dans votre robot !

UTILISATION D'UNE CAMÉRAC++, OpenCVInvocation d'un subprocessTrès fiable

Page 22: BH Team - Mettez un python dans votre robot !

ONE MORETHING...

Page 23: BH Team - Mettez un python dans votre robot !
Page 24: BH Team - Mettez un python dans votre robot !

SIMULATION

Page 25: BH Team - Mettez un python dans votre robot !

PAQUETS ÉCHANGÉS

Page 26: BH Team - Mettez un python dans votre robot !

TRAJECTOIRE DEMANDÉE & RÉELLE

Page 27: BH Team - Mettez un python dans votre robot !

VITESSE DÉPLACEMENT

Page 28: BH Team - Mettez un python dans votre robot !

VITESSE ROTATION

Page 29: BH Team - Mettez un python dans votre robot !

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

Page 30: BH Team - Mettez un python dans votre robot !

POUR EN SAVOIR PLUSThe source code : Twitter : Facebook : Site :

http://bitbucket.org/bhteam@thebhteam

TheBhTeamhttp://www.bhteam.org

Page 31: BH Team - Mettez un python dans votre robot !

MERCI AUX SPONSORS !

{{ yourcompany.logo }}

Page 32: BH Team - Mettez un python dans votre robot !

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 !

Page 33: BH Team - Mettez un python dans votre robot !

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/