![]() |
Flexiv RDK APIs
2.1
|
Interface to obtain certain model data of the robot, including kinematics and dynamics. More...
#include <model.hpp>
Public Member Functions | |
| Model (const Robot &robot, const Eigen::Vector3d &gravity_vector=Eigen::Vector3d(0.0, 0.0, -9.81)) | |
| [Non-blocking] Instantiate the robot model interface. More... | |
| std::vector< std::string > | link_names () const |
| [Non-blocking] Names of all links in the robot model. More... | |
| std::vector< std::string > | joint_names () const |
| [Non-blocking] Names of all actuated joints in the robot model. More... | |
| void | Reload () |
| [Blocking] Reload (refresh) parameters of the robot model stored locally in this class using the latest data synced from the connected robot. Tool model is also synced. More... | |
| void | Update (const std::vector< double > &full_q, const std::vector< double > &full_dq) |
| [Non-blocking] Update the configuration (posture) of the locally-stored robot model so that the locally computed functions return results based on the updated configuration. More... | |
| Eigen::MatrixXd | dJ (const std::string &link_name) |
| [Non-blocking] Compute the time derivative of Jacobian matrix at the specified frame w.r.t. world frame. More... | |
| Eigen::MatrixXd | M () |
| [Non-blocking] Compute the mass matrix in generalized coordinates, i.e. joint space. More... | |
| Eigen::MatrixXd | C () |
| [Non-blocking] Compute the Coriolis/centripetal matrix in generalized coordinates, i.e. joint space. More... | |
| Eigen::VectorXd | g () |
| [Non-blocking] Compute the gravity force vector in generalized coordinates, i.e. joint space. More... | |
| Eigen::VectorXd | c () |
| [Non-blocking] Compute the Coriolis force vector in generalized coordinates, i.e. joint space. More... | |
| Eigen::MatrixXd | J (const std::string &link_name) |
| [Non-blocking] Compute the Jacobian matrix at the specified frame w.r.t. world frame. More... | |
| Eigen::Isometry3d | T (const std::string &link_name) |
| [Non-blocking] Compute the transformation matrix of the specified frame w.r.t. world frame. More... | |
| void | SyncURDF (const std::string &template_urdf_path) |
| [Blocking] Sync the actual kinematic parameters of the connected robot into the template URDF file. More... | |
| size_t | SyncKinematicsYAML (const std::string &template_yaml_path) |
| [Blocking] Sync the actual kinematic parameters of the connected robot into the template YAML file. More... | |
| IKResult | SolveConstrainedIK (const std::map< JointGroup, IKParams > &ik_params_by_group) |
| [Blocking] Solve constrained IK using one or more active joint groups. More... | |
| std::map< JointGroup, std::pair< double, double > > | configuration_score () const |
| [Blocking] Score of each joint group's current configuration (posture), calculated from the manipulability measurements. More... | |
| std::map< JointGroup, std::vector< Eigen::Vector3d > > | multi_contact_forces () const |
| [Non-blocking] Estimated multi-contact forces applied on each link of applicable joint groups, calculated using the force-torque sensors installed in every joint of the robot. More... | |
| std::map< JointGroup, std::vector< Eigen::Vector3d > > | multi_contact_positions () const |
| [Non-blocking] Estimated multi-contact positions on each link of applicable joint groups, calculated using the force-torque sensors installed in every joint of the robot. More... | |
Interface to obtain certain model data of the robot, including kinematics and dynamics.
| flexiv::rdk::Model::Model | ( | const Robot & | robot, |
| const Eigen::Vector3d & | gravity_vector = Eigen::Vector3d(0.0, 0.0, -9.81) |
||
| ) |
[Non-blocking] Instantiate the robot model interface.
| [in] | robot | Reference to the instance of flexiv::rdk::Robot. |
| [in] | gravity_vector | Earth's gravity vector in world frame. Default to \( [0.0, 0.0, -9.81]^T \). Unit: \( [m/s^2] \). |
| std::runtime_error | if the initialization sequence failed. |
| std::logic_error | if the connected robot does not have an RDK professional license; or the parsed robot model is not supported. |
| Eigen::MatrixXd flexiv::rdk::Model::C | ( | ) |
[Non-blocking] Compute the Coriolis/centripetal matrix in generalized coordinates, i.e. joint space.
| Eigen::VectorXd flexiv::rdk::Model::c | ( | ) |
[Non-blocking] Compute the Coriolis force vector in generalized coordinates, i.e. joint space.
| std::map<JointGroup, std::pair<double, double> > flexiv::rdk::Model::configuration_score | ( | ) | const |
[Blocking] Score of each joint group's current configuration (posture), calculated from the manipulability measurements.
| std::runtime_error | if failed to get a reply from the connected robot. |
| Eigen::MatrixXd flexiv::rdk::Model::dJ | ( | const std::string & | link_name | ) |
[Non-blocking] Compute the time derivative of Jacobian matrix at the specified frame w.r.t. world frame.
| [in] | link_name | Name of the link whose frame is the specified one. |
| std::invalid_argument | if [link_name] does not exist. |
| Eigen::VectorXd flexiv::rdk::Model::g | ( | ) |
[Non-blocking] Compute the gravity force vector in generalized coordinates, i.e. joint space.
| Eigen::MatrixXd flexiv::rdk::Model::J | ( | const std::string & | link_name | ) |
[Non-blocking] Compute the Jacobian matrix at the specified frame w.r.t. world frame.
| [in] | link_name | Name of the link whose frame is the specified one. |
| std::invalid_argument | if [link_name] does not exist. |
| std::vector<std::string> flexiv::rdk::Model::joint_names | ( | ) | const |
[Non-blocking] Names of all actuated joints in the robot model.
| std::vector<std::string> flexiv::rdk::Model::link_names | ( | ) | const |
[Non-blocking] Names of all links in the robot model.
| Eigen::MatrixXd flexiv::rdk::Model::M | ( | ) |
[Non-blocking] Compute the mass matrix in generalized coordinates, i.e. joint space.
| std::map<JointGroup, std::vector<Eigen::Vector3d> > flexiv::rdk::Model::multi_contact_forces | ( | ) | const |
[Non-blocking] Estimated multi-contact forces applied on each link of applicable joint groups, calculated using the force-torque sensors installed in every joint of the robot.
| std::map<JointGroup, std::vector<Eigen::Vector3d> > flexiv::rdk::Model::multi_contact_positions | ( | ) | const |
[Non-blocking] Estimated multi-contact positions on each link of applicable joint groups, calculated using the force-torque sensors installed in every joint of the robot.
| void flexiv::rdk::Model::Reload | ( | ) |
[Blocking] Reload (refresh) parameters of the robot model stored locally in this class using the latest data synced from the connected robot. Tool model is also synced.
| std::runtime_error | if failed to sync model data. |
| std::logic_error | if the synced robot model contains invalid data. |
| IKResult flexiv::rdk::Model::SolveConstrainedIK | ( | const std::map< JointGroup, IKParams > & | ik_params_by_group | ) |
[Blocking] Solve constrained IK using one or more active joint groups.
| [in] | ik_params_by_group | IK input parameters mapped by active joint group. Joint groups not included in this map are treated as inactive. Only single-arm joint groups like ARM_1 and ARM_2 are accepted. |
| std::invalid_argument | if input map is empty, if any joint group is not an existing single-arm joint group, or if any [seed_q] size does not match DoF of its joint group. |
| std::runtime_error | if failed to get a reply from the connected robot. |
| size_t flexiv::rdk::Model::SyncKinematicsYAML | ( | const std::string & | template_yaml_path | ) |
[Blocking] Sync the actual kinematic parameters of the connected robot into the template YAML file.
| [in] | template_yaml_path | Path to the template YAML file located at [flexiv_description/config/.../default_kinematics.yaml]. This template YAML file will be updated when the sync is finished. |
| std::invalid_argument | if failed to load the template YAML file. |
| std::runtime_error | if failed to sync the YAML file. |
| void flexiv::rdk::Model::SyncURDF | ( | const std::string & | template_urdf_path | ) |
[Blocking] Sync the actual kinematic parameters of the connected robot into the template URDF file.
| [in] | template_urdf_path | Path to the template URDF file that can be generated in flexiv_description. This template URDF file will be updated when the sync is finished. |
| std::invalid_argument | if failed to load the template URDF file. |
| std::runtime_error | if failed to sync the URDF file. |
| Eigen::Isometry3d flexiv::rdk::Model::T | ( | const std::string & | link_name | ) |
[Non-blocking] Compute the transformation matrix of the specified frame w.r.t. world frame.
| [in] | link_name | Name of the link whose frame is the specified one. |
| std::invalid_argument | if [link_name] does not exist. |
| void flexiv::rdk::Model::Update | ( | const std::vector< double > & | full_q, |
| const std::vector< double > & | full_dq | ||
| ) |
[Non-blocking] Update the configuration (posture) of the locally-stored robot model so that the locally computed functions return results based on the updated configuration.
| [in] | full_q | Current joint positions of the whole robot and matching the order of joint_names(): \( q \in \mathbb{R}^{n \times 1} \). Unit: \( [rad] \). |
| [in] | full_dq | Current joint velocities of the whole robot and matching the order of joint_names(): \( \dot{q} \in \mathbb{R}^{n \times 1} \). Unit: \( [rad/s] \). |
| std::invalid_argument | if size of any input vector does not match robot full DoF. |