MoveIt!入门教程-运动学模型(Kinematic Model)
说明
通过 C++ API来应用kinematics
RobotModel和RobotState类
利用PR2的右臂来演示类的使用
使用
开始
设置开始使用RobotModel类是很容易的。在一般情况下,你会发现,最高级的组件将返回一个共享指针给RobotModel类。你应该总是在可能的情况下使用它。在这个示例中,我们将从这样一个共享指针开始,只讨论基本的。您可以查看这些类的实际代码类以获取更多关于如何使用这些类功能的更多信息。
我们开始实例化RobotModelLoader对象,它从ROS参数服务器查找机器人描述和构建我们要使用的机器人模型
robot_model_loader::RobotModelLoader robot_model_loader("robot_description");
robot_model::RobotModelPtr kinematic_model = robot_model_loader.getModel();
ROS_INFO("Model frame: %s", kinematic_model->getModelFrame().c_str());
使用 RobotModel, 我们可构建RobotState维护机器人的配置。我们在状态中设置所有关节为默认值。我们能获得一个 JointModelGroup, 它显示机器人模型在特定组,比如: PR2机器人“right_arm” .
robot_state::RobotStatePtr kinematic_state(new robot_state::RobotState(kinematic_model));
kinematic_state->setToDefaultValues();
const robot_state::JointModelGroup* joint_model_group = kinematic_model->getJointModelGroup("right_arm");
const std::vector<:string> &joint_names = joint_model_group->getJointModelNames();
获得关节值
我们可以获取保持在状态中右臂的关节的设置值
std::vector joint_values;
kinematic_state->copyJointGroupPositions(joint_model_group, joint_values