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);
 | |
| }
 | |
| 
 | |
| 
 |