franky 1.1.4
A High-Level Motion API for Franka
Loading...
Searching...
No Matches
cartesian_impedance_tracking_motion.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <functional>
4#include <memory>
5#include <optional>
6
9
10namespace franky {
11
21
29 public:
32 std::function<CartesianReference(const RobotState &, franka::Duration, franka::Duration, franka::Duration)>;
33
34 explicit CartesianImpedanceTrackingMotion(const Params &params = Params{}, double gains_time_constant = 0.1);
36 ReferenceCallback reference_callback, const Params &params = Params{}, double gains_time_constant = 0.1);
37
38 void setReference(const CartesianReference &reference) {
39 reference.validate();
40 reference_handle_.set(reference);
41 }
42 [[nodiscard]] std::optional<CartesianReference> getReference() const { return reference_handle_.getLastWritten(); }
43
44 [[nodiscard]] const Params &params() const { return base_params(); }
45
46 protected:
47 void initImpl(const RobotState &robot_state, const std::optional<franka::Torques> &previous_command) override;
48 franka::Torques nextCommandImpl(
49 const RobotState &robot_state, franka::Duration time_step, franka::Duration rel_time, franka::Duration abs_time,
50 const std::optional<franka::Torques> &previous_command) override;
51
52 private:
53 CartesianReferenceHandle reference_handle_{std::nullopt};
54 ReferenceCallback reference_callback_;
55 std::optional<Twist> target_twist_;
56 std::optional<TwistAcceleration> target_acceleration_;
57};
58
59} // namespace franky
Base class for client-side cartesian impedance motions.
Definition cartesian_impedance_base.hpp:189
const Params & base_params() const
Definition cartesian_impedance_base.hpp:266
Cartesian impedance tracking motion.
Definition cartesian_impedance_tracking_motion.hpp:28
std::optional< CartesianReference > getReference() const
Definition cartesian_impedance_tracking_motion.hpp:42
std::function< CartesianReference(const RobotState &, franka::Duration, franka::Duration, franka::Duration)> ReferenceCallback
Definition cartesian_impedance_tracking_motion.hpp:32
franka::Torques nextCommandImpl(const RobotState &robot_state, franka::Duration time_step, franka::Duration rel_time, franka::Duration abs_time, const std::optional< franka::Torques > &previous_command) override
Definition cartesian_impedance_tracking_motion.cpp:34
CartesianImpedanceBase::Params Params
Definition cartesian_impedance_tracking_motion.hpp:30
void initImpl(const RobotState &robot_state, const std::optional< franka::Torques > &previous_command) override
Definition cartesian_impedance_tracking_motion.cpp:16
void setReference(const CartesianReference &reference)
Definition cartesian_impedance_tracking_motion.hpp:38
const Params & params() const
Definition cartesian_impedance_tracking_motion.hpp:44
void set(const T &value)
Publish new data.
Definition wait_free_triple_buffer.hpp:26
T getLastWritten() const
Get the most recently written value from the writer's side.
Definition wait_free_triple_buffer.hpp:49
Definition dynamics_limit.cpp:8
Parameters for the impedance motion.
Definition cartesian_impedance_base.hpp:194
Cartesian impedance reference expressed in the base frame.
Definition cartesian_impedance_base.hpp:23
void validate() const
Throw std::invalid_argument if any value is non-finite.
Definition cartesian_impedance_base.hpp:44
Full state of the robot.
Definition robot_state.hpp:40