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 ?
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.
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
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.
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.