VII. RESOLUTION DE PROBLEMES. MobileRobots MobileEyes, MobileSim, Mapper 3Basic, PeopleBot
VII. RESOLUTION DE PROBLEMES
Ce chapitre présente plusieurs erreurs techniques susceptibles d'être rencontrées et explique pour chacune d'entre elles la façon de la résoudre.
1) Erreur au démarrage de MobileSim sous Windows XP
Lors du démarrage de la simulation, avec ou non chargement d'un fichier .map, l'erreur suivante risque d'arriver :
"C:\DOCUME~1\Temp\MobileSim-stage_world-3168.world:51 : syntax error"
Ce problème vient d'une incompatibilité entre le logiciel et le système d'exploitation : en effet le logiciel attend le symbole "." comme séparateur des décimales au lieu de ",". Pour résoudre le problème, il faut faire la démarche suivante :
•
Aller dans Démarrer => Panneau de configuration => Options Régionales et Linguistiques ;
•
Cliquer sur Personnaliser ;
•
Modifier dans Symbole Décimal le symbole "," par "." ;
•
Cliquer sur OK.
>> Ce bug est corrigé dans la version 0.2 de MobileSim.
2) Erreur à l'exécution d'un programme utilisant la librairie Aria sous Linux.
Lors de l'exécution d'une application embarquée sur le robot (ou sur un poste distant sous linux), il se peut que l'erreur suivante survienne :
Le système d'exploitation ne trouve pas les librairies nécessaires à l'exécution, que ce soit libAria.so comme dans l'exemple ou libstdc++6.so.
Pour remédier à ce problème, il faut compléter le fichier ld.so.config avec le chemin absolu de la librairie manquante (ici /usr/local/Aria/lib), puis exécuter en mode super-utilisateur la commande /sbin/ldconfig.
NB : sur le système d'exploitation du robot, le fichier ld.so.config se trouve dans le répertoire
/usr/local/gcc-3.4.1/lib.
Pour d'autres OS de type Linux, on peut retrouver le fichier grâce à la commande:
locate ld.so.config
3) Erreur de connexion d'une application à MobileSim
Lorsque l'on souhaite qu'une application (par exemple demo.exe) se connecte à MobileSim,
il peut survenir le message suivant :
>> demo -rh localhost -ris
Connect to remote host localhost through tcp syncing 0 syncing 1 syncing 2
Connect to robot.
Name: MobileSim
Type: Pionner
Subtype: peoplebot
Error: Have no parameters for this robot, bad configuration or out of date Aria
Failed to connect to robot
Could not connect to robot... exiting
Cela vient d'une mauvaise gestion du modèle PeopleBot par le logiciel MobileSim. Pour y remédier, il faut modifier le fichier PioneerRobotModels.world.inc, contenu dans le répertoire
/usr/local/MobileSim sous Linux ou Program Files\ActivMedia Robotics\MobileSim sous Windows
: à la place de "peoplebot", marquer "peoplebot-sh".
Puis, au lancement de MobileSim, il faut choisir le modèle "peoplebot-sh".
On pourrait également choisir directement le modèle "p3dx", qui se rapproche énormément de celui du PeopleBot.
>> Ce bug est corrigé dans la version 0.2 de MobileSim.
4) Erreur à la compilation avec Aria sous Linux
Lors de la compilation sous Linux, il se peut qu'une erreur soit générée à cause de l'absence de la librairie libstdc++.so.6, nécessaire à la librairie libAria.so.
Pour pallier ce problème, il est possible de créer un lien symbolique qui pointerait sur une ancienne version de la librairie libstdc++, grâce à la fonction ln.
Ce lien permet de forcer la librairie libaria.so à utiliser la version précédente de la librairie
C++ au lieu de la version 6.
ex : ln -s /usr//lib/libstdc++.so.5 /usr//lib/libstdc++.so.6
D'autres erreurs peuvent également survenir provenant de la librairie ARIA :
/usr/local/Aria/lib/libAria.so: undefined reference to
`std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'
/usr/local/Aria/lib/libAria.so: undefined reference to `std::_List_node_base::unhook()'
/usr/local/Aria/lib/libAria.so: undefined reference to
`std::_List_node_base::hook(std::_List_node_base*)'
/usr/local/Aria/lib/libAria.so: undefined reference to
`std::_Rb_tree_decrement(std::_Rb_tree_node_base const*)'
/usr/local/Aria/lib/libAria.so: undefined reference to
`std::_Rb_tree_insert_and_rebalance(bool,std::_Rb_tree_node_base*,std::_Rb_tree_node_bas e*, std::_Rb_tree_node_base&)'
/usr/local/Aria/lib/libAria.so: undefined reference to
`std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*,std::_Rb_tree_node_base&)'
/usr/local/Aria/lib/libAria.so: undefined reference to
`std::_Rb_tree_increment(std::_Rb_tree_node_base*)' collect2: ld returned 1 exit status
make: *** [Client] Erreur 1
Ces erreurs proviennent directement d'une incompatibilité avec le compilateur. En effet, la librairie libaria.so a été initialement compilée avec la version 3.4 de g++. A partir de là, son utilisation avec une version précédente du compilateur générera obligatoirement des erreurs.
Pour remédier à ce problème, deux solutions est envisageable :
- mettre à jour le compilateur par un version plus récente ;
- recompiler la librairie avec la version du compilateur présente dans le système.
5) Erreur de liens à la compilation de la librairie sous Visual C++
Lors de la compilation de la librairie dynamique Aria.dll avec le compilateur Visual C++
Express 2005, les erreurs de lien suivantes peut éventuellement survenir : ariaUtil.obj: error LNK2019: unresolved external symbol __imp__RegEnumValueA@32 referenced in function
"public: static bool __cdecl ArUtil::getStringFromRegistry(enum ArUtil::REGKEY,char const *,char const *,char *,int)"
(?getStringFromRegistry@ArUtil@@SA_NW4REGKEY@1@PBD1PADH@Z) ariaUtil.obj: error LNK2019: unresolved external symbol __imp__RegQueryInfoKeyA@48 referenced in function "public: static bool __cdecl
ArUtil::getStringFromRegistry(enum ArUtil::REGKEY,char const *,char const *,char *,int)"
(?getStringFromRegistry@ArUtil@@SA_NW4REGKEY@1@PBD1PADH@Z) ariaUtil.obj: error LNK2019: unresolved external symbol __imp__RegOpenKeyExA@20 referenced in function "public: static bool __cdecl
ArUtil::getStringFromRegistry(enum ArUtil::REGKEY,char const *,char const *,char *,int)"
(?getStringFromRegistry@ArUtil@@SA_NW4REGKEY@1@PBD1PADH@Z)
../bin/ARIADebug.DLL: fatal error LNK1120: 3 unresolved externals
Ces
erreurs proviennent de l'absence d'une librairie à l'intérieur du projet. Pour régler ce problème, il faut donc rajouter la librairie ADVAPI32.lib dans les propriétés du projet (Linker/Input/Additionnal
Dependencies).
6) Problème de DLL à l'exécution d'un programme.
Au lancement d'un programme sous windows, l'application peut s'arrêter brutalement par l'erreur suivante :
« Cette application n'a as pu démarrer car ARIADebug.DLL est introuvable. La réinstallation de cette application peut corriger ce problème. »
On peut résoudre ce problème en plaçant la librairie concernée dans le répertoire
« C:\Windows\system ».

Public link updated
The public link to your chat has been updated.