Go to the documentation of this file.
18 #ifndef COB_FRAME_TRACKER_H
19 #define COB_FRAME_TRACKER_H
27 #include <std_msgs/String.h>
28 #include <std_msgs/Float64.h>
29 #include <std_msgs/Float64MultiArray.h>
30 #include <sensor_msgs/JointState.h>
31 #include <geometry_msgs/Twist.h>
32 #include <std_srvs/Trigger.h>
33 #include <cob_srvs/SetString.h>
36 #include <cob_frame_tracker/FrameTrackerConfig.h>
37 #include <cob_frame_tracker/FrameTrackingAction.h>
43 #include <kdl/chainiksolvervel_pinv.hpp>
44 #include <kdl/chainfksolvervel_recursive.hpp>
45 #include <kdl/frames.hpp>
46 #include <kdl/jntarray.hpp>
47 #include <kdl/jntarrayvel.hpp>
50 #include <dynamic_reconfigure/server.h>
51 #include <dynamic_reconfigure/Reconfigure.h>
52 #include <boost/thread/mutex.hpp>
84 bool startTrackingCallback(cob_srvs::SetString::Request& request, cob_srvs::SetString::Response& response);
85 bool startLookatCallback(cob_srvs::SetString::Request& request, cob_srvs::SetString::Response& response);
86 bool stopCallback(std_srvs::Trigger::Request& request, std_srvs::Trigger::Response& response);
boost::recursive_mutex reconfig_mutex_
ros::Subscriber jointstate_sub_
ros::Time tracking_start_time_
bool startTrackingCallback(cob_srvs::SetString::Request &request, cob_srvs::SetString::Response &response)
double twist_dead_threshold_rot_
bool startLookatCallback(cob_srvs::SetString::Request &request, cob_srvs::SetString::Response &response)
std::string lookat_focus_frame_
bool stopCallback(std_srvs::Trigger::Request &request, std_srvs::Trigger::Response &response)
std::string action_name_
Action interface.
tf::StampedTransform transform_tf
double tracking_duration_
control_toolbox::Pid pid_controller_rot_z_
bool checkTwistViolation(const KDL::Twist current, const KDL::Twist target)
unsigned int abortion_counter_
bool getTransform(const std::string &from, const std::string &to, tf::StampedTransform &stamped_tf)
bool checkInfinitesimalTwist(const KDL::Twist current)
int checkServiceCallStatus()
double cart_min_dist_threshold_rot_
double twist_deviation_threshold_rot_
std::vector< std::string > joints_
actionlib::SimpleActionServer< cob_frame_tracker::FrameTrackingAction > SAS_FrameTrackingAction_t
ros::ServiceServer start_tracking_server_
ros::ServiceServer start_lookat_server_
KDL::JntArray last_q_dot_
control_toolbox::Pid pid_controller_trans_z_
KDL::Twist current_twist_
double twist_dead_threshold_lin_
std::string chain_base_link_
ros::Publisher error_pub_
double twist_deviation_threshold_lin_
cob_frame_tracker::FrameTrackingResult action_result_
control_toolbox::Pid pid_controller_trans_x_
tf::TransformListener tf_listener_
KDL::Chain chain_
KDL Conversion.
std::string tracking_frame_
ros::ServiceServer stop_server_
void jointstateCallback(const sensor_msgs::JointState::ConstPtr &msg)
void run(const ros::TimerEvent &event)
void publishHoldTwist(const ros::Duration &period)
boost::shared_ptr< KDL::ChainFkSolverVel_recursive > jntToCartSolver_vel_
void goalCB()
Action interface.
boost::shared_ptr< dynamic_reconfigure::Server< cob_frame_tracker::FrameTrackerConfig > > reconfigure_server_
cob_frame_tracker::FrameTrackingFeedback action_feedback_
double cart_min_dist_threshold_lin_
bool checkCartDistanceViolation(const double dist, const double rot)
ros::Publisher twist_pub_
control_toolbox::Pid pid_controller_rot_y_
control_toolbox::Pid pid_controller_rot_x_
int checkStatus()
ABORTION CRITERIA:
std::string chain_tip_link_
void publishTwist(ros::Duration period, bool do_publish=true)
void reconfigureCallback(cob_frame_tracker::FrameTrackerConfig &config, uint32_t level)
ros::ServiceClient reconfigure_client_
bool enable_abortion_checking_
std::string target_frame_
unsigned int max_abortions_
boost::shared_ptr< SAS_FrameTrackingAction_t > as_
control_toolbox::Pid pid_controller_trans_y_