49 lines
1.3 KiB
C++
49 lines
1.3 KiB
C++
/**
|
|
* @file ControlPoint.cpp
|
|
* @brief Implementation of ControlPoint
|
|
* @author Alex Cunningham
|
|
*/
|
|
|
|
#include <iostream>
|
|
#include "ControlPoint.h"
|
|
|
|
using namespace std;
|
|
using namespace gtsam;
|
|
|
|
ControlPoint::ControlPoint()
|
|
: time_(0.0)
|
|
{ // Note that default pose2 constructors are at (0,0,0)
|
|
}
|
|
|
|
ControlPoint::ControlPoint(const Pose2& pos, const Pose2& vel, double time)
|
|
: pos_(pos), vel_(vel), time_(time)
|
|
{
|
|
}
|
|
|
|
ControlPoint::ControlPoint(double posx, double posy, double posr,
|
|
double velx, double vely, double velr, double time)
|
|
: pos_(posx, posy, posr), vel_(velx, vely, velr), time_(time)
|
|
{
|
|
}
|
|
|
|
void ControlPoint::print(const std::string& name) const {
|
|
cout << "ControlPoint: " << name << " at time = " << time_ << endl;
|
|
pos_.print("Position");
|
|
vel_.print("Velocity");
|
|
}
|
|
|
|
bool ControlPoint::equals(const ControlPoint& pt, double tol) const {
|
|
bool time_equal = abs(time_-pt.time()) < tol;
|
|
return time_equal && pos_.equals(pt.pos()) && vel_.equals(pt.vel());
|
|
}
|
|
|
|
ControlPoint ControlPoint::exmap(const Vector& delta) {
|
|
//TODO: bound the angle for position to -pi < theta < pi
|
|
Pose2 newPos(pos_.x()+delta(0), pos_.y()+delta(1), pos_.theta()+delta(2));
|
|
Pose2 newVel(vel_.x()+delta(3), vel_.y()+delta(4), vel_.theta()+delta(5));
|
|
double newTime = time_ + delta(6);
|
|
return ControlPoint(newPos, newVel, newTime);
|
|
}
|
|
|
|
|