71 lines
1.7 KiB
C++
71 lines
1.7 KiB
C++
/*
|
|
* @file ControlPoint.h
|
|
* @brief Class with a point in a Position-Velocity model at a given time for 2D robots
|
|
* @author Alex Cunningham
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "Pose2.h"
|
|
#include "Testable.h"
|
|
|
|
namespace gtsam {
|
|
|
|
/**
|
|
* This class stores a single point in time using a model
|
|
* with position and velocity, as well as a time stamp, and
|
|
* is designed for use with robot control applications.
|
|
*/
|
|
class ControlPoint : public Testable<ControlPoint> {
|
|
private:
|
|
// position model
|
|
Pose2 pos_;
|
|
|
|
// velocity model
|
|
Pose2 vel_;
|
|
|
|
// timestamp for this observation
|
|
double time_;
|
|
|
|
public:
|
|
/** default contructor: stationary point at origin at zero time*/
|
|
ControlPoint();
|
|
|
|
/** full constructor */
|
|
ControlPoint(const Pose2& pos, const Pose2& vel, double time);
|
|
|
|
/** manual constructor - specify each Pose2 in full */
|
|
ControlPoint(double posx, double posy, double posr,
|
|
double velx, double vely, double velr, double time);
|
|
|
|
/** default destructor */
|
|
virtual ~ControlPoint() {}
|
|
|
|
/** Standard print function with optional label */
|
|
virtual void print(const std::string& name="") const;
|
|
|
|
/** Equality up to a tolerance */
|
|
virtual bool equals(const ControlPoint& expected, double tol=1e-9) const;
|
|
|
|
/* Access functions */
|
|
Pose2 pos() const { return pos_; }
|
|
Pose2 vel() const { return vel_; }
|
|
double time() const { return time_; }
|
|
|
|
/**
|
|
* Exmap function to add a delta configuration to the point
|
|
* NOTE: in handling rotation, the position will have its
|
|
* range bounded to -pi < r < pi, but the velocity
|
|
* can be larger than 2pi, as this would represent that
|
|
* the angular velocity will do more than a full rotation
|
|
* in a time step.
|
|
*/
|
|
ControlPoint exmap(const Vector& delta);
|
|
};
|
|
// comparison
|
|
|
|
}
|
|
|
|
|
|
|