class Controller

Declaration

class Controller { /* full declaration omitted */ };

Description

Control framework run by `uri manager`, loaded as a backend plugin. Implement it to support a controller other than mc_rtc (see docs/RobotManager.md, "Controller backend"). Robots are identified by their name under `Robots:`, and joint vectors follow each robot's reference joint order.

Declared at: robot_controller/include/robot_controller/Controller.h:24

Method Overview

  • public virtual std::vector<double> command(const std::string & robot, robot_controller::ControlMode mode) const
  • public virtual void initializeRobot(const std::string & robotName, const std::vector<double> & encoderValues)
  • public virtual void initializeRobots()
  • public virtual bool isRunning() const
  • public virtual void run()
  • public virtual void setBodySensor(const std::string & robot, const std::string & sensorName, const std::array<double, 4> & orientation, const std::array<double, 3> & angularVelocity, const std::array<double, 3> & linearAcceleration)
  • public virtual void setEncoderValues(const std::string & robot, const std::vector<double> & values)
  • public virtual void setEncoderVelocities(const std::string & robot, const std::vector<double> & values)
  • public virtual void setForceSensor(const std::string & robot, const std::string & sensorName, const std::array<double, 3> & force, const std::array<double, 3> & torque)
  • public virtual void setJointTorques(const std::string & robot, const std::vector<double> & values)
  • public virtual void start()
  • public virtual void stop()
  • public virtual double timeStep() const
  • public virtual ~Controller()

Methods

virtual std::vector<double> command(
    const std::string& robot,
    robot_controller::ControlMode mode) const

Description

Latest command for `robot` in the given mode.

Declared at: robot_controller/include/robot_controller/Controller.h:73

Parameters

const std::string& robot
robot_controller::ControlMode mode

virtual void initializeRobot(
    const std::string& robotName,
    const std::vector<double>& encoderValues)

Description

Initialize `robotName` from its first joint positions [rad]. Called once per robot, when its first state arrives.

Declared at: robot_controller/include/robot_controller/Controller.h:52

Parameters

const std::string& robotName
const std::vector<double>& encoderValues

virtual void initializeRobots()

Description

Called once after all robots are known, before the control loop starts.

Declared at: robot_controller/include/robot_controller/Controller.h:55

virtual bool isRunning() const

Description

Whether the controller is running.

Declared at: robot_controller/include/robot_controller/Controller.h:32

virtual void run()

Description

Run one control step.

Declared at: robot_controller/include/robot_controller/Controller.h:30

virtual void setBodySensor(
    const std::string& robot,
    const std::string& sensorName,
    const std::array<double, 4>& orientation,
    const std::array<double, 3>& angularVelocity,
    const std::array<double, 3>&
        linearAcceleration)

Description

Set an IMU reading of `robot`: orientation quaternion (w, x, y, z), angular velocity [rad/s] and linear acceleration [m/s²].

Declared at: robot_controller/include/robot_controller/Controller.h:59

Parameters

const std::string& robot
const std::string& sensorName
const std::array<double, 4>& orientation
const std::array<double, 3>& angularVelocity
const std::array<double, 3>& linearAcceleration

virtual void setEncoderValues(
    const std::string& robot,
    const std::vector<double>& values)

Description

Set the measured joint positions [rad] of `robot`.

Declared at: robot_controller/include/robot_controller/Controller.h:42

Parameters

const std::string& robot
const std::vector<double>& values

virtual void setEncoderVelocities(
    const std::string& robot,
    const std::vector<double>& values)

Description

Set the measured joint velocities [rad/s] of `robot`.

Declared at: robot_controller/include/robot_controller/Controller.h:45

Parameters

const std::string& robot
const std::vector<double>& values

virtual void setForceSensor(
    const std::string& robot,
    const std::string& sensorName,
    const std::array<double, 3>& force,
    const std::array<double, 3>& torque)

Description

Set a force/torque reading of `robot`, in the sensor frame: force [N] and torque [Nm].

Declared at: robot_controller/include/robot_controller/Controller.h:67

Parameters

const std::string& robot
const std::string& sensorName
const std::array<double, 3>& force
const std::array<double, 3>& torque

virtual void setJointTorques(
    const std::string& robot,
    const std::vector<double>& values)

Description

Set the measured joint torques [Nm] of `robot`.

Declared at: robot_controller/include/robot_controller/Controller.h:48

Parameters

const std::string& robot
const std::vector<double>& values

virtual void start()

Description

Start running.

Declared at: robot_controller/include/robot_controller/Controller.h:34

virtual void stop()

Description

Stop running.

Declared at: robot_controller/include/robot_controller/Controller.h:36

virtual double timeStep() const

Description

Control period [s].

Declared at: robot_controller/include/robot_controller/Controller.h:39

virtual ~Controller()

Declared at: robot_controller/include/robot_controller/Controller.h:27