SMACC2
Loading...
Searching...
No Matches
cl_moveit2z::CbMoveCartesianRelative2 Class Reference

#include <cb_move_cartesian_relative2.hpp>

Inheritance diagram for cl_moveit2z::CbMoveCartesianRelative2:
Inheritance graph
Collaboration diagram for cl_moveit2z::CbMoveCartesianRelative2:
Collaboration graph

Public Member Functions

 CbMoveCartesianRelative2 (std::string referenceFrame, std::string tipLink)
 
 CbMoveCartesianRelative2 (std::string referenceFrame, std::string tipLink, geometry_msgs::msg::Vector3 offset)
 
virtual ~CbMoveCartesianRelative2 ()
 
void generateTrajectory () override
 
 CbMoveCartesianRelative2 (std::string referenceFrame, std::string tipLink)
 
 CbMoveCartesianRelative2 (std::string referenceFrame, std::string tipLink, geometry_msgs::msg::Vector3 offset)
 
virtual ~CbMoveCartesianRelative2 ()
 
void generateTrajectory () override
 
- Public Member Functions inherited from cl_moveit2z::CbMoveEndEffectorTrajectory
 CbMoveEndEffectorTrajectory (std::optional< std::string > tipLink=std::nullopt)
 
 CbMoveEndEffectorTrajectory (const std::vector< geometry_msgs::msg::PoseStamped > &endEffectorTrajectory, std::optional< std::string > tipLink=std::nullopt)
 
template<typename TOrthogonal , typename TSourceObject >
void onOrthogonalAllocation ()
 
virtual void onEntry () override
 
virtual void onExit () override
 
 CbMoveEndEffectorTrajectory (std::optional< std::string > tipLink=std::nullopt)
 
 CbMoveEndEffectorTrajectory (const std::vector< geometry_msgs::msg::PoseStamped > &endEffectorTrajectory, std::optional< std::string > tipLink=std::nullopt)
 
template<typename TOrthogonal , typename TSourceObject >
void onOrthogonalAllocation ()
 
virtual void onEntry () override
 
virtual void onExit () override
 
virtual void update () override
 
- Public Member Functions inherited from smacc2::SmaccAsyncClientBehavior
template<typename TOrthogonal , typename TSourceObject >
void onOrthogonalAllocation ()
 
template<typename TOrthogonal , typename TSourceObject >
void onStateOrthogonalAllocation ()
 
virtual ~SmaccAsyncClientBehavior ()
 
template<typename TCallback , typename T >
boost::signals2::connection onSuccess (TCallback callback, T *object)
 
template<typename TCallback , typename T >
boost::signals2::connection onFinished (TCallback callback, T *object)
 
template<typename TCallback , typename T >
boost::signals2::connection onFailure (TCallback callback, T *object)
 
void requestForceFinish ()
 
void executeOnEntry () override
 
void executeOnExit () override
 
void waitOnEntryThread (bool requestFinish)
 
template<typename TCallbackMethod , typename T >
boost::signals2::connection onSuccess (TCallbackMethod callback, T *object)
 
template<typename TCallbackMethod , typename T >
boost::signals2::connection onFinished (TCallbackMethod callback, T *object)
 
template<typename TCallbackMethod , typename T >
boost::signals2::connection onFailure (TCallbackMethod callback, T *object)
 
- Public Member Functions inherited from smacc2::ISmaccClientBehavior
 ISmaccClientBehavior ()
 
virtual ~ISmaccClientBehavior ()
 
ISmaccStateMachinegetStateMachine ()
 
std::string getName () const
 
template<typename SmaccClientType >
void requiresClient (SmaccClientType *&storage)
 
template<typename SmaccComponentType >
void requiresComponent (SmaccComponentType *&storage, bool throwExceptionIfNotExist)
 
template<typename SmaccComponentType >
void requiresComponent (SmaccComponentType *&storage, ComponentRequirement requirementType=ComponentRequirement::SOFT)
 
- Public Member Functions inherited from smacc2::ISmaccUpdatable
 ISmaccUpdatable ()
 
 ISmaccUpdatable (rclcpp::Duration duration)
 
void executeUpdate (rclcpp::Node::SharedPtr node)
 
void setUpdatePeriod (rclcpp::Duration duration)
 

Public Attributes

geometry_msgs::msg::Vector3 offset_
 
std::optional< double > linearSpeed_m_s_
 
- Public Attributes inherited from cl_moveit2z::CbMoveEndEffectorTrajectory
std::optional< std::string > group_
 
std::optional< std::string > tipLink_
 
std::optional< bool > allowInitialTrajectoryStateJointDiscontinuity_
 

Private Attributes

std::string globalFrame_
 

Additional Inherited Members

- Protected Member Functions inherited from cl_moveit2z::CbMoveEndEffectorTrajectory
ComputeJointTrajectoryErrorCode computeJointSpaceTrajectory (moveit_msgs::msg::RobotTrajectory &computedJointTrajectory)
 
void executeJointSpaceTrajectory (const moveit_msgs::msg::RobotTrajectory &computedJointTrajectory)
 
virtual void createMarkers ()
 
void getCurrentEndEffectorPose (std::string globalFrame, tf2::Stamped< tf2::Transform > &currentEndEffectorTransform)
 
ComputeJointTrajectoryErrorCode computeJointSpaceTrajectory (moveit_msgs::msg::RobotTrajectory &computedJointTrajectory)
 
void executeJointSpaceTrajectory (const moveit_msgs::msg::RobotTrajectory &computedJointTrajectory)
 
virtual void createMarkers ()
 
void getCurrentEndEffectorPose (std::string globalFrame, tf2::Stamped< tf2::Transform > &currentEndEffectorTransform)
 
- Protected Member Functions inherited from smacc2::SmaccAsyncClientBehavior
void postSuccessEvent ()
 
void postFailureEvent ()
 
virtual void dispose () override
 
bool isShutdownRequested ()
 onEntry is executed in a new thread. However the current state cannot be left until the onEntry thread finishes. This flag can be checked from the onEntry thread to force finishing the thread.
 
- Protected Member Functions inherited from smacc2::ISmaccClientBehavior
virtual void runtimeConfigure ()
 
template<typename EventType >
void postEvent (const EventType &ev)
 
template<typename EventType >
void postEvent ()
 
ISmaccStategetCurrentState ()
 
virtual rclcpp::Node::SharedPtr getNode () const
 
virtual rclcpp::Logger getLogger () const
 
- Protected Member Functions inherited from smacc2::ISmaccUpdatable
- Protected Attributes inherited from cl_moveit2z::CbMoveEndEffectorTrajectory
std::vector< geometry_msgs::msg::PoseStamped > endEffectorTrajectory_
 
ClMoveit2zmovegroupClient_ = nullptr
 
visualization_msgs::msg::MarkerArray beahiorMarkers_
 

Detailed Description

Definition at line 31 of file cb_move_cartesian_relative2.hpp.

Constructor & Destructor Documentation

◆ CbMoveCartesianRelative2() [1/4]

cl_moveit2z::CbMoveCartesianRelative2::CbMoveCartesianRelative2 ( std::string referenceFrame,
std::string tipLink )
inline

Definition at line 41 of file cb_move_cartesian_relative2.hpp.

43 {
44 globalFrame_ = referenceFrame;
45 }
CbMoveEndEffectorTrajectory(std::optional< std::string > tipLink=std::nullopt)

References globalFrame_.

◆ CbMoveCartesianRelative2() [2/4]

cl_moveit2z::CbMoveCartesianRelative2::CbMoveCartesianRelative2 ( std::string referenceFrame,
std::string tipLink,
geometry_msgs::msg::Vector3 offset )
inline

Definition at line 47 of file cb_move_cartesian_relative2.hpp.

50 {
51 globalFrame_ = referenceFrame;
52 offset_ = offset;
53 }

References globalFrame_, and offset_.

◆ ~CbMoveCartesianRelative2() [1/2]

cl_moveit2z::CbMoveCartesianRelative2::~CbMoveCartesianRelative2 ( )
inlinevirtual

Definition at line 55 of file cb_move_cartesian_relative2.hpp.

55{}

◆ CbMoveCartesianRelative2() [3/4]

cl_moveit2z::CbMoveCartesianRelative2::CbMoveCartesianRelative2 ( std::string referenceFrame,
std::string tipLink )

◆ CbMoveCartesianRelative2() [4/4]

cl_moveit2z::CbMoveCartesianRelative2::CbMoveCartesianRelative2 ( std::string referenceFrame,
std::string tipLink,
geometry_msgs::msg::Vector3 offset )

◆ ~CbMoveCartesianRelative2() [2/2]

virtual cl_moveit2z::CbMoveCartesianRelative2::~CbMoveCartesianRelative2 ( )
virtual

Member Function Documentation

◆ generateTrajectory() [1/2]

void cl_moveit2z::CbMoveCartesianRelative2::generateTrajectory ( )
inlineoverridevirtual

Reimplemented from cl_moveit2z::CbMoveEndEffectorTrajectory.

Definition at line 57 of file cb_move_cartesian_relative2.hpp.

58 {
59 RCLCPP_INFO_STREAM(getLogger(), "[" << getName() << "] generating trajectory");
60 // at least 1 sample per centimeter (average)
61 const double METERS_PER_SAMPLE = 0.001;
62
63 float dist_meters = 0;
64 tf2::Vector3 voffset;
65 tf2::fromMsg(offset_, voffset);
66
67 float totallineardist = voffset.length();
68
69 int totalSamplesCount = totallineardist / METERS_PER_SAMPLE;
70 int steps = totallineardist / METERS_PER_SAMPLE;
71
72 float interpolation_factor_step = 1.0 / totalSamplesCount;
73
74 double secondsPerSample;
75
77 {
78 linearSpeed_m_s_ = 0.1;
79 }
80
81 secondsPerSample = METERS_PER_SAMPLE / (*linearSpeed_m_s_);
82
83 tf2::Stamped<tf2::Transform> currentEndEffectorTransform;
84 RCLCPP_INFO_STREAM(getLogger(), "[" << getName() << "] getting current end effector pose");
85 this->getCurrentEndEffectorPose(globalFrame_, currentEndEffectorTransform);
86
87 tf2::Transform finalEndEffectorTransform = currentEndEffectorTransform;
88 finalEndEffectorTransform.setOrigin(finalEndEffectorTransform.getOrigin() + voffset);
89
90 float linc = totallineardist / steps; // METERS_PER_SAMPLE with sign
91 float interpolation_factor = 0;
92
93 rclcpp::Time startTime = getNode()->now();
94 RCLCPP_INFO_STREAM(getLogger(), "[" << getName() << "] trajectory steps: " << steps);
95
96 for (float i = 0; i < steps; i++)
97 {
98 interpolation_factor += interpolation_factor_step;
99 dist_meters += linc;
100
101 tf2::Vector3 vi = currentEndEffectorTransform.getOrigin().lerp(
102 finalEndEffectorTransform.getOrigin(), interpolation_factor);
103
104 tf2::Transform pose;
105 pose.setOrigin(vi);
106 pose.setRotation(currentEndEffectorTransform.getRotation());
107
108 geometry_msgs::msg::PoseStamped pointerPose;
109 tf2::toMsg(pose, pointerPose.pose);
110 pointerPose.header.frame_id = globalFrame_;
111 pointerPose.header.stamp = startTime + rclcpp::Duration::from_seconds(i * secondsPerSample);
112
113 this->endEffectorTrajectory_.push_back(pointerPose);
114 }
115
116 RCLCPP_INFO_STREAM(
117 getLogger(),
118 "[" << getName() << "] Target End efector Pose: " << this->endEffectorTrajectory_.back());
119 }
std::vector< geometry_msgs::msg::PoseStamped > endEffectorTrajectory_
void getCurrentEndEffectorPose(std::string globalFrame, tf2::Stamped< tf2::Transform > &currentEndEffectorTransform)
virtual rclcpp::Logger getLogger() const
virtual rclcpp::Node::SharedPtr getNode() const

References cl_moveit2z::CbMoveEndEffectorTrajectory::endEffectorTrajectory_, cl_moveit2z::CbMoveEndEffectorTrajectory::getCurrentEndEffectorPose(), smacc2::ISmaccClientBehavior::getLogger(), smacc2::ISmaccClientBehavior::getName(), smacc2::ISmaccClientBehavior::getNode(), globalFrame_, linearSpeed_m_s_, and offset_.

Here is the call graph for this function:

◆ generateTrajectory() [2/2]

void cl_moveit2z::CbMoveCartesianRelative2::generateTrajectory ( )
overridevirtual

Member Data Documentation

◆ globalFrame_

std::string cl_moveit2z::CbMoveCartesianRelative2::globalFrame_
private

◆ linearSpeed_m_s_

std::optional< double > cl_moveit2z::CbMoveCartesianRelative2::linearSpeed_m_s_

Definition at line 39 of file cb_move_cartesian_relative2.hpp.

Referenced by generateTrajectory().

◆ offset_

geometry_msgs::msg::Vector3 cl_moveit2z::CbMoveCartesianRelative2::offset_

Definition at line 37 of file cb_move_cartesian_relative2.hpp.

Referenced by CbMoveCartesianRelative2(), and generateTrajectory().


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