Mujoco C++ : Lister tous les corps
Cet exemple simple montre comment charger un modèle MuJoCo depuis un fichier XML et lister tous les corps du modèle avec leurs identifiants.
list_bodies.cpp
#include <mujoco/mujoco.h>
#include <cstdio>
int main(int argc, char** argv) {
// Vérifier les arguments
if (argc < 2) {
printf("Utilisation : %s modele.xml\n", argv[0]);
return 1;
}
// Charger le modèle
char error[1000] = "Impossible de charger le modèle binaire";
mjModel* m = mj_loadXML(argv[1], nullptr, error, 1000);
if (!m) {
printf("%s\n", error);
return 1;
}
// Créer les données
mjData* d = mj_makeData(m);
// Boucler sur tous les corps
printf("Corps dans le modèle :\n");
for (int i = 0; i < m->nbody; i++) {
const char* name = mj_id2name(m, mjOBJ_BODY, i);
if (name)
printf(" id %d : %s\n", i, name);
else
printf(" id %d : (sans nom)\n", i);
}
// Libérer les structures MuJoCo
mj_deleteData(d);
mj_deleteModel(m);
return 0;
}Comment compiler
build.sh
g++ -o list_bodies list_bodies.cpp -lmujoco -I/opt/mujoco/include -L/opt/mujoco/lib -Wl,-rpath,/opt/mujoco/libExemple d’utilisation
run_example.sh
./list_bodies ~/mujoco_menagerie/franka_fr3/fr3.xml
Corps dans le modèle :
id 0: world
id 1: base
id 2: fr3_link0
id 3: fr3_link1
id 4: fr3_link2
id 5: fr3_link3
id 6: fr3_link4
id 7: fr3_link5
id 8: fr3_link6
id 9: fr3_link7Si cet article vous a aidé, pensez à m'offrir un café ou à faire un don via PayPal pour soutenir la recherche et la publication de nouveaux articles sur TechOverflow