From ff1046028268cba5355a6c75107d30dc27315e84 Mon Sep 17 00:00:00 2001 From: Valenza Florian <fvalenza@laas.fr> Date: Tue, 21 Jun 2016 13:09:05 +0200 Subject: [PATCH] [C++] bodies are now a subpart of the Frames : some Frames are of type BODY and when referring to getBodyId/Name in Model it will look in its frames --- src/multibody/model.hpp | 30 +++--- src/multibody/model.hxx | 30 ++++-- src/multibody/parser/sample-models.cpp | 90 ++++++++-------- src/multibody/parser/urdf-with-geometry.hxx | 4 +- src/multibody/parser/urdf.hxx | 2 +- src/python/model.hpp | 12 --- unittest/dynamics.cpp | 24 ++--- unittest/geom.cpp | 4 +- unittest/jacobian.cpp | 8 +- unittest/joint-configurations.cpp | 108 ++++++++++---------- unittest/joints.cpp | 8 +- 11 files changed, 162 insertions(+), 158 deletions(-) diff --git a/src/multibody/model.hpp b/src/multibody/model.hpp index 988542aef..7fedd7e27 100644 --- a/src/multibody/model.hpp +++ b/src/multibody/model.hpp @@ -75,24 +75,15 @@ namespace se3 /// \brief Placement (SE3) of the input of joint <i> regarding to the parent joint output <li>. std::vector<SE3> jointPlacements; - /// \brief Placement (SE3) of the body <i> regarding to the parent joint output <li>. - std::vector<SE3> bodyPlacements; - /// \brief Model of joint <i>. JointModelVector joints; /// \brief Joint parent of joint <i>, denoted <li> (li==parents[i]). std::vector<JointIndex> parents; - /// \brief Joint parent of body <i> - std::vector<JointIndex> bodyParents; - /// \brief Name of joint <i> std::vector<std::string> names; - /// \brief Name of the body attached to the output of joint <i>. - std::vector<std::string> bodyNames; - /// \brief Vector of maximal joint torques Eigen::VectorXd effortLimit; /// \brief Vector of maximal joint velocities @@ -122,13 +113,10 @@ namespace se3 , jointPlacements(1) , joints(1) , parents(1) - , bodyParents(1) , names(1) - , bodyNames(1) , gravity( gravity981,Eigen::Vector3d::Zero() ) { names[0] = "universe"; // Should be "universe joint (trivial)" - bodyNames[0] = "universe"; } ~Model() {} // std::cout << "Destroy model" << std::endl; } @@ -319,6 +307,24 @@ namespace se3 /// \return /// JointIndex getFrameParent(const FrameIndex index) const; + + /// + /// \brief Get the type of the frame given by its index. + /// + /// \param[in] name Name of the frame. + /// + /// \return + /// + FrameType getFrameType(const std::string & name) const; + + /// + /// \brief Get the type of the frame given by its index. + /// + /// \param[in] index Index of the frame. + /// + /// \return + /// + FrameType getFrameType(const FrameIndex index) const; /// /// \brief Return the relative placement between a frame and its supporting joint. diff --git a/src/multibody/model.hxx b/src/multibody/model.hxx index afb44446f..4126cadcc 100644 --- a/src/multibody/model.hxx +++ b/src/multibody/model.hxx @@ -140,9 +140,6 @@ namespace se3 inertias[parent] += iYf; addFrame((bodyName!="")?bodyName:random(8), parent, bodyPlacement, BODY); - bodyParents.push_back(parent); - bodyPlacements.push_back(bodyPlacement); - bodyNames.push_back( (bodyName!="")?bodyName:random(8)); nbody ++; } @@ -153,22 +150,18 @@ namespace se3 inline Model::JointIndex Model::getBodyId (const std::string & name) const { - std::vector<std::string>::iterator::difference_type - res = std::find(bodyNames.begin(),bodyNames.end(),name) - bodyNames.begin(); - assert( (res<INT_MAX) && "Id superior to int range. Should never happen."); - assert( (res>=0)&&(res<nbody) && "The body name you asked does not exist" ); - return Model::JointIndex(res); + return getFrameId(name); } inline bool Model::existBodyName (const std::string & name) const { - return (bodyNames.end() != std::find(bodyNames.begin(),bodyNames.end(),name)); + return existFrame(name); } inline const std::string& Model::getBodyName (const Model::JointIndex index) const { assert( index < (Model::Index)nbody ); - return bodyNames[index]; + return getFrameName(index); } inline Model::JointIndex Model::getJointId (const std::string & name) const @@ -227,6 +220,23 @@ namespace se3 return operational_frames[index].parent; } + inline FrameType Model::getFrameType( const std::string & name ) const + { + assert(existFrame(name) && "The Frame you requested does not exist"); + std::vector<Frame>::const_iterator it = std::find_if( operational_frames.begin() + , operational_frames.end() + , boost::bind(&Frame::name, _1) == name + ); + + std::vector<Frame>::iterator::difference_type it_diff = it - operational_frames.begin(); + return getFrameType(Model::JointIndex(it_diff)); + } + + inline FrameType Model::getFrameType( const FrameIndex index ) const + { + return operational_frames[index].type; + } + inline const SE3 & Model::getFramePlacement( const std::string & name) const { assert(existFrame(name) && "The Frame you requested does not exist"); diff --git a/src/multibody/parser/sample-models.cpp b/src/multibody/parser/sample-models.cpp index 8c409456e..d9af943db 100644 --- a/src/multibody/parser/sample-models.cpp +++ b/src/multibody/parser/sample-models.cpp @@ -29,34 +29,34 @@ namespace se3 void humanoid2d(Model& model) { - model.addJointAndBody(model.getBodyId("universe"),JointModelRX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("universe"),JointModelRX(),SE3::Identity(),Inertia::Random(), "ff1_joint", "ff1_body"); - model.addJointAndBody(model.getBodyId("ff1_body"),JointModelRY(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("ff1_joint"),JointModelRY(),SE3::Identity(),Inertia::Random(), "root_joint", "root_body"); - model.addJointAndBody(model.getBodyId("root_body"),JointModelRZ(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("root_joint"),JointModelRZ(),SE3::Random(),Inertia::Random(), "lleg1_joint", "lleg1_body"); - model.addJointAndBody(model.getBodyId("lleg1_body"),JointModelRY(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("lleg1_joint"),JointModelRY(),SE3::Random(),Inertia::Random(), "lleg2_joint", "lleg2_body"); - model.addJointAndBody(model.getBodyId("root_body"),JointModelRZ(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("root_joint"),JointModelRZ(),SE3::Random(),Inertia::Random(), "rleg1_joint", "rleg1_body"); - model.addJointAndBody(model.getBodyId("rleg1_body"),JointModelRY(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("rleg1_joint"),JointModelRY(),SE3::Random(),Inertia::Random(), "rleg2_joint", "rleg2_body"); - model.addJointAndBody(model.getBodyId("root_body"),JointModelRY(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("root_joint"),JointModelRY(),SE3::Random(),Inertia::Random(), "torso1_joint", "torso1_body"); - model.addJointAndBody(model.getBodyId("torso1_body"),JointModelRZ(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("torso1_joint"),JointModelRZ(),SE3::Random(),Inertia::Random(), "chest_joint", "chest_body"); - model.addJointAndBody(model.getBodyId("chest_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("chest_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), "rarm1_joint", "rarm1_body"); - model.addJointAndBody(model.getBodyId("rarm1_body"),JointModelRZ(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("rarm1_joint"),JointModelRZ(),SE3::Random(),Inertia::Random(), "rarm2_joint", "rarm2_body"); - model.addJointAndBody(model.getBodyId("chest_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("chest_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), "larm1_joint", "larm1_body"); - model.addJointAndBody(model.getBodyId("larm1_body"),JointModelRZ(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("larm1_joint"),JointModelRZ(),SE3::Random(),Inertia::Random(), "larm2_joint", "larm2_body"); } @@ -64,22 +64,22 @@ namespace se3 { if(! usingFF ) { - model.addJointAndBody(model.getBodyId("universe"),JointModelRX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("universe"),JointModelRX(),SE3::Identity(),Inertia::Random(), "ff1_joint", "ff1_body"); - model.addJointAndBody(model.getBodyId("ff1_body"),JointModelRY(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("ff1_joint"),JointModelRY(),SE3::Identity(),Inertia::Random(), "ff2_joint", "ff2_body"); - model.addJointAndBody(model.getBodyId("ff2_body"),JointModelRZ(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("ff2_joint"),JointModelRZ(),SE3::Identity(),Inertia::Random(), "ff3_joint", "ff3_body"); - model.addJointAndBody(model.getBodyId("ff3_body"),JointModelRZ(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("ff3_joint"),JointModelRZ(),SE3::Random(),Inertia::Random(), "ff4_joint", "ff4_body"); - model.addJointAndBody(model.getBodyId("ff4_body"),JointModelRY(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("ff4_joint"),JointModelRY(),SE3::Identity(),Inertia::Random(), "ff5_joint", "ff5_body"); - model.addJointAndBody(model.getBodyId("ff5_body"),JointModelRX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("ff5_joint"),JointModelRX(),SE3::Identity(),Inertia::Random(), "root_joint", "root_body"); } else { - model.addJointAndBody(model.getBodyId("universe"),JointModelFreeFlyer(), + model.addJointAndBody(model.getJointId("universe"),JointModelFreeFlyer(), SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Zero(6), 1e3 * (Eigen::VectorXd::Random(6).array() + 1), 1e3 * (Eigen::VectorXd::Random(7).array() - 1), @@ -87,111 +87,111 @@ namespace se3 "root_joint", "root_body"); } - model.addJointAndBody(model.getBodyId("root_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("root_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "lleg1_joint", "lleg1_body"); - model.addJointAndBody(model.getBodyId("lleg1_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("lleg1_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "lleg2_joint", "lleg2_body"); - model.addJointAndBody(model.getBodyId("lleg2_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("lleg2_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "lleg3_joint", "lleg3_body"); - model.addJointAndBody(model.getBodyId("lleg3_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("lleg3_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "lleg4_joint", "lleg4_body"); - model.addJointAndBody(model.getBodyId("lleg4_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("lleg4_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "lleg5_joint", "lleg5_body"); - model.addJointAndBody(model.getBodyId("lleg5_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("lleg5_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "lleg6_joint", "lleg6_body"); - model.addJointAndBody(model.getBodyId("root_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("root_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "rleg1_joint", "rleg1_body"); - model.addJointAndBody(model.getBodyId("rleg1_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("rleg1_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "rleg2_joint", "rleg2_body"); - model.addJointAndBody(model.getBodyId("rleg2_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("rleg2_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "rleg3_joint", "rleg3_body"); - model.addJointAndBody(model.getBodyId("rleg3_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("rleg3_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "rleg4_joint", "rleg4_body"); - model.addJointAndBody(model.getBodyId("rleg4_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("rleg4_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "rleg5_joint", "rleg5_body"); - model.addJointAndBody(model.getBodyId("rleg5_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("rleg5_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "rleg6_joint", "rleg6_body"); - model.addJointAndBody(model.getBodyId("root_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("root_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "torso1_joint", "torso1_body"); - model.addJointAndBody(model.getBodyId("torso1_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("torso1_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "chest_joint", "chest_body"); - model.addJointAndBody(model.getBodyId("chest_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("chest_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "rarm1_joint", "rarm1_body"); - model.addJointAndBody(model.getBodyId("rarm1_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("rarm1_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "rarm2_joint", "rarm2_body"); - model.addJointAndBody(model.getBodyId("rarm2_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("rarm2_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "rarm3_joint", "rarm3_body"); - model.addJointAndBody(model.getBodyId("rarm3_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("rarm3_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "rarm4_joint", "rarm4_body"); - model.addJointAndBody(model.getBodyId("rarm4_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("rarm4_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "rarm5_joint", "rarm5_body"); - model.addJointAndBody(model.getBodyId("rarm5_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("rarm5_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "rarm6_joint", "rarm6_body"); - model.addJointAndBody(model.getBodyId("chest_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("chest_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "larm1_joint", "larm1_body"); - model.addJointAndBody(model.getBodyId("larm1_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("larm1_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "larm2_joint", "larm2_body"); - model.addJointAndBody(model.getBodyId("larm2_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("larm2_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "larm3_joint", "larm3_body"); - model.addJointAndBody(model.getBodyId("larm3_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("larm3_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "larm4_joint", "larm4_body"); - model.addJointAndBody(model.getBodyId("larm4_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("larm4_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "larm5_joint", "larm5_body"); - model.addJointAndBody(model.getBodyId("larm5_body"),JointModelRX(),SE3::Random(),Inertia::Random(), + model.addJointAndBody(model.getJointId("larm5_joint"),JointModelRX(),SE3::Random(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "larm6_joint", "larm6_body"); diff --git a/src/multibody/parser/urdf-with-geometry.hxx b/src/multibody/parser/urdf-with-geometry.hxx index edd08a87b..9cd4e7d3c 100644 --- a/src/multibody/parser/urdf-with-geometry.hxx +++ b/src/multibody/parser/urdf-with-geometry.hxx @@ -125,7 +125,7 @@ namespace se3 fcl::CollisionObject collision_object = retrieveCollisionGeometry((*i)->geometry, package_dirs, mesh_path); SE3 geomPlacement = convertFromUrdf((*i)->origin); std::string collision_object_name = link_name; - geom_model.addCollisionObject(model.bodyParents[model.getBodyId(link_name)], collision_object, geomPlacement, collision_object_name, mesh_path); + geom_model.addCollisionObject(model.getFrameParent(link_name), collision_object, geomPlacement, collision_object_name, mesh_path); } } // if(link->collision) @@ -144,7 +144,7 @@ namespace se3 fcl::CollisionObject visual_object = retrieveCollisionGeometry((*i)->geometry, package_dirs, mesh_path); SE3 geomPlacement = convertFromUrdf((*i)->origin); std::string visual_object_name = link_name; - geom_model.addVisualObject(model.bodyParents[model.getBodyId(link_name)], visual_object, geomPlacement, visual_object_name, mesh_path); + geom_model.addVisualObject(model.getFrameParent(link_name), visual_object, geomPlacement, visual_object_name, mesh_path); } } // if(link->visual) diff --git a/src/multibody/parser/urdf.hxx b/src/multibody/parser/urdf.hxx index 54ff468f6..afe200f14 100644 --- a/src/multibody/parser/urdf.hxx +++ b/src/multibody/parser/urdf.hxx @@ -371,7 +371,7 @@ namespace se3 // Add a frame in the model to keep trace of this fixed joint - model.addFrame(joint->name, parent_joint_id, nextPlacementOffset); + model.addFrame(joint->name, parent_joint_id, nextPlacementOffset, FIXED_JOINT); //for the children of the current link, set their parent to be //the the parent of the current link. diff --git a/src/python/model.hpp b/src/python/model.hpp index 92dc9a685..9857cdb26 100644 --- a/src/python/model.hpp +++ b/src/python/model.hpp @@ -110,24 +110,15 @@ namespace se3 .add_property("jointPlacements", bp::make_function(&ModelPythonVisitor::jointPlacements, bp::return_internal_reference<>()) ) - .add_property("bodyPlacements", - bp::make_function(&ModelPythonVisitor::bodyPlacements, - bp::return_internal_reference<>()) ) .add_property("joints", bp::make_function(&ModelPythonVisitor::joints, bp::return_internal_reference<>()) ) .add_property("parents", bp::make_function(&ModelPythonVisitor::parents, bp::return_internal_reference<>()) ) - .add_property("bodyParents", - bp::make_function(&ModelPythonVisitor::bodyParents, - bp::return_internal_reference<>()) ) .add_property("names", bp::make_function(&ModelPythonVisitor::names, bp::return_internal_reference<>()) ) - .add_property("bodyNames", - bp::make_function(&ModelPythonVisitor::bodyNames, - bp::return_internal_reference<>()) ) .def("addJointAndBody",&ModelPythonVisitor::addJointAndBodyToModel) @@ -162,12 +153,9 @@ namespace se3 static int nbody( ModelHandler & m ) { return m->nbody; } static std::vector<Inertia> & inertias( ModelHandler & m ) { return m->inertias; } static std::vector<SE3> & jointPlacements( ModelHandler & m ) { return m->jointPlacements; } - static std::vector<SE3> & bodyPlacements( ModelHandler & m ) { return m->bodyPlacements; } static JointModelVector & joints( ModelHandler & m ) { return m->joints; } static std::vector<Model::JointIndex> & parents( ModelHandler & m ) { return m->parents; } - static std::vector<Model::JointIndex> & bodyParents( ModelHandler & m ) { return m->bodyParents; } static std::vector<std::string> & names ( ModelHandler & m ) { return m->names; } - static std::vector<std::string> & bodyNames ( ModelHandler & m ) { return m->bodyNames; } static Model::Index addJointAndBodyToModel(ModelHandler & modelPtr, Model::JointIndex idx, bp::object joint, diff --git a/unittest/dynamics.cpp b/unittest/dynamics.cpp index 9df57886d..56534de3f 100644 --- a/unittest/dynamics.cpp +++ b/unittest/dynamics.cpp @@ -49,15 +49,15 @@ BOOST_AUTO_TEST_CASE ( test_FD ) VectorXd v = VectorXd::Ones(model.nv); VectorXd tau = VectorXd::Zero(model.nv); - const std::string RF = "rleg6_body"; - const std::string LF = "lleg6_body"; + const std::string RF = "rleg6_joint"; + const std::string LF = "lleg6_joint"; Data::Matrix6x J_RF (6, model.nv); J_RF.setZero(); - getJacobian <true> (model, data, model.getBodyId(RF), J_RF); + getJacobian <true> (model, data, model.getJointId(RF), J_RF); Data::Matrix6x J_LF (6, model.nv); J_LF.setZero(); - getJacobian <true> (model, data, model.getBodyId(LF), J_LF); + getJacobian <true> (model, data, model.getJointId(LF), J_LF); Eigen::MatrixXd J (12, model.nv); J.setZero(); @@ -111,15 +111,15 @@ BOOST_AUTO_TEST_CASE ( test_ID ) VectorXd v_before = VectorXd::Ones(model.nv); - const std::string RF = "rleg6_body"; - const std::string LF = "lleg6_body"; + const std::string RF = "rleg6_joint"; + const std::string LF = "lleg6_joint"; Data::Matrix6x J_RF (6, model.nv); J_RF.setZero(); - getJacobian <true> (model, data, model.getBodyId(RF), J_RF); + getJacobian <true> (model, data, model.getJointId(RF), J_RF); Data::Matrix6x J_LF (6, model.nv); J_LF.setZero(); - getJacobian <true> (model, data, model.getBodyId(LF), J_LF); + getJacobian <true> (model, data, model.getJointId(LF), J_LF); Eigen::MatrixXd J (12, model.nv); J.setZero(); @@ -183,13 +183,13 @@ BOOST_AUTO_TEST_CASE (timings_fd_llt) VectorXd v = VectorXd::Ones(model.nv); VectorXd tau = VectorXd::Zero(model.nv); - const std::string RF = "rleg6_body"; - const std::string LF = "lleg6_body"; + const std::string RF = "rleg6_joint"; + const std::string LF = "lleg6_joint"; Data::Matrix6x J_RF (6, model.nv); - getJacobian <true> (model, data, model.getBodyId(RF), J_RF); + getJacobian <true> (model, data, model.getJointId(RF), J_RF); Data::Matrix6x J_LF (6, model.nv); - getJacobian <true> (model, data, model.getBodyId(LF), J_LF); + getJacobian <true> (model, data, model.getJointId(LF), J_LF); Eigen::MatrixXd J (12, model.nv); J.topRows<6> () = J_RF; diff --git a/unittest/geom.cpp b/unittest/geom.cpp index 0fbbebd6e..82ac54f9c 100644 --- a/unittest/geom.cpp +++ b/unittest/geom.cpp @@ -149,9 +149,9 @@ BOOST_AUTO_TEST_CASE ( simple_boxes ) using namespace se3; - model.addJointAndBody(model.getBodyId("universe"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("universe"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), "planar1_joint", "planar1_body"); - model.addJointAndBody(model.getBodyId("universe"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("universe"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), "planar2_joint", "planar2_body"); boost::shared_ptr<fcl::Box> Sample(new fcl::Box(1)); diff --git a/unittest/jacobian.cpp b/unittest/jacobian.cpp index 995d323be..1197d4691 100644 --- a/unittest/jacobian.cpp +++ b/unittest/jacobian.cpp @@ -43,7 +43,7 @@ BOOST_AUTO_TEST_CASE ( test_jacobian ) VectorXd q = VectorXd::Zero(model.nq); computeJacobians(model,data,q); - Model::Index idx = model.existBodyName("rarm2")?model.getBodyId("rarm2"):(Model::Index)(model.nbody-1); + Model::Index idx = model.existJointName("rarm2")?model.getJointId("rarm2"):(Model::Index)(model.nbody-1); Data::Matrix6x Jrh(6,model.nv); Jrh.fill(0); getJacobian<false>(model,data,idx,Jrh); @@ -110,7 +110,7 @@ BOOST_AUTO_TEST_CASE ( test_timings ) if( flag >> 1 & 1 ) { computeJacobians(model,data,q); - Model::Index idx = model.existBodyName("rarm6")?model.getBodyId("rarm6"):(Model::Index)(model.nbody-1); + Model::Index idx = model.existJointName("rarm6")?model.getJointId("rarm6"):(Model::Index)(model.nbody-1); Data::Matrix6x Jrh(6,model.nv); Jrh.fill(0); timer.tic(); @@ -125,7 +125,7 @@ BOOST_AUTO_TEST_CASE ( test_timings ) if( flag >> 2 & 1 ) { computeJacobians(model,data,q); - Model::Index idx = model.existBodyName("rarm6")?model.getBodyId("rarm6"):(Model::Index)(model.nbody-1); + Model::Index idx = model.existJointName("rarm6")?model.getJointId("rarm6"):(Model::Index)(model.nbody-1); Data::Matrix6x Jrh(6,model.nv); Jrh.fill(0); timer.tic(); @@ -140,7 +140,7 @@ BOOST_AUTO_TEST_CASE ( test_timings ) if( flag >> 3 & 1 ) { computeJacobians(model,data,q); - Model::Index idx = model.existBodyName("rarm6")?model.getBodyId("rarm6"):(Model::Index)(model.nbody-1); + Model::Index idx = model.existJointName("rarm6")?model.getJointId("rarm6"):(Model::Index)(model.nbody-1); Data::Matrix6x Jrh(6,model.nv); Jrh.fill(0); timer.tic(); diff --git a/unittest/joint-configurations.cpp b/unittest/joint-configurations.cpp index ddc6b6314..eda2868dd 100644 --- a/unittest/joint-configurations.cpp +++ b/unittest/joint-configurations.cpp @@ -70,23 +70,23 @@ BOOST_AUTO_TEST_CASE ( integration_test ) using namespace se3; - model.addJointAndBody(model.getBodyId("universe"),JointModelFreeFlyer(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("universe"),JointModelFreeFlyer(),SE3::Identity(),Inertia::Random(), "freeflyer_joint", "freeflyer_body"); - model.addJointAndBody(model.getBodyId("freeflyer_body"),JointModelSpherical(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("freeflyer_joint"),JointModelSpherical(),SE3::Identity(),Inertia::Random(), "spherical_joint", "spherical_body"); - model.addJointAndBody(model.getBodyId("spherical_body"),JointModelRX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("spherical_joint"),JointModelRX(),SE3::Identity(),Inertia::Random(), "revolute_joint", "revolute_body"); - model.addJointAndBody(model.getBodyId("revolute_body"),JointModelPX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("revolute_joint"),JointModelPX(),SE3::Identity(),Inertia::Random(), "px_joint", "px_body"); - model.addJointAndBody(model.getBodyId("px_body"),JointModelPrismaticUnaligned(Eigen::Vector3d(1,0,0)),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("px_joint"),JointModelPrismaticUnaligned(Eigen::Vector3d(1,0,0)),SE3::Identity(),Inertia::Random(), "pu_joint", "pu_body"); - model.addJointAndBody(model.getBodyId("pu_body"),JointModelRevoluteUnaligned(Eigen::Vector3d(0,0,1)),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("pu_joint"),JointModelRevoluteUnaligned(Eigen::Vector3d(0,0,1)),SE3::Identity(),Inertia::Random(), "ru_joint", "ru_body"); - model.addJointAndBody(model.getBodyId("ru_body"),JointModelSphericalZYX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("ru_joint"),JointModelSphericalZYX(),SE3::Identity(),Inertia::Random(), "sphericalZYX_joint", "sphericalZYX_body"); - model.addJointAndBody(model.getBodyId("sphericalZYX_body"),JointModelTranslation(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("sphericalZYX_joint"),JointModelTranslation(),SE3::Identity(),Inertia::Random(), "translation_joint", "translation_body"); - model.addJointAndBody(model.getBodyId("translation_body"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("translation_joint"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), "planar_joint", "planar_body"); se3::Data data(model); @@ -122,23 +122,23 @@ BOOST_AUTO_TEST_CASE ( interpolation_test ) using namespace se3; - model.addJointAndBody(model.getBodyId("universe"),JointModelFreeFlyer(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("universe"),JointModelFreeFlyer(),SE3::Identity(),Inertia::Random(), "freeflyer_joint", "freeflyer_body"); - model.addJointAndBody(model.getBodyId("freeflyer_body"),JointModelSpherical(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("freeflyer_joint"),JointModelSpherical(),SE3::Identity(),Inertia::Random(), "spherical_joint", "spherical_body"); - model.addJointAndBody(model.getBodyId("spherical_body"),JointModelRX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("spherical_joint"),JointModelRX(),SE3::Identity(),Inertia::Random(), "revolute_joint", "revolute_body"); - model.addJointAndBody(model.getBodyId("revolute_body"),JointModelPX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("revolute_joint"),JointModelPX(),SE3::Identity(),Inertia::Random(), "px_joint", "px_body"); - model.addJointAndBody(model.getBodyId("px_body"),JointModelPrismaticUnaligned(Eigen::Vector3d(1,0,0)),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("px_joint"),JointModelPrismaticUnaligned(Eigen::Vector3d(1,0,0)),SE3::Identity(),Inertia::Random(), "pu_joint", "pu_body"); - model.addJointAndBody(model.getBodyId("pu_body"),JointModelRevoluteUnaligned(Eigen::Vector3d(0,0,1)),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("pu_joint"),JointModelRevoluteUnaligned(Eigen::Vector3d(0,0,1)),SE3::Identity(),Inertia::Random(), "ru_joint", "ru_body"); - model.addJointAndBody(model.getBodyId("ru_body"),JointModelSphericalZYX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("ru_joint"),JointModelSphericalZYX(),SE3::Identity(),Inertia::Random(), "sphericalZYX_joint", "sphericalZYX_body"); - model.addJointAndBody(model.getBodyId("sphericalZYX_body"),JointModelTranslation(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("sphericalZYX_joint"),JointModelTranslation(),SE3::Identity(),Inertia::Random(), "translation_joint", "translation_body"); - model.addJointAndBody(model.getBodyId("translation_body"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("translation_joint"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), "planar_joint", "planar_body"); se3::Data data(model); @@ -233,23 +233,23 @@ BOOST_AUTO_TEST_CASE ( differentiation_test ) using namespace se3; - model.addJointAndBody(model.getBodyId("universe"),JointModelFreeFlyer(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("universe"),JointModelFreeFlyer(),SE3::Identity(),Inertia::Random(), "freeflyer_joint", "freeflyer_body"); - model.addJointAndBody(model.getBodyId("freeflyer_body"),JointModelSpherical(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("freeflyer_joint"),JointModelSpherical(),SE3::Identity(),Inertia::Random(), "spherical_joint", "spherical_body"); - model.addJointAndBody(model.getBodyId("spherical_body"),JointModelRX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("spherical_joint"),JointModelRX(),SE3::Identity(),Inertia::Random(), "revolute_joint", "revolute_body"); - model.addJointAndBody(model.getBodyId("revolute_body"),JointModelPX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("revolute_joint"),JointModelPX(),SE3::Identity(),Inertia::Random(), "px_joint", "px_body"); - model.addJointAndBody(model.getBodyId("px_body"),JointModelPrismaticUnaligned(Eigen::Vector3d(1,0,0)),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("px_joint"),JointModelPrismaticUnaligned(Eigen::Vector3d(1,0,0)),SE3::Identity(),Inertia::Random(), "pu_joint", "pu_body"); - model.addJointAndBody(model.getBodyId("pu_body"),JointModelRevoluteUnaligned(Eigen::Vector3d(0,0,1)),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("pu_joint"),JointModelRevoluteUnaligned(Eigen::Vector3d(0,0,1)),SE3::Identity(),Inertia::Random(), "ru_joint", "ru_body"); - model.addJointAndBody(model.getBodyId("ru_body"),JointModelSphericalZYX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("ru_joint"),JointModelSphericalZYX(),SE3::Identity(),Inertia::Random(), "sphericalZYX_joint", "sphericalZYX_body"); - model.addJointAndBody(model.getBodyId("sphericalZYX_body"),JointModelTranslation(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("sphericalZYX_joint"),JointModelTranslation(),SE3::Identity(),Inertia::Random(), "translation_joint", "translation_body"); - model.addJointAndBody(model.getBodyId("translation_body"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("translation_joint"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), "planar_joint", "planar_body"); se3::Data data(model); @@ -310,23 +310,23 @@ BOOST_AUTO_TEST_CASE ( distance_computation_test ) using namespace se3; - model.addJointAndBody(model.getBodyId("universe"),JointModelFreeFlyer(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("universe"),JointModelFreeFlyer(),SE3::Identity(),Inertia::Random(), "freeflyer_joint", "freeflyer_body"); - model.addJointAndBody(model.getBodyId("freeflyer_body"),JointModelSpherical(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("freeflyer_joint"),JointModelSpherical(),SE3::Identity(),Inertia::Random(), "spherical_joint", "spherical_body"); - model.addJointAndBody(model.getBodyId("spherical_body"),JointModelRX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("spherical_joint"),JointModelRX(),SE3::Identity(),Inertia::Random(), "revolute_joint", "revolute_body"); - model.addJointAndBody(model.getBodyId("revolute_body"),JointModelPX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("revolute_joint"),JointModelPX(),SE3::Identity(),Inertia::Random(), "px_joint", "px_body"); - model.addJointAndBody(model.getBodyId("px_body"),JointModelPrismaticUnaligned(Eigen::Vector3d(1,0,0)),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("px_joint"),JointModelPrismaticUnaligned(Eigen::Vector3d(1,0,0)),SE3::Identity(),Inertia::Random(), "pu_joint", "pu_body"); - model.addJointAndBody(model.getBodyId("pu_body"),JointModelRevoluteUnaligned(Eigen::Vector3d(0,0,1)),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("pu_joint"),JointModelRevoluteUnaligned(Eigen::Vector3d(0,0,1)),SE3::Identity(),Inertia::Random(), "ru_joint", "ru_body"); - model.addJointAndBody(model.getBodyId("ru_body"),JointModelSphericalZYX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("ru_joint"),JointModelSphericalZYX(),SE3::Identity(),Inertia::Random(), "sphericalZYX_joint", "sphericalZYX_body"); - model.addJointAndBody(model.getBodyId("sphericalZYX_body"),JointModelTranslation(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("sphericalZYX_joint"),JointModelTranslation(),SE3::Identity(),Inertia::Random(), "translation_joint", "translation_body"); - model.addJointAndBody(model.getBodyId("translation_body"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("translation_joint"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), "planar_joint", "planar_body"); se3::Data data(model); @@ -393,41 +393,41 @@ BOOST_AUTO_TEST_CASE ( uniform_sampling_test ) using namespace se3; - model.addJointAndBody(model.getBodyId("universe"),JointModelFreeFlyer(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("universe"),JointModelFreeFlyer(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Zero(6), 1e3 * (Eigen::VectorXd::Random(6).array() + 1), 1e3 * (Eigen::VectorXd::Random(7).array() - 1), 1e3 * (Eigen::VectorXd::Random(7).array() + 1), "freeflyer_joint", "freeflyer_body"); - model.addJointAndBody(model.getBodyId("freeflyer_body"),JointModelSpherical(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("freeflyer_joint"),JointModelSpherical(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Zero(3), 1e3 * (Eigen::VectorXd::Random(3).array() + 1), 1e3 * (Eigen::VectorXd::Random(4).array() - 1), 1e3 * (Eigen::VectorXd::Random(4).array() + 1), "spherical_joint", "spherical_body"); - model.addJointAndBody(model.getBodyId("spherical_body"),JointModelRX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("spherical_joint"),JointModelRX(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "revolute_joint", "revolute_body"); - model.addJointAndBody(model.getBodyId("revolute_body"),JointModelPX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("revolute_joint"),JointModelPX(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "px_joint", "px_body"); - model.addJointAndBody(model.getBodyId("px_body"),JointModelPrismaticUnaligned(Eigen::Vector3d(1,0,0)),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("px_joint"),JointModelPrismaticUnaligned(Eigen::Vector3d(1,0,0)),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "pu_joint", "pu_body"); - model.addJointAndBody(model.getBodyId("pu_body"),JointModelRevoluteUnaligned(Eigen::Vector3d(0,0,1)),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("pu_joint"),JointModelRevoluteUnaligned(Eigen::Vector3d(0,0,1)),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "ru_joint", "ru_body"); - model.addJointAndBody(model.getBodyId("ru_body"),JointModelSphericalZYX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("ru_joint"),JointModelSphericalZYX(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(3).array() + 1, Eigen::VectorXd::Random(3).array() + 1, Eigen::VectorXd::Random(3).array() - 1, Eigen::VectorXd::Random(3).array() + 1, "sphericalZYX_joint", "sphericalZYX_body"); - model.addJointAndBody(model.getBodyId("sphericalZYX_body"),JointModelTranslation(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("sphericalZYX_joint"),JointModelTranslation(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(3).array() + 1, Eigen::VectorXd::Random(3).array() + 1, Eigen::VectorXd::Random(3).array() - 1, Eigen::VectorXd::Random(3).array() + 1, "translation_joint", "translation_body"); - model.addJointAndBody(model.getBodyId("translation_body"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("translation_joint"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(3).array() + 1, Eigen::VectorXd::Random(3).array() + 1, Eigen::VectorXd::Random(3).array() - 1, Eigen::VectorXd::Random(3).array() + 1, "planar_joint", "planar_body"); @@ -450,41 +450,41 @@ BOOST_AUTO_TEST_CASE ( integrate_difference_test ) using namespace se3; - model.addJointAndBody(model.getBodyId("universe"),JointModelFreeFlyer(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("universe"),JointModelFreeFlyer(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Zero(6), 1e3 * (Eigen::VectorXd::Random(6).array() + 1), 1e3 * (Eigen::VectorXd::Random(7).array() - 1), 1e3 * (Eigen::VectorXd::Random(7).array() + 1), "freeflyer_joint", "freeflyer_body"); - model.addJointAndBody(model.getBodyId("freeflyer_body"),JointModelSpherical(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("freeflyer_joint"),JointModelSpherical(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Zero(3), 1e3 * (Eigen::VectorXd::Random(3).array() + 1), 1e3 * (Eigen::VectorXd::Random(4).array() - 1), 1e3 * (Eigen::VectorXd::Random(4).array() + 1), "spherical_joint", "spherical_body"); - model.addJointAndBody(model.getBodyId("spherical_body"),JointModelRX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("spherical_joint"),JointModelRX(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "revolute_joint", "revolute_body"); - model.addJointAndBody(model.getBodyId("revolute_body"),JointModelPX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("revolute_joint"),JointModelPX(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "px_joint", "px_body"); - model.addJointAndBody(model.getBodyId("px_body"),JointModelPrismaticUnaligned(Eigen::Vector3d(1,0,0)),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("px_joint"),JointModelPrismaticUnaligned(Eigen::Vector3d(1,0,0)),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "pu_joint", "pu_body"); - model.addJointAndBody(model.getBodyId("pu_body"),JointModelRevoluteUnaligned(Eigen::Vector3d(0,0,1)),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("pu_joint"),JointModelRevoluteUnaligned(Eigen::Vector3d(0,0,1)),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() + 1, Eigen::VectorXd::Random(1).array() - 1, Eigen::VectorXd::Random(1).array() + 1, "ru_joint", "ru_body"); - model.addJointAndBody(model.getBodyId("ru_body"),JointModelSphericalZYX(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("ru_joint"),JointModelSphericalZYX(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(3).array() + 1, Eigen::VectorXd::Random(3).array() + 1, Eigen::VectorXd::Random(3).array() - 1, Eigen::VectorXd::Random(3).array() + 1, "sphericalZYX_joint", "sphericalZYX_body"); - model.addJointAndBody(model.getBodyId("sphericalZYX_body"),JointModelTranslation(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("sphericalZYX_joint"),JointModelTranslation(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(3).array() + 1, Eigen::VectorXd::Random(3).array() + 1, Eigen::VectorXd::Random(3).array() - 1, Eigen::VectorXd::Random(3).array() + 1, "translation_joint", "translation_body"); - model.addJointAndBody(model.getBodyId("translation_body"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), + model.addJointAndBody(model.getJointId("translation_joint"),JointModelPlanar(),SE3::Identity(),Inertia::Random(), Eigen::VectorXd::Random(3).array() + 1, Eigen::VectorXd::Random(3).array() + 1, Eigen::VectorXd::Random(3).array() - 1, Eigen::VectorXd::Random(3).array() + 1, "planar_joint", "planar_body"); diff --git a/unittest/joints.cpp b/unittest/joints.cpp index a9dc9f87f..fe09c9a2d 100644 --- a/unittest/joints.cpp +++ b/unittest/joints.cpp @@ -386,7 +386,7 @@ BOOST_AUTO_TEST_CASE ( test_rnea ) Model model; Inertia inertia (1., Vector3 (0.5, 0., 0.0), Matrix3::Identity ()); - model.addJointAndBody (model.getBodyId("universe"), JointModelSphericalZYX (), SE3::Identity (), inertia, "root"); + model.addJointAndBody (model.getJointId("universe"), JointModelSphericalZYX (), SE3::Identity (), inertia, "root"); Data data (model); @@ -428,7 +428,7 @@ BOOST_AUTO_TEST_CASE ( test_crba ) Model model; Inertia inertia (1., Vector3 (0.5, 0., 0.0), Matrix3::Identity ()); - model.addJointAndBody (model.getBodyId("universe"), JointModelSphericalZYX (), SE3::Identity (), inertia, "root"); + model.addJointAndBody (model.getJointId("universe"), JointModelSphericalZYX (), SE3::Identity (), inertia, "root"); Data data (model); @@ -527,7 +527,7 @@ BOOST_AUTO_TEST_CASE ( test_rnea ) Model model; Inertia inertia (1., Vector3 (0.5, 0., 0.0), Matrix3::Identity ()); - model.addJointAndBody (model.getBodyId("universe"), JointModelPX(), SE3::Identity (), inertia, "root"); + model.addJointAndBody (model.getJointId("universe"), JointModelPX(), SE3::Identity (), inertia, "root"); Data data (model); @@ -572,7 +572,7 @@ BOOST_AUTO_TEST_CASE ( test_crba ) Model model; Inertia inertia (1., Vector3 (0.5, 0., 0.0), Matrix3::Identity ()); - model.addJointAndBody (model.getBodyId("universe"), JointModelPX (), SE3::Identity (), inertia, "root"); + model.addJointAndBody (model.getJointId("universe"), JointModelPX (), SE3::Identity (), inertia, "root"); Data data (model); -- GitLab