.. _program_listing_file_include_franka_active_control.h: Program Listing for File active_control.h ========================================= |exhale_lsh| :ref:`Return to documentation for file ` (``include/franka/active_control.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // Copyright (c) 2023 Franka Robotics GmbH // Use of this source code is governed by the Apache-2.0 license, see LICENSE #pragma once #include #include #include "robot.h" namespace franka { class ActiveControl : public ActiveControlBase { public: ~ActiveControl() override; std::pair 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& /*control_input*/) override { throw franka::ControlException(wrong_write_once_method_called); }; void writeOnce(const JointVelocities& /* motion_generator_input */, const std::optional& /* control_input */) override { throw franka::ControlException(wrong_write_once_method_called); }; void writeOnce(const CartesianPose& /* motion_generator_input */, const std::optional& /* control_input */) override { throw franka::ControlException(wrong_write_once_method_called); }; void writeOnce(const CartesianVelocities& /* motion_generator_input */, const std::optional& /* 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()); }; void writeOnce(const JointVelocities& motion_generator_input) override { writeOnce(motion_generator_input, std::optional()); }; void writeOnce(const CartesianPose& motion_generator_input) override { writeOnce(motion_generator_input, std::optional()); }; void writeOnce(const CartesianVelocities& motion_generator_input) override { writeOnce(motion_generator_input, std::optional()); }; protected: ActiveControl(std::shared_ptr robot_impl, uint32_t motion_id, std::unique_lock control_lock); std::shared_ptr robot_impl; uint32_t motion_id; std::unique_lock control_lock; bool control_finished; std::optional last_read_access; private: const std::string wrong_write_once_method_called{ "Wrong writeOnce method called for currently active control!"}; }; } // namespace franka