BH TEAM

METTEZ UN PYTHON DANS VOTRE
MOTEUR ROBOT !
YANNICK
@yanjost
yannick (at) yjost.com
Pythonista depuis 1.4
BH Team depuis 2009
9 participations à la Coupe de France de...
ERIC
@eric_alber
eric.alber (at) gmail.com
Pythonista depuis 2.4
BH Team depuis 2010
7 participations à la Coupe de France...
BH TEAM
6 personnes
Strasbourg, Belfort, Lyon
Depuis 2007
Meilleur classement : vice-champions de France (2011)
Ouéééééé
D...
LA COUPE DE FRANCE DE ROBOTIQUE
DE QUOI EST FAIT UN ROBOT ?
COMMENT CODER LA STRATÉGIE POUR
LE ROBOT ?
Multiples entrées-sorties (USB / Ethernet)
Communication asynchrone entre les c...
BREWERY !
Framework dédié à la robotique
Basé sur asyncore
Existe depuis 2010 (Lua → Python)
Evénementiel
Entrées multiple...
ARCHITECTURE GÉNÉRALE
GESTION DES MACHINES À ÉTAT
GESTION DES MACHINES À ÉTAT
SHOW ME THE CODE !
casMi(tt)
ls anSae:
dfo_ne(ef:
e netrsl)
yedMvTGas..
il oeols(.)
yedTkGas..
il aels(.)

#Sic t saeMvTGa...
STATE MACHINE PARALLÈLE
casDPrle(tt)
ls oaallSae:
dfo_ne(ef:
e netrsl)
l =Saeahn(bra" sd =SD_ET #Satprle FM
b
ttMcie"amn, ...
LE PROTOCOLE BH TEAM
KISS
Paquet TCP 256 octets
1 octet : type
255 octets : data
Basé sur s r c
tut
Ordres
Ouverture / fer...
SÉRIALISATION
API déclarative
Types de données
UInt
Float
Tableaux
Enum
Booléen
EXEMPLE
casTreDtc(aeakt:
ls urteetBsPce)
TP =3
YE
2
DFNTO =(
EIIIN
(dsac' Un8(,"eeto dsac" )
'itne, It 0 Dtcin itne) ,
(ag...
UTILISATION
Mapping automatique de méthode basé sur le nom du
paquet
TurretDetect : on_turret_detect(packet)
GotoFinished ...
CALCUL DE TRAJECTOIRE
Utilisation d'une "carte" du terrain
Mise à jour en fonction de l'état des capteurs
Problème de rapi...
PRISE DE DÉCISION : GOAL MANAGER
Heuristique
Objectifs restants réalisés par le robot et son acolyte
Utilisation du pathfi...
UTILISATION D'UNE CAMÉRA
C++, OpenCV
Invocation d'un subprocess
Très fiable
ONE MORE
THING...
SIMULATION
PAQUETS ÉCHANGÉS
TRAJECTOIRE DEMANDÉE & RÉELLE
VITESSE DÉPLACEMENT
VITESSE ROTATION
WHAT'S NEXT ?
Unifier appels inter-module et les évènements
Moteur physique dans le simulateur
Améliorer communication ent...
POUR EN SAVOIR PLUS
The source code : http://bitbucket.org/bhteam
Twitter : @thebhteam
Facebook : TheBhTeam
Site : http://...
MERCI AUX SPONSORS !

{ yucmaylg }
{ oropn.oo }
CONCLUSIONS
OUI : Python et robotique font bon ménage
NON : Python ne peut pas tout faire
Gain de productivité / vitesse d...
CRÉDIT PHOTO
http://www.mirror.co.uk/news/world-news/pythonfound-in-car-engine-16-ft-1309075
Marc Obergfell
Wat Horse : ht...
BH Team - Mettez un python dans votre robot !
BH Team - Mettez un python dans votre robot !
Prochain SlideShare
Chargement dans…5
×

BH Team - Mettez un python dans votre robot !

693 vues

Publié le

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.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
693
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5
Actions
Partages
0
Téléchargements
4
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

BH Team - Mettez un python dans votre robot !

  1. 1. BH TEAM METTEZ UN PYTHON DANS VOTRE MOTEUR ROBOT !
  2. 2. YANNICK @yanjost yannick (at) yjost.com Pythonista depuis 1.4 BH Team depuis 2009 9 participations à la Coupe de France de Robotique La Plage Digitale
  3. 3. ERIC @eric_alber eric.alber (at) gmail.com Pythonista depuis 2.4 BH Team depuis 2010 7 participations à la Coupe de France de Robotique
  4. 4. BH TEAM 6 personnes Strasbourg, Belfort, Lyon Depuis 2007 Meilleur classement : vice-champions de France (2011) Ouéééééé Dernier classement : 19 / 146 www.bhteam.org / @thebhteam
  5. 5. LA COUPE DE FRANCE DE ROBOTIQUE
  6. 6. DE QUOI EST FAIT UN ROBOT ?
  7. 7. COMMENT CODER LA STRATÉGIE POUR LE ROBOT ? Multiples entrées-sorties (USB / Ethernet) Communication asynchrone entre les composants Tolérance aux erreurs Pas besoin de hautes performances Langage de haut niveau Rapidité de modification Utiliser des paradigmes modernes Stacktrace Bref "batteries included"
  8. 8. BREWERY ! Framework dédié à la robotique Basé sur asyncore Existe depuis 2010 (Lua → Python) Evénementiel Entrées multiplexées
  9. 9. ARCHITECTURE GÉNÉRALE
  10. 10. GESTION DES MACHINES À ÉTAT
  11. 11. GESTION DES MACHINES À ÉTAT
  12. 12. SHOW ME THE CODE ! casMi(tt) ls anSae: dfo_ne(ef: e netrsl) yedMvTGas.. il oeols(.) yedTkGas.. il aels(.) #Sic t saeMvTGas wth o tt oeols #Sic t saeTkGas wth o tt aels casMvtGasSae: ls oeols(tt) dfo_ne(ef: e netrsl) yedMvLn(oiin1 #Sic t saeMvLn, il oeiepsto_) wth o tt oeie #mv t psto 1 oe o oiin yedMvLn(oiin2 #Sic t saeMvLn, il oeiepsto_) wth o tt oeie #mv t psto 2 oe o oiin yedNn il oe #Ppbc t saeMi o ak o tt an casTkGasSae: ls aels(tt) dfo_ne(ef: e netrsl) yedCoerpe(.) il lsGipr.. yedNn il oe #Sic t saeCoerpe wth o tt lsGipr #Ppbc t saeMi o ak o tt an
  13. 13. STATE MACHINE PARALLÈLE casDPrle(tt) ls oaallSae: dfo_ne(ef: e netrsl) l =Saeahn(bra" sd =SD_ET #Satprle FM b ttMcie"amn, ie IELF) tr aall S r =Saeahn(bra" sd =SD_IH)#frec sd b ttMcie"amn, ie IERGT o ah ie yedMvLn(.,00 #Mv t satpsto il oeie10 .) oe o tr oiin yedNn il oe #Ppsae o tt
  14. 14. LE PROTOCOLE BH TEAM KISS Paquet TCP 256 octets 1 octet : type 255 octets : data Basé sur s r c tut Ordres Ouverture / fermeture actionneurs Paramétrage Ordres de déplacement
  15. 15. SÉRIALISATION API déclarative Types de données UInt Float Tableaux Enum Booléen
  16. 16. EXEMPLE casTreDtc(aeakt: ls urteetBsPce) TP =3 YE 2 DFNTO =( EIIIN (dsac' Un8(,"eeto dsac" ) 'itne, It 0 Dtcin itne) , (age 'nl' ,Un8(,"eeto age)) It 0 Dtcin nl" , (rbt 'oo' ,Unm(POETRBT OPNN_OO_AN ) Eu8OPNN_OO, POETRBTMI) , ) Introspection des paquets Visualisation des logs Génération des paquets pour l'interface web
  17. 17. UTILISATION Mapping automatique de méthode basé sur le nom du paquet TurretDetect : on_turret_detect(packet) GotoFinished : on_goto_finished(packet) casMOjc: ls ybet dfo_urtdtc(akt: e ntre_eetpce) pit"eevdpce,dsac=}.omtpce.itne) rn(Rcie akt itne{"fra(aktdsac) m_bet=MOjc( yojc ybet) p=TreDtc( urteet) #Ti clsm_beto_urtdtc() hs al yojc.ntre_eetp pdsac(yojc) .ipthm_bet
  18. 18. CALCUL DE TRAJECTOIRE Utilisation d'une "carte" du terrain Mise à jour en fonction de l'état des capteurs Problème de rapidité → réécriture en C
  19. 19. PRISE DE DÉCISION : GOAL MANAGER Heuristique Objectifs restants réalisés par le robot et son acolyte Utilisation du pathfinding : Distance des objectifs Position de l'adversaire Pas d'ordre défini mais pondération des objectifs
  20. 20. UTILISATION D'UNE CAMÉRA C++, OpenCV Invocation d'un subprocess Très fiable
  21. 21. ONE MORE THING...
  22. 22. SIMULATION
  23. 23. PAQUETS ÉCHANGÉS
  24. 24. TRAJECTOIRE DEMANDÉE & RÉELLE
  25. 25. VITESSE DÉPLACEMENT
  26. 26. VITESSE ROTATION
  27. 27. WHAT'S NEXT ? Unifier appels inter-module et les évènements Moteur physique dans le simulateur Améliorer communication entre les robots Traitement d'image plus complexe Faire un package réutilisable
  28. 28. POUR EN SAVOIR PLUS The source code : http://bitbucket.org/bhteam Twitter : @thebhteam Facebook : TheBhTeam Site : http://www.bhteam.org
  29. 29. MERCI AUX SPONSORS ! { yucmaylg } { oropn.oo }
  30. 30. CONCLUSIONS OUI : Python et robotique font bon ménage NON : Python ne peut pas tout faire Gain de productivité / vitesse de dev "Pas testé, pas validé !" Contents de notre choix !
  31. 31. CRÉDIT PHOTO http://www.mirror.co.uk/news/world-news/pythonfound-in-car-engine-16-ft-1309075 Marc Obergfell Wat Horse : http://t.qkme.me/3ttns0.jpg http://www.ludumdare.com/compo/wpcontent/uploads/2013/04/i-have-no-idea-what-imdoing-dog.jpg http://madan.wordpress.com/2007/01/06/kurukshetrarobotics-at-anna-university/ le reste : (c) BH Team

×