MoveIt Pro API
Core Behaviors for MoveIt Pro
Loading...
Searching...
No Matches
moveit_pro::behaviors::SolveHandEyeCalibration< mode > Class Template Referencefinal

Solves both unknown transforms of a hand-eye calibration from collected samples. More...

#include <solve_hand_eye_calibration.hpp>

Inheritance diagram for moveit_pro::behaviors::SolveHandEyeCalibration< mode >:
Collaboration diagram for moveit_pro::behaviors::SolveHandEyeCalibration< mode >:

Public Member Functions

 SolveHandEyeCalibration (const std::string &name, const BT::NodeConfiguration &config, const std::shared_ptr< BehaviorContext > &shared_resources)
 Constructor for the Behavior.
 
BT::NodeStatus tick () override
 
- Public Member Functions inherited from moveit_pro::behaviors::SharedResourcesNode< BT::SyncActionNode >
 SharedResourcesNode (const std::string &name, const BT::NodeConfiguration &config, const std::shared_ptr< BehaviorContext > &behavior_context)
 Constructor for SharedResourcesNode. Called by BT::BehaviorTreeFactory when creating a new behavior tree containing this node.
 
const std::shared_ptr< BehaviorContext > & getBehaviorContext () const
 

Static Public Member Functions

static BT::PortsList providedPorts ()
 
static BT::KeyValueVector metadata ()
 

Detailed Description

template<moveit_pro::hand_eye_calibration::CalibrationMode mode>
class moveit_pro::behaviors::SolveHandEyeCalibration< mode >

Solves both unknown transforms of a hand-eye calibration from collected samples.

Registered once per camera arrangement: SolveEyeInHandCalibration (camera on the end effector, board fixed in the world) recovers the camera pose in the end effector frame and the board pose in the robot base frame; SolveEyeToHandCalibration (camera fixed in the world, board on the end effector) recovers the camera pose in the robot base frame and the board pose in the end effector frame. The ports are identical; only what the two recovered poses mean differs. The pose outputs are stamped with the frames the samples were recorded with; only the frame name is set, the timestamp stays zero (which TF consumers read as "latest available").

Synchronous by design: the solve is one small PnP per sample plus a fixed-size linear solve, so the tick cost grows only linearly with the number of collected samples.

The recovered camera pose is the camera optical frame (REP 103 optical convention: z forward, y down), not the camera mount link, because the board observations come from PnP in that frame.

Data Port Name Port Type Object Type
samples input std::vector<moveit_pro::hand_eye_calibration::CalibrationSample>
camera_name input std::string
camera_info input sensor_msgs::msg::CameraInfo
camera_pose output geometry_msgs::msg::PoseStamped
board_mount_pose output geometry_msgs::msg::PoseStamped
used_sample_count output int
rotation_residual output double
translation_residual output double

Constructor & Destructor Documentation

◆ SolveHandEyeCalibration()

template<moveit_pro::hand_eye_calibration::CalibrationMode mode>
moveit_pro::behaviors::SolveHandEyeCalibration< mode >::SolveHandEyeCalibration ( const std::string &  name,
const BT::NodeConfiguration &  config,
const std::shared_ptr< BehaviorContext > &  shared_resources 
)

Constructor for the Behavior.

Parameters
nameSee SharedResourcesNode
configSee SharedResourcesNode
shared_resourcesSee SharedResourcesNode

Member Function Documentation

◆ metadata()

template<moveit_pro::hand_eye_calibration::CalibrationMode mode>
BT::KeyValueVector moveit_pro::behaviors::SolveHandEyeCalibration< mode >::metadata ( )
static

◆ providedPorts()

template<moveit_pro::hand_eye_calibration::CalibrationMode mode>
BT::PortsList moveit_pro::behaviors::SolveHandEyeCalibration< mode >::providedPorts ( )
static

◆ tick()

template<moveit_pro::hand_eye_calibration::CalibrationMode mode>
BT::NodeStatus moveit_pro::behaviors::SolveHandEyeCalibration< mode >::tick ( )
override

The documentation for this class was generated from the following files: