HEBI C++ API  3.9.0
kinematics_helper.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Eigen/Dense"
4 
5 #include "robot_model.hpp"
6 
7 namespace hebi {
8 namespace experimental {
9 namespace arm {
10 namespace internal {
11 
12 // A small helper class for computing IK and storing preferences about how this is done.
14 
15 public:
16  void setJointLimits(
17  const robot_model::RobotModel& robot_model,
18  const Eigen::VectorXd& min_positions,
19  const Eigen::VectorXd& max_positions);
20 
21  void clearJointLimits();
22 
23  Eigen::Vector3d FK3Dof(
24  const robot_model::RobotModel& robot_model,
25  const Eigen::VectorXd& positions) const;
26 
27  void FK5Dof(
28  const robot_model::RobotModel& robot_model,
29  const Eigen::VectorXd& positions,
30  Eigen::Vector3d& xyz_out,
31  Eigen::Vector3d& tip_axis) const;
32 
33  void FK6Dof(
34  const robot_model::RobotModel& robot_model,
35  const Eigen::VectorXd& positions,
36  Eigen::Vector3d& xyz_out,
37  Eigen::Matrix3d& orientation) const;
38 
39  Eigen::VectorXd solveIK3Dof(
40  const robot_model::RobotModel& robot_model,
41  const Eigen::VectorXd& initial_positions,
42  const Eigen::Vector3d& target_xyz) const;
43 
44  Eigen::VectorXd solveIK5Dof(
45  const robot_model::RobotModel& robot_model,
46  const Eigen::VectorXd& initial_positions,
47  const Eigen::Vector3d& target_xyz,
48  const Eigen::Vector3d& end_tip) const;
49 
50  Eigen::VectorXd solveIK6Dof(
51  const robot_model::RobotModel& robot_model,
52  const Eigen::VectorXd& initial_positions,
53  const Eigen::Vector3d& target_xyz,
54  const Eigen::Matrix3d& orientation) const;
55 
56 private:
57  bool use_joint_limits_{};
58  Eigen::VectorXd min_positions_{};
59  Eigen::VectorXd max_positions_{};
60 };
61 
62 } // namespace internal
63 } // namespace arm
64 } // namespace experimental
65 } // namespace hebi
Eigen::VectorXd solveIK6Dof(const robot_model::RobotModel &robot_model, const Eigen::VectorXd &initial_positions, const Eigen::Vector3d &target_xyz, const Eigen::Matrix3d &orientation) const
Definition: kinematics_helper.cpp:98
void FK6Dof(const robot_model::RobotModel &robot_model, const Eigen::VectorXd &positions, Eigen::Vector3d &xyz_out, Eigen::Matrix3d &orientation) const
Definition: kinematics_helper.cpp:147
void clearJointLimits()
Definition: kinematics_helper.cpp:38
Definition: kinematics_helper.hpp:13
Eigen::VectorXd solveIK5Dof(const robot_model::RobotModel &robot_model, const Eigen::VectorXd &initial_positions, const Eigen::Vector3d &target_xyz, const Eigen::Vector3d &end_tip) const
Definition: kinematics_helper.cpp:70
void FK5Dof(const robot_model::RobotModel &robot_model, const Eigen::VectorXd &positions, Eigen::Vector3d &xyz_out, Eigen::Vector3d &tip_axis) const
Definition: kinematics_helper.cpp:135
Definition: arm.cpp:8
Eigen::VectorXd solveIK3Dof(const robot_model::RobotModel &robot_model, const Eigen::VectorXd &initial_positions, const Eigen::Vector3d &target_xyz) const
Definition: kinematics_helper.cpp:45
Represents a chain or tree of robot elements (rigid bodies and joints).
Definition: robot_model.hpp:412
Eigen::Vector3d FK3Dof(const robot_model::RobotModel &robot_model, const Eigen::VectorXd &positions) const
Definition: kinematics_helper.cpp:126
void setJointLimits(const robot_model::RobotModel &robot_model, const Eigen::VectorXd &min_positions, const Eigen::VectorXd &max_positions)
Definition: kinematics_helper.cpp:8