Franky 1.1.0
A High-Level Motion API for Franka
Loading...
Searching...
No Matches
reaction.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <franka/robot_state.h>
4
5#include <cmath>
6#include <functional>
7#include <iostream>
8#include <memory>
9#include <optional>
10
13
14namespace franky {
15
16template <typename ControlSignalType>
17class Motion;
18
26template <typename ControlSignalType>
27class Reaction {
28 using MotionFunc =
29 std::function<std::shared_ptr<Motion<ControlSignalType>>(const RobotState &, franka::Duration, franka::Duration)>;
30
31 public:
37 explicit Reaction(const Condition &condition, std::shared_ptr<Motion<ControlSignalType>> new_motion = nullptr);
38
45 explicit Reaction(Condition condition, const MotionFunc &motion_func);
46
56 std::shared_ptr<Motion<ControlSignalType>> operator()(
57 const RobotState &robot_state, franka::Duration rel_time, franka::Duration abs_time);
58
69 const RobotState &robot_state, franka::Duration rel_time, franka::Duration abs_time) const {
70 return condition_(robot_state, rel_time, abs_time);
71 }
72
79 void registerCallback(const std::function<void(const RobotState &, franka::Duration, franka::Duration)> &callback);
80
81 private:
82 MotionFunc motion_func_;
83 Condition condition_;
84 std::mutex callback_mutex_;
85 std::vector<std::function<void(const RobotState &, franka::Duration, franka::Duration)>> callbacks_{};
86};
87
88} // namespace franky
A condition on the robot state.
Definition condition.hpp:16
Base class for motions.
Definition motion.hpp:24
A reaction that can be attached to a motion.
Definition reaction.hpp:27
bool condition(const RobotState &robot_state, franka::Duration rel_time, franka::Duration abs_time) const
Check if the condition is met.
Definition reaction.hpp:68
void registerCallback(const std::function< void(const RobotState &, franka::Duration, franka::Duration)> &callback)
Register a callback that is called when the condition of this reaction is met.
Definition reaction.cpp:41
std::shared_ptr< Motion< ControlSignalType > > operator()(const RobotState &robot_state, franka::Duration rel_time, franka::Duration abs_time)
Get the new motion if the condition is met.
Definition reaction.cpp:33
Definition dynamics_limit.cpp:8
std::array< double, dims > toStdD(const Eigen::Matrix< double, dims, 1 > &vector)
Definition util.hpp:18
Full state of the robot.
Definition robot_state.hpp:23