Program Listing for File active_control_base.h

Return to documentation for file (include/franka/active_control_base.h)

// Copyright (c) 2023 Franka Robotics GmbH
// Use of this source code is governed by the Apache-2.0 license, see LICENSE
#pragma once

#include <franka/control_types.h>
#include <franka/exception.h>
#include <franka/robot_state.h>
#include <memory>
#include <optional>
#include <utility>

namespace franka {

class ActiveControlBase {
 public:
  virtual ~ActiveControlBase() = default;

  virtual std::pair<RobotState, Duration> readOnce() = 0;

  virtual void writeOnce(const Torques& /* control_input */) = 0;

  virtual void writeOnce(const JointPositions& /* motion_generator_input */,
                         const std::optional<const Torques>& /*control_input*/) = 0;

  virtual void writeOnce(const JointVelocities& /* motion_generator_input */,
                         const std::optional<const Torques>& /* control_input */) = 0;
  virtual void writeOnce(const CartesianPose& /* motion_generator_input */,
                         const std::optional<const Torques>& /* control_input */) = 0;

  virtual void writeOnce(const CartesianVelocities& /* motion_generator_input */,
                         const std::optional<const Torques>& /* control_input */) = 0;
  virtual void writeOnce(const JointPositions& motion_generator_input) = 0;

  virtual void writeOnce(const JointVelocities& motion_generator_input) = 0;
  virtual void writeOnce(const CartesianPose& motion_generator_input) = 0;

  virtual void writeOnce(const CartesianVelocities& motion_generator_input) = 0;

 protected:
  ActiveControlBase() = default;
};

}  // namespace franka