1
$\begingroup$

When loading config files for move_group, it expects the kinematics to be loaded as a dict of type

{"robot_description_kinematics": self.kinematics}

On the other hand I have built my own node that calls to MoveIt Task Constructor and MoveIt itself to create a PlanningScene and plan some movements. This node expects the kinematics as:

{"_kinematics": self.kinematics}

Otherwise, RobotModelLoader it will complain that no kinematic is loaded, and address me to fill kinematics.yaml

Why there is this difference in parameter naming depending on how is MoveIt used? I've been checking the source code but I can't find where the name of said parameter is set.

$\endgroup$

1 Answer 1

0
$\begingroup$

Alright, I was creating RobotModelLoader like this

        const std::string robot_urdf = this->get_parameter("robot_description").as_string();
        const std::string robot_srdf = this->get_parameter("robot_description_semantic").as_string();
        robot_model_loader::RobotModelLoader::Options options(robot_urdf, robot_srdf);
        auto robot_model_loader = std::make_shared<robot_model_loader::RobotModelLoader>(node_ptr, options);

Apparently, calling this RobotModelLoader::Options constructor sets the "robot_description_" internal attribute to "", instead of the default value set in the other constructor ("robot_description"). This attribute is used to name the parameters.

$\endgroup$
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.