Program Listing for File active_control.h
↰ Return to documentation for file (include/franka/active_control.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/active_control_base.h>
#include <franka/exception.h>
#include "robot.h"
namespace franka {
class ActiveControl : public ActiveControlBase {
public:
~ActiveControl() override;
std::pair<RobotState, Duration> readOnce() override;
void writeOnce(const Torques& /* control_input */) override {
throw franka::ControlException(wrong_write_once_method_called);
};
void writeOnce(const JointPositions& /* motion_generator_input */,
const std::optional<const Torques>& /*control_input*/) override {
throw franka::ControlException(wrong_write_once_method_called);
};
void writeOnce(const JointVelocities& /* motion_generator_input */,
const std::optional<const Torques>& /* control_input */) override {
throw franka::ControlException(wrong_write_once_method_called);
};
void writeOnce(const CartesianPose& /* motion_generator_input */,
const std::optional<const Torques>& /* control_input */) override {
throw franka::ControlException(wrong_write_once_method_called);
};
void writeOnce(const CartesianVelocities& /* motion_generator_input */,
const std::optional<const Torques>& /* control_input */) override {
throw franka::ControlException(wrong_write_once_method_called);
};
void writeOnce(const JointPositions& motion_generator_input) override {
writeOnce(motion_generator_input, std::optional<const Torques>());
};
void writeOnce(const JointVelocities& motion_generator_input) override {
writeOnce(motion_generator_input, std::optional<const Torques>());
};
void writeOnce(const CartesianPose& motion_generator_input) override {
writeOnce(motion_generator_input, std::optional<const Torques>());
};
void writeOnce(const CartesianVelocities& motion_generator_input) override {
writeOnce(motion_generator_input, std::optional<const Torques>());
};
protected:
ActiveControl(std::shared_ptr<Robot::Impl> robot_impl,
uint32_t motion_id,
std::unique_lock<std::mutex> control_lock);
std::shared_ptr<Robot::Impl> robot_impl;
uint32_t motion_id;
std::unique_lock<std::mutex> control_lock;
bool control_finished;
std::optional<Duration> last_read_access;
private:
const std::string wrong_write_once_method_called{
"Wrong writeOnce method called for currently active control!"};
};
} // namespace franka