{"id":6397,"date":"2020-02-10T14:35:57","date_gmt":"2020-02-10T13:35:57","guid":{"rendered":"https:\/\/blog.generationrobots.com\/?p=6397"},"modified":"2024-06-27T10:13:48","modified_gmt":"2024-06-27T08:13:48","slug":"imu-et-robotique-ce-quil-faut-connaitre","status":"publish","type":"post","link":"https:\/\/www.generationrobots.com\/blog\/fr\/imu-et-robotique-ce-quil-faut-connaitre\/","title":{"rendered":"IMU et robotique : ce qu\u2019il faut conna\u00eetre"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"6397\" class=\"elementor elementor-6397\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2fd74ff6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2fd74ff6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-160d4111\" data-id=\"160d4111\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-54292204 elementor-widget elementor-widget-text-editor\" data-id=\"54292204\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Dans cet article, nous partageons de nombreuses informations n\u00e9cessaires \u00e0 l&rsquo;achat de votre IMU en fonction de votre cahier des charges.<br \/>Vous d\u00e9couvrirez comment fonctionne une IMU et comment interpr\u00e9ter ses param\u00e8tres.<\/p>\n<p>A la fin de l\u2019article, vous trouverez \u00e9galement des liens vers des tests et des ressources.<\/p>\n<h2>D\u00e9finition &#8211; Qu\u2019est-ce qu\u2019une IMU ?<\/h2>\n<p>Une unit\u00e9 de mesure inertielle (IMU) est un composant \u00e9lectronique inclus dans la famille de capteurs. Il mesure l&rsquo;acc\u00e9l\u00e9ration du capteur, la vitesse angulaire et son orientation \u00e0 l&rsquo;aide d&rsquo;une combinaison d&rsquo;acc\u00e9l\u00e9rom\u00e8tres, de gyroscopes et de magn\u00e9tom\u00e8tres.<\/p>\n<p>L&rsquo;IMU de type I est compos\u00e9e d&rsquo;acc\u00e9l\u00e9rom\u00e8tres et de gyroscopes, tandis que l&rsquo;IMU de type II int\u00e8gre des magn\u00e9tom\u00e8tres en plus.<\/p>\n<p>Les acc\u00e9l\u00e9rom\u00e8tres, gyroscopes et magn\u00e9tom\u00e8tres mesurent les donn\u00e9es relatives \u00e0 un seul axe (X : pitch, Y : roll, Z : yaw). Afin d&rsquo;obtenir des informations pour les 3 axes, vous devez int\u00e9grer trois composants de chaque (acc\u00e9l\u00e9rom\u00e8tres, gyroscopes et magn\u00e9tom\u00e8tres) pour une IMU de Type II. Un capteur IMU typique est de 9 DoF (degr\u00e9 de libert\u00e9) incluant :<\/p>\n<ul>\n<li>3 acc\u00e9l\u00e9rom\u00e8tres<\/li>\n<li>3 gyroscopes<\/li>\n<li>3 magn\u00e9tom\u00e8tres<\/li>\n<\/ul>\n<p>Certaines IMU peuvent avoir des degr\u00e9s de libert\u00e9 suppl\u00e9mentaires avec un capteur de temp\u00e9rature, un capteur GPS, un capteur de pression, etc.<br \/>En se basant sur l&rsquo;acc\u00e9l\u00e9ration, des calculs d&rsquo;attitude, de vitesse et de position peuvent \u00eatre effectu\u00e9s.<br \/>Gr\u00e2ce aux gyroscopes, le calcul de la position angulaire peut \u00eatre effectu\u00e9.<br \/>Ces donn\u00e9es, fournies par l\u2019IMU, sont indispensable dans la robotique mobile. En effet, elles viennent compl\u00e9ter les mesures du LiDAR et les mesures odom\u00e9triques.<\/p>\n<p><a class=\"catalogue\" title=\"Gyroscopes et centrales inertielles IMU\" href=\"https:\/\/www.generationrobots.com\/fr\/333-gyroscopes-et-centrales-inertielles\" target=\"blank\" rel=\"noopener noreferrer\">Parcourir notre gamme de gyroscopes et centrales inertielles<\/a><\/p>\n<h2>Physique &#8211; Comment une fonctionne une IMU ?<\/h2>\n<p>Pour comprendre le fonctionnement d&rsquo;une IMU, il faut commencer par analyser chaque sous-composant :<\/p>\n<h3>Sous-composant 1 : l\u2019acc\u00e9l\u00e9rom\u00e8tre<\/h3>\n<p>Un acc\u00e9l\u00e9rom\u00e8tre est un dispositif \u00e9lectrom\u00e9canique utilis\u00e9 pour mesurer les forces d&rsquo;acc\u00e9l\u00e9ration. Ces forces peuvent \u00eatre :<\/p>\n<ul>\n<li>Statique, comme la force de gravit\u00e9<\/li>\n<li>Dynamiques comme les forces de mouvement ou de vibration<\/li>\n<\/ul>\n<p>L&rsquo;acc\u00e9l\u00e9ration est la mesure de la variation de la vitesse, ou vitesse divis\u00e9e par le temps.<br \/>Par exemple, une bicyclette qui acc\u00e9l\u00e8re de l\u2019arr\u00eat \u00e0 30 km\/h en cinq secondes a une acc\u00e9l\u00e9ration de 6 km\/h par seconde (30 divis\u00e9 par 5).<\/p>\n<h3>Sous-composant 2 : le gyroscope<\/h3>\n<p>Un gyroscope est un dispositif utilis\u00e9 pour mesurer ou maintenir l&rsquo;orientation et la vitesse angulaire. Il s&rsquo;agit d&rsquo;une roue tournante, ou d&rsquo;un disque, dans lequel l&rsquo;axe de rotation est libre de prendre toute orientation par lui-m\u00eame.<\/p>\n<p>Lors de la rotation, l&rsquo;orientation de cet axe n&rsquo;est pas affect\u00e9e par l&rsquo;inclinaison ou la rotation du support, en fonction de la conservation du moment angulaire.<\/p>\n<h3>Sous-composant 3 : magn\u00e9tom\u00e8tre<\/h3>\n<p>Un magn\u00e9tom\u00e8tre est un appareil qui mesure le magn\u00e9tisme :<\/p>\n<ul>\n<li>Sa direction<\/li>\n<li>Sa force<\/li>\n<li>Le changement relatif d&rsquo;un champ magn\u00e9tique \u00e0 un endroit donn\u00e9<\/li>\n<\/ul>\n<p>Une boussole est l&rsquo;un de ces dispositifs qui mesure la direction d&rsquo;un champ magn\u00e9tique ambiant. En l&rsquo;occurrence, le champ magn\u00e9tique terrestre.<\/p>\n<h2>ROS &#8211; Transfert des donn\u00e9es de l\u2019IMU<\/h2>\n<p>Tous les capteurs IMU compatibles ROS publient leurs donn\u00e9es sur le topic \/imu selon le format de message sensor_msgs\/Imu.msg :<\/p>\n<p><\/p>\n<figure class=\"wp-block-table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p><a class=\"catalogue\" title=\"std_msgs\/Header Message\" href=\"http:\/\/docs.ros.org\/melodic\/api\/std_msgs\/html\/msg\/Header.html\" target=\"_blank\" rel=\"noopener noreferrer\">std_msgs\/Header<\/a> header\u00a0<\/p>\n<p><a class=\"catalogue\" title=\"geometry_msgs\/Quaternion orientation\" href=\"http:\/\/docs.ros.org\/melodic\/api\/geometry_msgs\/html\/msg\/Quaternion.html\" target=\"_blank\" rel=\"noopener noreferrer\">geometry_msgs\/Quaternion<\/a> orientation<br \/>float64[9] orientation_covariance<a class=\"catalogue\" title=\"geometry_msgs\/Vector3 angular_velocity\" href=\"http:\/\/docs.ros.org\/melodic\/api\/geometry_msgs\/html\/msg\/Vector3.html\" target=\"_blank\" rel=\"noopener noreferrer\">geometry_msgs\/Vector3<\/a> angular_velocity<br \/>float64[9] angular_velocity_covariance<a class=\"catalogue\" title=\"geometry_msgs\/Vector3 linear_acceleration\" href=\"http:\/\/docs.ros.org\/melodic\/api\/geometry_msgs\/html\/msg\/Vector3.html\" target=\"_blank\" rel=\"noopener noreferrer\">geometry_msgs\/Vector3<\/a> linear_acceleration<br \/>float64[9] linear_acceleration_covariance<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p><\/p>\n<h3>Orientation<\/h3>\n<p>Les rotations 3D et l&rsquo;orientation peuvent \u00eatre repr\u00e9sent\u00e9es en utilisant la forme des angles d&rsquo;Euler ou sous la forme de Quaternion.<\/p>\n<h4>Angles d\u2019Euler<\/h4>\n<p>Les angles d&rsquo;Euler sont compos\u00e9s de trois valeurs angulaires pour les axes X, Y et Z. Chaque valeur de rotation est appliqu\u00e9e s\u00e9quentiellement, c&rsquo;est-\u00e0-dire successivement.<\/p>\n<p><strong>Avantage<\/strong><br \/>Les angles d&rsquo;Euler ont un format intuitif \u00ab\u00a0lisible \u00e0 l&rsquo;\u0153il nu\u00a0\u00bb.<\/p>\n<p><strong>Limitation<\/strong><br \/>Dans certaines configurations, les angles d&rsquo;Euler souffrent d&rsquo;une perte de libert\u00e9.<br \/>En effet, lors de l&rsquo;application successive des trois rotations, il est possible que la premi\u00e8re ou la deuxi\u00e8me rotation aboutisse \u00e0 ce que le troisi\u00e8me axe pointe dans la m\u00eame direction que l&rsquo;un des axes pr\u00e9c\u00e9dents, de sorte que la troisi\u00e8me valeur de rotation ne peut \u00eatre appliqu\u00e9e autour d&rsquo;un axe unique.<\/p>\n<h4>Quaternions<\/h4>\n<p>Les quaternions peuvent \u00eatre utilis\u00e9s pour repr\u00e9senter l&rsquo;orientation ou la rotation d&rsquo;un objet.<br \/>Sa repr\u00e9sentation se compose de quatre nombres (r\u00e9f\u00e9renc\u00e9s dans l&rsquo;unit\u00e9 comme x, y, z &amp; w).<\/p>\n<p>Vous devez garder \u00e0 l&rsquo;esprit que ces grandeurs ne repr\u00e9sentent pas des angles ou des axes et que vous n&rsquo;avez normalement jamais besoin d&rsquo;y acc\u00e9der directement.<\/p>\n<p><strong>Avantage<\/strong><br \/>Les rotations Quaternion ne souffrent pas de la perte d&rsquo;un DoF.<\/p>\n<p><strong>Limitation<\/strong><br \/>Un seul quaternion ne peut repr\u00e9senter une rotation sup\u00e9rieure \u00e0 180 degr\u00e9s dans aucune direction et n&rsquo;est pas intuitivement compr\u00e9hensible.<\/p>\n<h3>Vitesse angulaire<\/h3>\n<p>La vitesse angulaire est repr\u00e9sent\u00e9e par un vecteur tridimensionnel (x, y et z), les valeurs de la vitesse angulaire d\u00e9pendant des axes x, y et z.<\/p>\n<h3>Acc\u00e9l\u00e9ration lin\u00e9aire<\/h3>\n<p>L&rsquo;acc\u00e9l\u00e9ration lin\u00e9aire est repr\u00e9sent\u00e9e par un vecteur tridimensionnel (x, y et z), les valeurs d&rsquo;acc\u00e9l\u00e9ration lin\u00e9aire d\u00e9pendant des axes x, y et z.<\/p>\n<h3>Covariance<\/h3>\n<p>En ce qui concerne les capteurs, la covariance est le coefficient de confiance relatif \u00e0 la pr\u00e9cision du capteur.<\/p>\n<p>La covariance peut \u00eatre statique en fonction des performances du capteur ou mise \u00e0 jour en continu en changeant au fil du temps en fonction de l\u2019estimation de la pr\u00e9cision. C&rsquo;est la m\u00eame chose pour l&rsquo;IMU, elles peuvent avoir une covariance statique ou dynamique.<\/p>\n<p>Chaque param\u00e8tre a un coefficient de covariance associ\u00e9, cod\u00e9 en dur ou trait\u00e9 par le logiciel du capteur, indiquant dans quelle mesure la valeur peut \u00eatre fiable.<\/p>\n<h2>Aper\u00e7u des caract\u00e9ristiques de l\u2019IMU<\/h2>\n<h3>Consommation d\u2019\u00e9nergie<\/h3>\n<p>Pour d\u00e9terminer les besoins en \u00e9nergie de votre projet robotique, vous devez tenir compte du mode et de la dur\u00e9e de fonctionnement de votre machine.<br \/>Ces param\u00e8tres sont importants si le capteur fonctionne sur batterie :<\/p>\n<ul>\n<li>Tension d&rsquo;alimentation en volts<\/li>\n<li>Courant de service en amp\u00e8res<\/li>\n<li>Puissance en watts<\/li>\n<\/ul>\n<h3>Caract\u00e9ristiques du capteur<\/h3>\n<p><strong>La r\u00e9solution num\u00e9rique<\/strong>\u00a0d\u00e9crit la capacit\u00e9 de d\u00e9tection globale de votre capteur et se compose de deux parties :<\/p>\n<p><strong>1. La distance =&gt;<\/strong> quantit\u00e9 du mouvement que les capteurs peuvent prendre en compte :<\/p>\n<ul>\n<li>Dans le cas d&rsquo;un acc\u00e9l\u00e9rom\u00e8tre, cela se mesure en forces G.<\/li>\n<li>Les gyroscopes sont class\u00e9s en fonction de la vitesse de rotation angulaire qu&rsquo;ils peuvent quantifier en degr\u00e9s\/seconde.<\/li>\n<li>Les magn\u00e9tom\u00e8tres mesurent leurs capacit\u00e9s en \u00b5T, qui peuvent varier selon l&rsquo;axe du capteur (x,y,z).<\/li>\n<\/ul>\n<p><strong>2. La sensibilit\u00e9 =&gt;\u00a0<\/strong>nombre absolu repr\u00e9sentant la plus petite quantit\u00e9 de changements qui peut \u00eatre mesur\u00e9e et d\u00e9tect\u00e9e. Pour les capteurs, ceci est directement li\u00e9 au nombre de bits r\u00e9serv\u00e9s pour le capteur en question. Plus il y a de bits, plus la sensibilit\u00e9 est \u00e9lev\u00e9e.<\/p>\n<p><strong>Offset par rapport \u00e0 la gravit\u00e9 z\u00e9ro :<\/strong>\u00a0valeur de l&rsquo;acc\u00e9l\u00e9rom\u00e8tre lorsque aucune force ext\u00e9rieure n&rsquo;est appliqu\u00e9e, qui est l&rsquo;erreur minimale d\u00e9tect\u00e9e.<\/p>\n<p><strong>Offset du taux z\u00e9ro :<\/strong> valeur du gyroscope en l&rsquo;absence de mouvement angulaire, qui peut d\u00e9pendre de la temp\u00e9rature.<\/p>\n<p><strong>D\u00e9bits de donn\u00e9es :<\/strong> le nombre de mesures effectu\u00e9es au cours d&rsquo;une p\u00e9riode de temps donn\u00e9e. Lorsque vous choisissez votre IMU, assurez-vous que les taux de capteurs pris en charge correspondent aux besoins de vos applications.<\/p>\n<p><strong>Densit\u00e9 de bruit :<\/strong> d\u00e9fini en unit\u00e9s par largeur de bande de racine carr\u00e9e, typiquement :<\/p>\n<ul>\n<li>ug\/sqrt(Hz) pour les acc\u00e9l\u00e9rom\u00e8tres<\/li>\n<li>deg\/s\/sqrt(Hz) pour les gyroscopes<\/li>\n<\/ul>\n<p><strong>Bande passante :<\/strong> la gamme de fr\u00e9quences dans laquelle un acc\u00e9l\u00e9rom\u00e8tre ou un gyroscope fonctionne.<\/p>\n<p><strong>Interfaces :<\/strong> quel c\u00e2ble et protocole de communication utilisent l&rsquo;IMU et votre syst\u00e8me embarqu\u00e9 ?<\/p>\n<p><strong>Plage de temp\u00e9rature :<\/strong> les sondes de temp\u00e9rature ambiante minimale et maximale peuvent fonctionner en toute s\u00e9curit\u00e9 pour fournir des mesures pr\u00e9cises.<\/p>\n<h3>Param\u00e8tres en sortie<\/h3>\n<p><strong>Pr\u00e9cision statique :<\/strong> pr\u00e9cision de la sortie du capteur lorsque l&rsquo;appareil est relativement stable\/immobile.<\/p>\n<p><strong>Pr\u00e9cision dynamique :<\/strong> il s&rsquo;agit de la pr\u00e9cision de la sortie du capteur lorsque l&rsquo;appareil est en mouvement.<\/p>\n<p><strong>Erreur de rotation :<\/strong> diff\u00e9rence entre le vecteur de sortie et le vecteur r\u00e9el, mesur\u00e9 en degr\u00e9s.<\/p>\n<p><strong>Heading Error :<\/strong> diff\u00e9rence entre la sortie de l\u2019axe yaw et sa valeur r\u00e9elle, mesur\u00e9e en degr\u00e9.<br \/><strong>Heading Drift :<\/strong> erreur accumul\u00e9e \u00e0 travers le temps.<\/p>\n<p><strong>RAW Accel\/Gyro\/Mag :<\/strong> la sortie brute de chaque capteur avant tout traitement.<\/p>\n<p><strong>Calibrated Accel\/Gyro\/Mag :<\/strong> sortie de chaque capteur apr\u00e8s que la fusion des capteurs ait \u00e9t\u00e9 utilis\u00e9e pour traiter et nettoyer chaque signal.<\/p>\n<h3>Calibration<\/h3>\n<p>Apr\u00e8s avoir examin\u00e9 les param\u00e8tres les sorties des capteurs, il y a une autre chose que vous devez consid\u00e9rer : l&rsquo;\u00e9talonnage. Les options d&rsquo;\u00e9talonnage que vous choisissez d\u00e9pendent de votre budget et des besoins de votre projet.<\/p>\n<p><strong>Nominal :<\/strong> l&rsquo;\u00e9talonnage nominal utilise des valeurs moyennes pour le capteur afin de lui donner une performance moyenne.<\/p>\n<p><strong>Per-device :<\/strong> l&rsquo;\u00e9talonnage par appareil permet d&rsquo;\u00e9talonner certains facteurs, comme le gain du capteur, propre \u00e0 chaque composant. En fonction de votre application, vous pouvez choisir d&rsquo;\u00e9talonner en fonction d&rsquo;un axe unique ou de plusieurs axes si votre projet.<\/p>\n<p><strong>Dynamique :<\/strong> si vous trouvez que l&rsquo;\u00e9talonnage nominal est acceptable, la sortie de votre capteur peut encore \u00eatre am\u00e9lior\u00e9e dynamiquement sur le terrain. Les caract\u00e9ristiques du capteur varient en fonction de la temp\u00e9rature et peuvent \u00eatre ajust\u00e9es au fur et \u00e0 mesure que le capteur est utilis\u00e9 dans son application finale.<\/p>\n<h2>Algorithmes de fusion de donn\u00e9es<\/h2>\n<h3>Le filtre Kalman<\/h3>\n<p>Le filtre de Kalman est une impl\u00e9mentation de mod\u00e8le :<\/p>\n<ul>\n<li>Tout d&rsquo;abord, sur la base de son mod\u00e8le, le filtre fait une hypoth\u00e8se sur la prochaine valeur de sortie du capteur<\/li>\n<li>Il prend ensuite la valeur mesur\u00e9e et la compare avec sa supposition<\/li>\n<li>Enfin, il met \u00e0 jour son mod\u00e8le pour faire des hypoth\u00e8ses plus pr\u00e9cises pour la prochaine mesure.<\/li>\n<\/ul>\n<p>Chaque s\u00e9quence de donn\u00e9es provenant des capteurs est utilis\u00e9e pour am\u00e9liorer statistiquement le mod\u00e8le afin de calculer les sorties. Dans le m\u00eame temps, la pr\u00e9cision des capteurs est \u00e9galement jug\u00e9e.<\/p>\n<p>Le mod\u00e8le d\u00e9pend de l&rsquo;erreur du capteur et de l&rsquo;application en question. Pour les syst\u00e8mes robotiques mobiles, les connaissances du monde r\u00e9el nous disent aussi que les objets physiques se d\u00e9placent en douceur et en continu dans l&rsquo;espace, plut\u00f4t que de se t\u00e9l\u00e9porter dans l&rsquo;espace comme pourraient l&rsquo;indiquer des \u00e9chantillons de coordonn\u00e9es GPS.<\/p>\n<p>Cela signifie que si un capteur qui a toujours donn\u00e9 d&rsquo;excellentes valeurs de mani\u00e8res constantes commence \u00e0 vous dire des choses improbables (comme les syst\u00e8mes GPS\/radio lorsque vous entrez dans un tunnel), la cote de cr\u00e9dibilit\u00e9 des capteurs diminue en quelques it\u00e9rations de quelques millisecondes jusqu&rsquo;\u00e0 ce qu&rsquo;il recommence \u00e0 mesurer des valeurs coh\u00e9rentes.<\/p>\n<p>C&rsquo;est mieux que le simple calcul de la moyenne, car le filtre de Kalman peut supporter la plupart de ses capteurs qui deviennent temporairement impr\u00e9cis. Il faut au moins un capteur qui transmet des valeurs relativement pr\u00e9cises. Il assure le bon fonctionnement du robot jusqu\u2019\u00e0 ce que les autres capteurs fonctionnent de nouveau.<\/p>\n<p>Le filtre de Kalman est une application des concepts plus g\u00e9n\u00e9raux des cha\u00eenes de Markov et de l&rsquo;Inf\u00e9rence Bay\u00e9sienne, qui sont des syst\u00e8mes math\u00e9matiques qui affinent de fa\u00e7on it\u00e9rative leurs suppositions \u00e0 l&rsquo;aide de preuves.<\/p>\n<p><span style=\"color: #111111; font-family: inherit; font-size: 2.1rem; font-weight: bold;\">Filtres PID<\/span><\/p>\n<p>Les syst\u00e8mes robotiques plus simples peuvent \u00eatre \u00e9quip\u00e9s de filtres PID. On peut les consid\u00e9rer comme des filtres de Kalman primitifs aliment\u00e9s par un seul capteur, tous les r\u00e9glages it\u00e9ratifs \u00e9tant coup\u00e9s et remplac\u00e9s par trois valeurs fixes (kp, ki et kd).<\/p>\n<p>Il s&rsquo;agit d&rsquo;un syst\u00e8me de correction qui ajuste l&rsquo;entr\u00e9e par la boucle de contr\u00f4le pour obtenir la bonne sortie.<\/p>\n<p>M\u00eame lorsque les valeurs PID sont r\u00e9gl\u00e9es automatiquement ou manuellement, l&rsquo;ensemble du processus de \u00ab\u00a0r\u00e9glage\u00a0\u00bb (ajuster, voler, juger, r\u00e9p\u00e9ter) est une version externalis\u00e9e de Kalman avec un humain faisant l&rsquo;\u00e9tape de propagation des croyances.<\/p>\n<h3>Filtres personnalis\u00e9s<\/h3>\n<p>Les vrais syst\u00e8mes sont souvent hybrides, quelque part entre les deux.<\/p>\n<h2>Packages ROS pour IMU<\/h2>\n<p>Si vous impl\u00e9mentez votre logiciel robot sous ROS, il sera plus facile d&rsquo;acheter des capteurs compatibles avec ROS. Cela signifie que les constructeurs ont d\u00e9j\u00e0 d\u00e9velopp\u00e9 un package ROS pour faire interagir le capteur sous ROS. Cela vous fera gagner du temps.<\/p>\n<p>En ce qui concerne l&rsquo;IMU, le capteur publiera les donn\u00e9es brutes ou trait\u00e9es, en fonction des impl\u00e9mentations de votre IMU, sur le topic \/imu. Ensuite, sur ROS, vous pouvez vous abonner au topic pour obtenir des donn\u00e9es pour les utiliser pour la navigation, par exemple.<\/p>\n<p><strong>A propos des packages ROS, certains sont d\u00e9j\u00e0 impl\u00e9ment\u00e9s et \u00e0 jour :<\/strong><\/p>\n<ul>\n<li><a class=\"catalogue\" title=\"Le package ROS imu_transformer pour IMU\" href=\"http:\/\/wiki.ros.org\/action\/fullsearch\/imu_transformer\" target=\"_blank\" rel=\"noopener noreferrer\">imu_transformer<\/a> : Ce package fournit une combinaison node\/nodelet qui peut \u00eatre utilis\u00e9e pour transformer les donn\u00e9es IMU d&rsquo;une trame TF en une autre<\/li>\n<li><a class=\"catalogue\" title=\"Outils ROS pour IMU\" href=\"https:\/\/github.com\/ccny-ros-pkg\/imu_tools\/tree\/kinetic\" target=\"_blank\" rel=\"noopener noreferrer\">imu_tools<\/a> :<\/li>\n<li><a class=\"catalogue\" title=\"Le package ROS magdwick pour IMU\" href=\"http:\/\/wiki.ros.org\/imu_filter_madgwick\" target=\"_blank\" rel=\"noopener noreferrer\">Imu_filter_madgwic<\/a> : Filtre qui fusionne les vitesses angulaires, les acc\u00e9l\u00e9rations et (optionnellement) les lectures magn\u00e9tiques d&rsquo;un dispositif IMU g\u00e9n\u00e9rique dans une orientation bas\u00e9e sur l&rsquo;algorithme de Sebastian Madgwick<\/li>\n<\/ul>\n<ul class=\"wp-block-list\">\n<li><a class=\"catalogue\" title=\"Doc ROS : imu_tools: imu_complementary_filter | imu_filter_madgwick | rviz_imu_plugin\" href=\"https:\/\/wiki.ros.org\/imu_complementary_filter\" target=\"_blank\" rel=\"noopener noreferrer\">Imu_complementary_filter<\/a> : Filtre qui fusionne les vitesses angulaires, les acc\u00e9l\u00e9rations et (facultativement) les lectures magn\u00e9tiques d&rsquo;un dispositif IMU g\u00e9n\u00e9rique dans un quaternion pour repr\u00e9senter l&rsquo;orientation du dispositif sur la trame globale, bas\u00e9 sur l&rsquo;algorithme de Roberto G. Valenti<\/li>\n<li>rviz_imu_plugin : un plugin pour rviz qui affiche sensor_msgs::Imu messages<\/li>\n<li><a class=\"catalogue\" title=\"Un package ROS pour analyser les performances de l'IMU\" href=\"https:\/\/github.com\/gaowenliang\/imu_utils\" target=\"_blank\" rel=\"noopener noreferrer\">imu_utils<\/a> : Package qui permet de suivre les performances de l&rsquo;IMU sur Matlab<\/li>\n<\/ul>\n<h2>Comment choisir son IMU ?<\/h2>\n<p>Faites votre choix en fonction des exigences de votre projet. L&rsquo;IMU la moins ch\u00e8re ne fournit que des valeurs brutes, tandis que l&rsquo;<a class=\"catalogue\" title=\"Capteur d'orientation UM7\" href=\"https:\/\/www.generationrobots.com\/fr\/403281-capteur-d-orientation-um7.html\" target=\"_blank\" rel=\"noopener noreferrer\">UM7<\/a> filtre les valeurs trait\u00e9es et la publie directement dans un message ROS.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-fff2371 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"fff2371\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-08a356f\" data-id=\"08a356f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-27dd18f elementor-widget elementor-widget-text-editor\" data-id=\"27dd18f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Les performances sont assez similaires m\u00eame pour les IMU les plus ch\u00e8res. La diff\u00e9rence r\u00e9side dans les services et impl\u00e9mentations suppl\u00e9mentaires :<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Calculs int\u00e9gr\u00e9s<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Filtres int\u00e9gr\u00e9s (tr\u00e8s performants : les <a class=\"catalogue\" title=\"IMU SBG Systems\" href=\"https:\/\/www.generationrobots.com\/fr\/262_sbg-systems\" target=\"_blank\" rel=\"noopener noreferrer\">IMU SBG Systems<\/a>)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Microcontr\u00f4leur int\u00e9gr\u00e9<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Biblioth\u00e8que de carte (Arduino, Raspberry pi, etc.)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Compatibilit\u00e9 ROS<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Interface<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Int\u00e9gration avec donn\u00e9es GPS (<a class=\"catalogue\" title=\"Centrale inertielle Ellipse 2 Micro INS SBG\" href=\"https:\/\/www.generationrobots.com\/fr\/403521-ellipse-2-micro-ins.html\" target=\"_blank\" rel=\"noopener noreferrer\">Centrale inertielle Ellipse 2 Micro INS de SBG Systems<\/a>)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Quelles sont les performances de l\u2019IMU ?<\/h2>\n<p>Un capteur IMU est un composant utile \u00e0 ajouter sur votre robot. Il vous donnera des informations sur l&rsquo;attitude, l&rsquo;orientation, la position, la vitesse, l&rsquo;acc\u00e9l\u00e9ration, la vitesse de rotation si les valeurs sont calcul\u00e9es.<\/p>\n<p>N\u00e9anmoins, vous devez garder \u00e0 l&rsquo;esprit que l&rsquo;IMU est sujet aux erreurs de d\u00e9rive. En effet, les erreurs s&rsquo;accumulent au fil du temps puisque les nouvelles valeurs sont bas\u00e9es sur les pr\u00e9c\u00e9dentes.<\/p>\n<p>De plus, l&rsquo;IMU, en utilisant le champ magn\u00e9tique pour calculer les valeurs, peut \u00eatre alt\u00e9r\u00e9e par d&rsquo;autres champs magn\u00e9tiques (moteur, structure m\u00e9tallique, etc.) qui peuvent donner d&rsquo;\u00e9normes erreurs.<\/p>\n<p>Vous pouvez impl\u00e9menter des corrections et des filtres pour r\u00e9duire cette erreur, mais l&rsquo;erreur IMU d\u00e9rivera et augmentera continuellement.<\/p>\n<p>Une fa\u00e7on de r\u00e9soudre ce probl\u00e8me est de prendre en compte la valeur de covariance (coefficient de confiance), qui peut \u00e9voluer avec le temps si elle est dynamique.<\/p>\n<p>Une autre fa\u00e7on est d&rsquo;ajouter un capteur GPS. En effet, le signal GPS peut mettre \u00e0 jour la valeur de l\u2019IMU et corriger son erreur de d\u00e9rive.<\/p>\n<p>Vous cherchez des r\u00e9sultats r\u00e9els, vous trouverez en ligne un <a class=\"catalogue\" title=\"Visualisation en ligne des donn\u00e9es d'une IMU et de capteur EMG connect\u00e9 \u00e0 un poignet\" href=\"https:\/\/pdfs.semanticscholar.org\/f15f\/4040decc10f952805ec34921401ceaebb094.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">test de visualisation en ligne des donn\u00e9es d&rsquo;une IMU et de capteur EMG connect\u00e9 \u00e0 un poignet<\/a>, qui vous donnera un aper\u00e7u de l&rsquo;erreur de l\u2019IMU (parties 2.1 et 3.1).<\/p>\n<p>Cet autre article liste et d\u00e9crit tous les <a class=\"catalogue\" title=\"Biais de l'IMU conduisant \u00e0 des erreurs\" href=\"https:\/\/www.edn.com\/evaluating-inertial-measurement-units\/\" target=\"_blank\" rel=\"noopener noreferrer\">biais de l&rsquo;IMU conduisant \u00e0 des erreurs<\/a>.<\/p>\n<p>Vous trouverez <a class=\"catalogue\" title=\"M\u00e9thode d'\u00e9valuation d'une IMU\" href=\"https:\/\/www.ncbi.nlm.nih.gov\/pmc\/articles\/PMC4934280\/\" target=\"_blank\" rel=\"noopener noreferrer\">ici<\/a> une m\u00e9thode rapide et efficace pour \u00e9valuer une IMU.<\/p>\n<h2>Conclusion : avantages et inconv\u00e9nients de l\u2019IMU<\/h2>\n<h3>Avantages d&rsquo;une IMU<\/h3>\n<ul>\n<li>Le syst\u00e8me de navigation inertielle est ind\u00e9pendant de toute information externe et ne consomme pas trop d&rsquo;\u00e9nergie<\/li>\n<li>Le syst\u00e8me de navigation inertielle peut fournir l&#8217;emplacement, la vitesse, l&rsquo;attitude, les donn\u00e9es d&rsquo;angle, et l&rsquo;information de navigation r\u00e9sultante est continue<\/li>\n<li>Mesure \u00e0 hautes fr\u00e9quences et bonne stabilit\u00e9<\/li>\n<\/ul>\n<h3>Limites de l&rsquo;IMU<\/h3>\n<ul>\n<li>Gr\u00e2ce aux informations du syst\u00e8me de navigation int\u00e9gr\u00e9, l&rsquo;erreur de positionnement augmente avec le temps et la pr\u00e9cision \u00e0 long terme est faible<\/li>\n<li>Un long temps d&rsquo;alignement initial est n\u00e9cessaire avant chaque utilisation<\/li>\n<li>Les informations de temps ne peuvent pas \u00eatre donn\u00e9es<\/li>\n<\/ul>\n<p><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Dans cet article, nous partageons de nombreuses informations n\u00e9cessaires \u00e0 l&rsquo;achat de votre IMU en fonction de votre cahier des charges.Vous d\u00e9couvrirez comment fonctionne une IMU et comment interpr\u00e9ter ses param\u00e8tres. A la fin de l\u2019article, vous trouverez \u00e9galement des liens vers des tests et des ressources. D\u00e9finition &#8211; Qu\u2019est-ce qu\u2019une IMU ? Une unit\u00e9[&#8230;]<br \/> <a class=\"button\" href=\"https:\/\/www.generationrobots.com\/blog\/fr\/imu-et-robotique-ce-quil-faut-connaitre\/\" style=\"float:right;\">Read this article &gt;&gt;<\/a><\/p>\n","protected":false},"author":188,"featured_media":6998,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10523,10527],"tags":[],"class_list":["post-6397","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-comparatifs-et-tests-produits","category-guides-et-tutoriels"],"_links":{"self":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/6397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/comments?post=6397"}],"version-history":[{"count":50,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/6397\/revisions"}],"predecessor-version":[{"id":18313,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/6397\/revisions\/18313"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media\/6998"}],"wp:attachment":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media?parent=6397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/categories?post=6397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/tags?post=6397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}