{"id":20346648,"url":"https://github.com/arthurfdlr/ensmasteel_bot_2020","last_synced_at":"2026-06-05T12:31:27.092Z","repository":{"id":112736092,"uuid":"212681432","full_name":"ArthurFDLR/Ensmasteel_Bot_2020","owner":"ArthurFDLR","description":null,"archived":false,"fork":false,"pushed_at":"2021-07-05T18:48:43.000Z","size":55934,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-14T22:31:38.630Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ArthurFDLR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-03T21:13:36.000Z","updated_at":"2021-10-18T09:08:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"659482d7-aa41-411d-9f6e-481c8b14e44d","html_url":"https://github.com/ArthurFDLR/Ensmasteel_Bot_2020","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArthurFDLR%2FEnsmasteel_Bot_2020","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArthurFDLR%2FEnsmasteel_Bot_2020/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArthurFDLR%2FEnsmasteel_Bot_2020/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArthurFDLR%2FEnsmasteel_Bot_2020/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArthurFDLR","download_url":"https://codeload.github.com/ArthurFDLR/Ensmasteel_Bot_2020/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241877418,"owners_count":20035403,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T22:13:43.622Z","updated_at":"2026-06-05T12:31:27.086Z","avatar_url":"https://github.com/ArthurFDLR.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003ch1 align = \"center\"\u003e EnsmaSteel bot 2020 - 2021 \u003c/h1\u003e \u003c!-- omit in toc --\u003e\n\n\u003cimg src=\"./.github/images/EnsmaSteel_Bot.png\" width=\"100%\" alt=\"Robot during 2019 competition preparation\" class=\"center\"\u003e\n\n🚧 MarkdDown file in progress 🚧\n\nSource code of Ensmasteel's bot. \n\n- [Robot configuration](#robot-configuration)\n  - [Sequences](#sequences)\n  - [Actions](#actions)\n- [Navigation](#navigation)\n  - [Trajectory computation](#trajectory-computation)\n  - [Odometry](#odometry)\n  - [Position control](#position-control)\n- [Electronics](#electronics)\n- [Mecanics](#mecanics)\n\n## Robot configuration\n### Sequences\n\nPresent Sequence type\n\n### Actions\n\nPresent possible actions to stack in sequences\n\n## Navigation\n### Trajectory computation\n\n\u003c!---\nCommençons par déterminer la trajectoire du robot lorsqu'il se déplace d'un point A à un point B. Pour se faire nous calculons deux polynômes définissant l'abscisse X et l'ordonnée Y en fonction d'une variable arbitraire notée t*. Ces fonctions sont des [courbes de Bézier d'ordre 3](https://www.desmos.com/calculator/cahqdxeshd \"Bezier viewer\"). On peut alors tracer la trajectoire en connaissant le point de départ __(X0,Y0)__, le point d'arrivé __(X3,Y3)__ et les points intermédiaires __(X1,Y1)__ et __(X2,Y2)__. Ces points intermédiraires sont déterminés pour obtenir la courbure et plus particulièrement, l'orientation initiale et finale du robot.\nL'orientation du robot est essentielle pour effectuer les actions, nous devons donc pouvoir contrôler l'orientation d'arrivé en __(X3,Y3)__. On se contentera de partir dans le sens initial du robot en début de trajectoire, quitte à tourner avant.\n\nNous stockons toutes les informations relatives à la trajectoire dans un objet _Ghost_. Le robot physique se contentera de suivre cette trajectoire par un asservissement en position. Afin de permettre au robot de suivre la trajectoire, la position ne suffit pas, il faut aussi la vitesse de déplacement. La variable t* des courbes de Beziers n'a aucun sens temporellement. On souhaite imposer la vitesse progressivement. On définit alors une fonction _V(t)_ déterminant la vitesse d'avancer le long de l'abscisse curviligne décrivant la trajectoire. On a alors _dt*=(V(t)/V*(t*))x(dt)_ avec _dt_ le temps écoulé entre deux tour de boucle (de calcul), _V*(t*)_ la vitesse réelles _V*²(t*)=X’(t*)²+Y’(t*)²_ où _X_ et _Y_ sont les courbes de Beziers) et _dt*_ le pas d'incrémentation de _t*_ pour le calcul de la position suivante. _(cf Passation-CODE.docx pour plus de détails)_\n--\u003e\n### Odometry\n### Position control\n\u003c!---\nL'ensembles des positions sont stocker sous forme de _VectorE(x, y, theta)_ indiquant la position en coordonées x,y en mètres et l'orientation du robot en radiants _(note : theta est toujours compris dans [-PI; PI])_. Le type _Cinetique_ est attendu en entrée d'asservissement. Il contient la position et l'orientation du Ghost en temps réelle et sa vitesse linéaire et en rotation dans le futur d'un délai de _delayPosition_ en milli-secondes. Ce délai permet à l'asservissement de \"prédire\" les accélérations/décélérations afin d'etre plus fluide.\n--\u003e\n## Electronics\n\n## Mecanics\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farthurfdlr%2Fensmasteel_bot_2020","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farthurfdlr%2Fensmasteel_bot_2020","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farthurfdlr%2Fensmasteel_bot_2020/lists"}