wbc
PotentialField.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <Eigen/Core>
4#include <stdexcept>
5#include <memory>
6
7namespace wbc{
8
13public:
15 PotentialField(const uint _dimension, const std::string& _name = "unset")
16 : dimension(_dimension),
17 name(_name){
18 assert(dimension > 0);
19 influence_distance = std::numeric_limits<double>::infinity(); //Initialize with inifinite maximum influence distance
20 distance.setConstant(dimension, std::numeric_limits<double>::quiet_NaN());
21 gradient.setConstant(dimension, std::numeric_limits<double>::quiet_NaN());
22 pot_field_center.setConstant(dimension, std::numeric_limits<double>::quiet_NaN());
23 }
24
25 virtual ~PotentialField(){}
26
31 virtual const Eigen::VectorXd& update(const Eigen::VectorXd &position) = 0;
32
35
38
40 Eigen::VectorXd distance;
41
43 Eigen::VectorXd pot_field_center;
44
46 Eigen::VectorXd gradient;
47
49 const std::string name;
50};
51
52typedef std::shared_ptr<PotentialField> PotentialFieldPtr;
53
54}
55
Eigen::VectorXd distance
Definition PotentialField.hpp:40
const std::string name
Definition PotentialField.hpp:49
PotentialField(const uint _dimension, const std::string &_name="unset")
Definition PotentialField.hpp:15
uint dimension
Definition PotentialField.hpp:34
virtual const Eigen::VectorXd & update(const Eigen::VectorXd &position)=0
Implement in derived class. Compute control update according to potential field equation.
Eigen::VectorXd gradient
Definition PotentialField.hpp:46
virtual ~PotentialField()
Definition PotentialField.hpp:25
double influence_distance
Definition PotentialField.hpp:37
Eigen::VectorXd pot_field_center
Definition PotentialField.hpp:43
Definition ContactsAccelerationConstraint.cpp:3
std::shared_ptr< PotentialField > PotentialFieldPtr
Definition PotentialField.hpp:52