#include <MILDRobotModelWithExactIK.hpp>
Public Member Functions | |
PTUConfig | calculateCameraPoseCorrection (const RobotStatePtr &sourceRobotState, const SimpleVector3 &position, const SimpleQuaternion &orientation) |
Calculates the best approximation for the given camera pose from the current base position. More... | |
RobotStatePtr | calculateRobotState (const RobotStatePtr &sourceRobotState, const SimpleVector3 &position, const SimpleQuaternion &orientation) |
Calculates the inverse kinematics for the given camera pose. More... | |
MILDRobotModelWithExactIK () | |
constructor of the MILDRobotModelWithExactIK More... | |
void | setViewPointDistance (float viewPointDistance) |
Sets the distance between the desired view center point and the camera. More... | |
virtual | ~MILDRobotModelWithExactIK () |
destructor of the MILDRobotModelWithExactIK More... | |
Public Member Functions inherited from robot_model_services::MILDRobotModel | |
geometry_msgs::Pose | calculateCameraPose (const RobotStatePtr &sourceRobotState) |
Uses a given RobotState to calculate the camera frame. More... | |
float | getBase_RotationalMovementCosts (const RobotStatePtr &sourceRobotState, const RobotStatePtr &targetRobotState) |
float | getBase_TranslationalMovementCosts (const RobotStatePtr &sourceRobotState, const RobotStatePtr &targetRobotState) |
Calculates the movement costs from sourceRobotState to targetRobotState. Returns -1 if pose is not reachable. More... | |
geometry_msgs::Pose | getCameraPose () |
float | getDistance (const geometry_msgs::Point &sourcePosition, const geometry_msgs::Point &targetPosition) |
nav_msgs::Path | getNavigationPath (const geometry_msgs::Point &sourcePosition, const geometry_msgs::Point &targetPosition, double sourceRotationBase, double targetRotationBase) |
nav_msgs::Path | getNavigationPath (const geometry_msgs::Point &sourcePosition, const geometry_msgs::Point &targetPosition) |
float | getPTU_PanMovementCosts (const RobotStatePtr &sourceRobotState, const RobotStatePtr &targetRobotState) |
float | getPTU_TiltMovementCosts (const RobotStatePtr &sourceRobotState, const RobotStatePtr &targetRobotState) |
geometry_msgs::Pose | getRobotPose () |
bool | isPoseReachable (const SimpleVector3 &position, const SimpleQuaternion &orientation) |
bool | isPositionAllowed (const geometry_msgs::Point &position) |
bool | isPositionReachable (const geometry_msgs::Point &sourcePosition, const geometry_msgs::Point &targetPosition) |
MILDRobotModel () | |
constructor of the MILDRobotModel More... | |
void | setPanAngleLimits (float minAngleDegrees, float maxAngleDegrees) |
sets the angle limits of the pan angle. More... | |
void | setRotationAngleLimits (float minAngleDegrees, float maxAngleDegrees) |
sets the angle limits of the rotation angle. More... | |
void | setTiltAngleLimits (float minAngleDegrees, float maxAngleDegrees) |
sets the angle limits of the tilt angle. More... | |
virtual | ~MILDRobotModel () |
destructor of the MILDRobotModel More... | |
Public Member Functions inherited from robot_model_services::RobotModel | |
RobotStatePtr | calculateRobotState (const robot_model_services::SimpleVector3 &position, const robot_model_services::SimpleQuaternion &orientation) |
calculates the target robot state by assuming the saved current state of the roboter as source state More... | |
float | getBase_RotationalMovementCosts (const RobotStatePtr &targetRobotState) |
float | getBase_TranslationalMovementCosts (const RobotStatePtr &targetRobotState) |
RobotStatePtr | getCurrentRobotState () |
float | getPTU_PanMovementCosts (const RobotStatePtr &targetRobotState) |
float | getPTU_TiltMovementCosts (const RobotStatePtr &targetRobotState) |
RobotModel () | |
the constructor of the RobotModel object More... | |
void | setCurrentRobotState (const RobotStatePtr ¤tRobotState) |
virtual | ~RobotModel () |
the destructor of the RobotModel object More... | |
Public Attributes | |
ros::Publisher | vis_pub |
Private Member Functions | |
double | acosClamped (double value) |
double | getBaseAngleFromBaseFrame (Eigen::Affine3d &baseFrame) |
double | getPanAngleFromPanJointPose (Eigen::Affine3d &panJointFrame, MILDRobotStatePtr &robotState) |
bool | getTiltAngleAndTiltBasePointProjected (Eigen::Vector3d &planeNormal, Eigen::Vector3d &targetViewVector, Eigen::Vector3d &target_view_center_point, double &tilt, Eigen::Vector3d &tilt_base_point_projected) |
Eigen::Affine3d | getTiltJointFrame (Eigen::Vector3d &planeNormal, Eigen::Vector3d &targetViewVector, Eigen::Vector3d &tilt_base_point) |
void | resetIKVisualization () |
bool | setUpTFParameters () |
void | visualizeCameraPoseCorrection (Eigen::Vector3d &base_point, Eigen::Vector3d &base_orientation, Eigen::Vector3d &pan_joint_point, Eigen::Vector3d &pan_rotated_point, Eigen::Vector3d &tilt_base_point, Eigen::Vector3d &cam_point, Eigen::Vector3d &actual_view_center_point) |
void | visualizeIKArrow (Eigen::Vector3d &pointStart, Eigen::Vector3d &pointEnd, Eigen::Vector4d &colorRGBA, std::string ns, Eigen::Vector3d &scaleParameters, int id) |
void | visualizeIKArrowLarge (Eigen::Vector3d &pointStart, Eigen::Vector3d &pointEnd, Eigen::Vector4d &colorRGBA, std::string ns, int id) |
void | visualizeIKArrowSmall (Eigen::Vector3d &pointStart, Eigen::Vector3d &pointEnd, Eigen::Vector4d &colorRGBA, std::string ns, int id) |
void | visualizeIKcalculation (Eigen::Vector3d &base_point, Eigen::Vector3d &base_orientation, Eigen::Vector3d &pan_joint_point, Eigen::Vector3d &pan_rotated_point, Eigen::Vector3d &tilt_base_point, Eigen::Vector3d &tilt_base_point_projected, Eigen::Vector3d &cam_point, Eigen::Vector3d &actual_view_center_point) |
void | visualizeIKCameraTarget (Eigen::Vector3d &target_view_center_point, Eigen::Vector3d &target_camera_point) |
void | visualizeIKPoint (Eigen::Vector3d &point, Eigen::Vector4d &colorRGBA, std::string ns, int id) |
Private Attributes | |
Eigen::Affine3d | baseToPanEigen |
double | h_tilt |
IKRatingModulePtr | ikRatingModule |
const unsigned int | IKVisualizationMaximunIterationCount = 6 |
unsigned int | mIKVisualizationLastIterationCount = 0 |
float | mInverseKinematicIterationAccuracy |
double | mnTotalIKTime |
int | mNumberIKCalls |
double | mPanAngleOffset |
unsigned int | mPanAngleSamplingStepsPerIteration |
double | mTiltAngleOffset |
double | mViewPointDistance |
bool | mVisualizeIK |
Eigen::Affine3d | panToBaseEigen |
Eigen::Affine3d | panToTiltEigen |
bool | tfParametersInitialized |
Eigen::Affine3d | tiltToCameraEigen |
Eigen::Affine3d | tiltToPanEigen |
double | viewTriangleXYPlane_sideC |
double | viewTriangleZPlane_angleAlpha |
double | viewTriangleZPlane_angleGamma |
double | viewTriangleZPlane_sideA |
double | viewTriangleZPlane_sideB |
double | x_product |
Additional Inherited Members | |
Protected Attributes inherited from robot_model_services::MILDRobotModel | |
tf::TransformListener | listener |
DebugHelperPtr | mDebugHelperPtr |
std::string | mFrameName_map |
std::string | mFrameName_mild_base |
std::string | mFrameName_mild_camera_left |
std::string | mFrameName_mild_camera_mount_link |
std::string | mFrameName_mild_camera_right |
std::string | mFrameName_mild_ptu_base_link |
std::string | mFrameName_mild_ptu_pan_link |
std::string | mFrameName_mild_ptu_pan_link_rotated |
std::string | mFrameName_mild_ptu_tilt_link |
std::string | mFrameName_mild_ptu_tilt_link_rotated |
MapHelperPtr | mMapHelperPtr |
float | mOmegaPan |
float | mOmegaRot |
float | mOmegaTilt |
boost::tuple< float, float > | mPanLimits |
boost::tuple< float, float > | mRotationLimits |
float | mSigma |
boost::tuple< float, float > | mTiltLimits |
ros::NodeHandle | n |
ros::ServiceClient | navigationCostClient |
float | speedFactorBaseMove |
float | speedFactorBaseRot |
float | speedFactorPTU |
float | tolerance |
bool | useGlobalPlanner |
Definition at line 41 of file MILDRobotModelWithExactIK.hpp.
robot_model_services::MILDRobotModelWithExactIK::MILDRobotModelWithExactIK | ( | ) |
constructor of the MILDRobotModelWithExactIK
Definition at line 54 of file MILDRobotModelWithExactIK.cpp.
|
virtual |
destructor of the MILDRobotModelWithExactIK
Definition at line 116 of file MILDRobotModelWithExactIK.cpp.
|
private |
Helper: Calculates the acos of the value. If value is not within [-1, 1], clamps the value accordingly
PTUConfig robot_model_services::MILDRobotModelWithExactIK::calculateCameraPoseCorrection | ( | const RobotStatePtr & | sourceRobotState, |
const SimpleVector3 & | position, | ||
const SimpleQuaternion & | orientation | ||
) |
Calculates the best approximation for the given camera pose from the current base position.
Definition at line 125 of file MILDRobotModelWithExactIK.cpp.
|
virtual |
Calculates the inverse kinematics for the given camera pose.
Implements robot_model_services::RobotModel.
Definition at line 259 of file MILDRobotModelWithExactIK.cpp.
|
private |
Calculates the rotation angle of the base from its pose frame
Definition at line 869 of file MILDRobotModelWithExactIK.cpp.
|
private |
Calculates the optimal pan angle for the given pose of the pan joint
Definition at line 504 of file MILDRobotModelWithExactIK.cpp.
|
private |
Calculates the tilt angle and the projected pose of the tilt joint returns true if successful
Definition at line 430 of file MILDRobotModelWithExactIK.cpp.
|
private |
Calculates the transformation frame of the tilt joint
Definition at line 414 of file MILDRobotModelWithExactIK.cpp.
|
private |
Deletes all visualization markers for the IK calculation
Definition at line 671 of file MILDRobotModelWithExactIK.cpp.
|
private |
Trys to calculate parameters needed for the inverse kinematic using tf transformations
Definition at line 579 of file MILDRobotModelWithExactIK.cpp.
void robot_model_services::MILDRobotModelWithExactIK::setViewPointDistance | ( | float | viewPointDistance | ) |
Sets the distance between the desired view center point and the camera.
Definition at line 118 of file MILDRobotModelWithExactIK.cpp.
|
private |
Visualizes the output of the CameraPoseCorrection
Definition at line 788 of file MILDRobotModelWithExactIK.cpp.
|
private |
Visualizes the translation between two frames through an arrow
Definition at line 839 of file MILDRobotModelWithExactIK.cpp.
|
private |
Visualizes the translation between two frames through an arrow
Definition at line 833 of file MILDRobotModelWithExactIK.cpp.
|
private |
Visualizes the translation between two frames through an arrow
Definition at line 827 of file MILDRobotModelWithExactIK.cpp.
|
private |
Visualizes the output of the IK calculation
Definition at line 771 of file MILDRobotModelWithExactIK.cpp.
|
private |
Visualizes the IK camera target
Definition at line 765 of file MILDRobotModelWithExactIK.cpp.
|
private |
Visualizes a point for a single frame position
Definition at line 803 of file MILDRobotModelWithExactIK.cpp.
|
private |
Transformation frame from the base-link to the pan-link
Definition at line 88 of file MILDRobotModelWithExactIK.hpp.
|
private |
Height of the tilt axis above ground
Definition at line 57 of file MILDRobotModelWithExactIK.hpp.
|
private |
The rating module for the inverse kinematic sampling
Definition at line 52 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 45 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 64 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 47 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 100 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 99 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 66 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 63 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 65 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 67 of file MILDRobotModelWithExactIK.hpp.
|
private |
Detemines if the IK calculation should be visualized by markers. Turn this off to speed up calculation
Definition at line 72 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 89 of file MILDRobotModelWithExactIK.hpp.
|
private |
Transformation frame from the pan-link to the tilt-link
Definition at line 82 of file MILDRobotModelWithExactIK.hpp.
|
private |
Flag, shows if the tf parameters have already been initialized
Definition at line 96 of file MILDRobotModelWithExactIK.hpp.
|
private |
Transformation frame from the tilted-link to camera left
Definition at line 77 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 83 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 62 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 58 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 59 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 60 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 61 of file MILDRobotModelWithExactIK.hpp.
ros::Publisher robot_model_services::MILDRobotModelWithExactIK::vis_pub |
Definition at line 188 of file MILDRobotModelWithExactIK.hpp.
|
private |
Definition at line 91 of file MILDRobotModelWithExactIK.hpp.