33 #include <Rcs_typedef.h> 35 #include <Rcs_MatNd.h> 46 RcsGraph* graph,
const char* sensorName,
double max_force,
bool transformToWorldFrame
47 ) : max_force(max_force), transformToWorldFrame(transformToWorldFrame)
49 sensor = RcsGraph_getSensorByName(graph, sensorName);
51 throw std::invalid_argument(
"Sensor not found: " + std::string(sensorName));
53 max_torque = std::numeric_limits<double>::infinity();
74 const HTr* A_SB =
sensor->offset;
76 HTr_transform(&A_SI,
sensor->body->A_BI, A_SB);
79 double* S_force = &
sensor->rawData->ele[0];
82 Vec3d_transRotate(I_force, A_SI.rot, S_force); Vec3d_transRotate(I_torque, A_SI.rot, S_torque);
109 std::string sn =
sensor->name;
110 return {sn +
"_Fx", sn +
"_Fy", sn +
"_Fz", sn +
"_Tx", sn +
"_Ty", sn +
"_Tz",};
virtual void computeObservation(double *state, double *velocity, const MatNd *currentAction, double dt) const
virtual void getLimits(double *minState, double *maxState, double *maxVelocity) const
RcsSensor * sensor
FTS to observe.
virtual std::vector< std::string > getStateNames() const
OMForceTorque(RcsGraph *graph, const char *sensorName, double maxForce=std::numeric_limits< double >::infinity(), bool transformToWorldFrame=false)
bool transformToWorldFrame
virtual unsigned int getStateDim() const
virtual unsigned int getVelocityDim() const