Uuv_simulator: <neutrally_buoyant>la balise ne fait rien.</neutrally_buoyant>

Créé le 14 juil. 2017  ·  23Commentaires  ·  Source: uuvsimulator/uuv_simulator

Bonjour,

J'essaie d'implémenter un véhicule dans UUV Sim, et j'essaie simplement de faire flotter mon véhicule, et j'ai même défini la balise <neutrally_buoyant>1</neutrally_buoyant> comme indiqué, mais mon véhicule continue de couler à la seconde où il est téléchargé. Y a-t-il des conseils que vous pouvez donner pour aider ce véhicule à flotter de manière neutre ou même positivement ?

bug

Tous les 23 commentaires

Salut,

merci pour le signalement, je vais vérifier ça. Pendant ce temps, vous pouvez avoir votre véhicule flottant positivement si vous définissez le drapeau neutrally_buoyant sur zéro et réglez le volume à la place, comme dans le modèle rexrov https://github.com/uuvsimulator/uuv_simulator/ blob/master/uuv_descriptions/models/rexrov/urdf/rexrov.gazebo.xacro#L32.
Le volume est ensuite utilisé pour calculer le vecteur de force de flottabilité.

Bonjour,

J'ai essayé de régler le volume assez grand. Pas aussi gros que le rexrov , et il coulait toujours. Je vais essayer cela et vous revenir, mais j'ai essayé de monter mon volume et ma masse vers le bas pour le forcer à flotter. Je vous reviens avec les résultats dans une seconde cependant.

J'ai donc réglé mon volume à 3.1093918 m3 et ma masse à 0.123497 , et mon véhicule a toujours coulé. Je peux essayer de le définir exactement sur ce que vous avez défini pour le rexrov pour son volume, et même définir la balise <box> sur ce que le rexrov avait ainsi que son modèle hydrodynamique . Je ne sais donc pas où rechercher un problème.

Avez-vous défini <neutrally_buoyant>0</neutrally_buoyant> ?

@musamarcusso J'ai essayé de régler <neutrally_buoyant> sur 0 et 1 . Pas de vrai changement.

Salut @atomoclast , est-ce le véhicule que tu veux modéliser ?

http://www.videoray.com/images/specsheets/2016/2016_P4STANDARDBASE_FINAL.pdf

Je vais essayer de remplacer ces paramètres ici pour reproduire cela.

@musamarcusso Oui, c'est le véhicule que j'essaie de modéliser.

J'ai un fichier mesh si vous en avez besoin.

J'ai juste essayé de lancer une boîte de test avec ce que je comprends être le plugin de flottabilité et je l'ai essayé avec la balise neutrally_buoyant définie sur 0 ainsi que 1 , et la boîte a quand même coulé les deux fois. Il affichait également l'erreur [Wrn] [UnderwaterObjectPlugin.cc:207] Relative angular acceleration is invalid -nan encore et encore.

J'ai les deux fichiers ci-dessous pour que vous puissiez les examiner. Je ne sais pas quel est le problème. J'ai ajouté l'extension .txt afin que je puisse télécharger dans le commentaire.

box.urdf.txt
upload_box.launch.txt

Dès que vous voyez l'erreur Relative angular acceleration is invalid notre UnderwaterObjectPlugin n'appliquera plus de forces ou de couples, car c'est un indicateur clair que le moteur physique est cassé.

J'ai regardé ta définition de boîte :

<inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0" />

C'est le coupable. Aucun corps rigide ne doit avoir de moments d'inertie ni de masse nulle. En raison de la façon dont Gazebo calcule les accélérations à partir des forces/couples, cela entraînera une division par zéro.

Faites-nous savoir si cela résout votre problème.

@sebastianscherer C'est parfaitement logique. Je viens d'utiliser un ellipsoïde de base pour estimer mon inertie pour mon véhicule, et il flotte maintenant.

Passons à la découverte du plugin Thruster ! Là aussi, j'ai des problèmes.

Dans la borne gazebo je vois :

[Msg] Thruster #0 initialized
[Msg]   - Link: videoray_pro4/thruster_0
[Msg]   - Robot model: videoray_pro4
[Msg]   - Input command Gazebo topic: /videoray_pro4/thrusters/0/input
[Msg]   - Thrust output Gazebo topic: /videoray_pro4/thrusters/0/thrust
[Msg] Thruster #1 initialized
[Msg]   - Link: videoray_pro4/thruster_1
[Msg]   - Robot model: videoray_pro4
[Msg]   - Input command Gazebo topic: /videoray_pro4/thrusters/1/input
[Msg]   - Thrust output Gazebo topic: /videoray_pro4/thrusters/1/thrust
[Msg] Thruster #2 initialized
[Msg]   - Link: videoray_pro4/thruster_2
[Msg]   - Robot model: videoray_pro4
[Msg]   - Input command Gazebo topic: /videoray_pro4/thrusters/2/input
[Msg]   - Thrust output Gazebo topic: /videoray_pro4/thrusters/2/thrust
[Msg] JointStatePublisher::robotNamespace=videoray_pro4

Dans le terminal du propulseur, je vois :

process[videoray_pro4/thruster_allocator-1]: started with pid [26422]
[INFO] [1500390755.909692, 0.000000]: ThrusterManager::update_rate=50
output_dir= /home/andrew/Development/ underwater_ws/install/share/videoray_description/config/videoray_pro4
ThrusterManager: updating thruster poses
conversion_fcn= proportional
conversion_fcn_params= {'gain': 0.00031}
transform: /videoray_pro4/base_link -> /videoray_pro4/thruster_0
could not get transform from: /videoray_pro4/base_link
to: /videoray_pro4/thruster_0
[]

Je viens de lancer rosrun tf view_frames et c'était la sortie. Je vois l'arbre TF montrer une transformation entre le base_link et le propulseur...
cadres.pdf

Les trames entre le monde et le base_link du véhicule sont générées par le nœud message_to_tf , qui fait partie du package hector_localization . L'exemple de fichier de lancement du modèle RexROV est celui-ci

https://github.com/uuvsimulator/uuv_simulator/blob/master/uuv_descriptions/models/rexrov/launch/upload_rexrov_default.launch#L31

Comment avez-vous indiqué cela dans le fichier de lancement ?

@musamarcusso Selon le didacticiel wiki, j'ai appelé la transformation comme suit :

<!-- Publish state and tf for in relation to the world frame -->
            <group ns="$(arg namespace)">
                <node name="ground_truth_to_tf" pkg="message_to_tf" type="message_to_tf" output="screen">
                    <param name="odometry_topic" value="/$(arg namespace)/pose_gt" />
                    <param name="frame_id" value="/$(arg world_frame)" />
                    <param name="tf_prefix" value="$(arg namespace)" />
                </node>
            </group>

Cela semble différent de la ligne que vous avez appelée ci-dessus. Je vais essayer ça maintenant.

Pouvez-vous essayer de remplacer le bloc que vous m'avez envoyé par ceci

<include file="$(find uuv_descriptions)/models/common/launch/message_to_tf.launch">
    <arg name="namespace" value="$(arg namespace)"/>
</include>

Si ce correctif fonctionne, je corrigerai le tutoriel tout de suite.

J'ai essayé de remplacer mon bloc par votre bloc, mais cela ne fonctionnait pas. La seule façon dont cela fonctionnait était que les deux blocs soient appelés ensemble.

VelocityControllerNode: initializing node Thruster #0 - proportional - thrusters/0/input transform: /videoray_pro4/base_link -> /videoray_pro4/thruster_1 Thruster #1 - proportional - thrusters/1/input transform: /videoray_pro4/base_link -> /videoray_pro4/thruster_2 Thruster #2 - proportional - thrusters/2/input transform: /videoray_pro4/base_link -> /videoray_pro4/thruster_3 could not get transform from: /videoray_pro4/base_link to: /videoray_pro4/thruster_3 [<uuv_thrusters.models.thruster_proportional.ThrusterProportional object at 0x7efc4bdb8a50>, <uuv_thrusters.models.thruster_proportional.ThrusterProportional object at 0x7efc4bdb8c10>, <uuv_thrusters.models.thruster_proportional.ThrusterProportional object at 0x7efc4bd4c190>] TAM= [[ 1. 0. 0. ] [ 0. 0. 0. ] [ 0. 0.99999968 0.99999968] [ 0. 0.09999997 -0.09999997] [ 0.1 0.15249995 0.15249995] [ 0. 0. 0. ]] ThrusterManager: ready ThrusterManager: ready
Maintenant, je dois voir pourquoi il ne peut pas obtenir le TF du propulseur 3.

Je peux lancer ma version du joy_velocity.launch , mais je ne parviens pas à contrôler le véhicule avec ma manette.

J'ai essayé de déboguer des choses et je compare les résultats de la visualisation rqt_graph des nœuds. Ce sont les deux réseaux que je vois. Je ne sais pas pourquoi cela ne fonctionne pas exactement.

videoray2
rexrov

Une autre mise à jour que je viens de réaliser:

Le wiki appelle : <xacro:property name="prop_mesh_file" value="file://$(find uuv_descriptions_example)/models/rov_example/mesh/propeller.dae"/>

Devrait être : <xacro:property name="prop_mesh_file" value="file://$(find uuv_descriptions)/models/rexrov/mesh/prop.dae"/>

Salut @atomoclast ,

non, c'est correct dans le tuto. L'exemple du tutoriel n'est pas un exemple fonctionnel, c'est pourquoi j'ai mis ce README.md dans le dossier mesh, donc ce prop_mesh_file doit être édité par la personne qui crée le nouveau modèle de véhicule.
Le joy_velocity est défini par défaut pour le mappage du contrôleur XBox. Quel est le modèle de la manette que tu as ?
Avez-vous vos fichiers quelque part dans Github ? Je pourrais essayer de l'exécuter et vous donner un retour.

@musamarcusso J'ai téléchargé le dépôt ici : https://github.com/atomoclast/videoray_description/tree/feature/DEEP-291

Bonjour @musamarcusso , avez-vous déjà eu l'occasion de parcourir ce repo ?

Oui, je l'ai cloné. Je donnerai un retour plus tard dans la journée.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Timple picture Timple  ·  7Commentaires

tve picture tve  ·  17Commentaires

hughhugh picture hughhugh  ·  5Commentaires

dbcesar picture dbcesar  ·  5Commentaires

HashirZahir picture HashirZahir  ·  10Commentaires