File robot_frontend.hpp

namespace robot_interfaces

Typedefs

template<typename Type>
using Timeseries = time_series::TimeSeries<Type>
typedef time_series::Index TimeIndex
template<typename Action, typename Observation>
class RobotFrontend
#include <robot_frontend.hpp>

Communication link between RobotData and the user.

Takes care of communication between the RobotData and the user. It is just a thin wrapper around RobotData to facilitate interaction and also to make sure the user cannot use RobotData in incorrect ways.

Template Parameters
  • Action

  • Observation

Subclassed by robot_interfaces::Robot< Action, Observation, Driver, Data >

Public Types

typedef time_series::Timestamp TimeStamp

Public Functions

inline RobotFrontend(std::shared_ptr<RobotData<Action, Observation>> robot_data)
inline Observation get_observation(const TimeIndex &t) const

Get observation of time step t.

Parameters

t – Index of the time step. If t is in the future, this method will block and wait.

Throws

std::invalid_argument – if t is too old and not in the time series buffer anymore.

Returns

The observation of time step t.

inline Action get_desired_action(const TimeIndex &t) const

Get the desired action of time step t.

The desired action is the action as it is passed by the user in append_desired_action.

Parameters

t – Index of the time step. If t is in the future, this method will block and wait.

Throws

std::invalid_argument – if t is too old and not in the time series buffer anymore.

Returns

The desired action of time step t.

inline Action get_applied_action(const TimeIndex &t) const

Get the applied action of time step t.

The applied action is the one that was actually applied to the robot based on the desired action of that time step. It may differ from the desired one e.g. due to some safety checks which limit the maximum torque. If and how the action is modified depends on the implementation of the RobotDriver.

Parameters

t – Index of the time step. If t is in the future, this method will block and wait.

Throws

std::invalid_argument – if t is too old and not in the time series buffer anymore.

Returns

The applied action of time step t.

inline Status get_status(const TimeIndex &t) const
inline TimeStamp get_timestamp_ms(const TimeIndex &t) const

Get the timestamp of time step t.

Parameters

t – Index of the time step. If t is in the future, this method will block and wait.

Throws

std::invalid_argument – if t is too old and not in the time series buffer anymore.

Returns

Timestamp of time step t.

inline TimeIndex get_current_timeindex() const

Get the current time index.

Returns

The latest time index for which observations are available.

inline TimeIndex append_desired_action(const Action &desired_action)

Append a desired action to the action time series.

This will append an action to the “desired actions” time series. Note that this does not block until the action is actually executed. The time series acts like a queue from which the RobotBackend takes the actions one by one to send them to the actual robot. It is possible to call this method multiple times in a row to already provide actions for the next time steps.

The time step at which the given action will be applied is returned by this method.

Parameters

desired_action – The action that shall be applied on the robot. Note that the actually applied action might be different depending on the implementation of the RobotDriver (see get_applied_action).

Returns

Time step at which the action will be applied.

inline void wait_until_timeindex(const TimeIndex &t) const

Wait until the specified time step is reached.

Parameters

t – Time step until which is waited.

Throws

std::invalid_argument – if t is too old and not in the time series buffer anymore.

Protected Attributes

std::shared_ptr<RobotData<Action, Observation>> robot_data_