#include <misc_edges.h>

Public Types | |
| using | Ptr = std::shared_ptr< TwoScalarEqualEdge > |
| using | UPtr = std::unique_ptr< TwoScalarEqualEdge > |
Public Types inherited from corbo::Edge< ScalarVertex, ScalarVertex > | |
| using | ConstPtr = std::shared_ptr< const Edge > |
| using | Ptr = std::shared_ptr< Edge > |
| using | UPtr = std::unique_ptr< Edge > |
| using | VertexContainer = std::array< VertexInterface *, numVerticesCompileTime > |
| Typedef to represent the vertex container. More... | |
Public Types inherited from corbo::BaseEdge | |
| using | Ptr = std::shared_ptr< BaseEdge > |
| using | UPtr = std::unique_ptr< BaseEdge > |
Public Types inherited from corbo::EdgeInterface | |
| using | Ptr = std::shared_ptr< EdgeInterface > |
| using | UPtr = std::unique_ptr< EdgeInterface > |
Public Member Functions | |
| void | computeValues (Eigen::Ref< Eigen::VectorXd > values) override |
| Compute function values. More... | |
| int | getDimension () const override |
| Get dimension of the edge (dimension of the cost-function/constraint value vector) More... | |
| bool | isLeastSquaresForm () const override |
| Defines if the edge is formulated as Least-Squares form. More... | |
| bool | isLinear () const override |
| Return true if the edge is linear (and hence its Hessian is always zero) More... | |
| TwoScalarEqualEdge (ScalarVertex &s1, ScalarVertex &s2) | |
Public Member Functions inherited from corbo::Edge< ScalarVertex, ScalarVertex > | |
| Edge ()=delete | |
| Edge (VerticesT &... args) | |
| Construct edge by providing connected vertices. More... | |
| int | getNumVertices () const override |
| Return number of attached vertices. More... | |
| const VertexInterface * | getVertex (int idx) const override |
| VertexInterface * | getVertexRaw (int idx) override |
Get access to vertex with index idx (0 <= idx < numVertices) More... | |
| bool | providesJacobian () const override |
| Return true if a custom Jacobian is provided (e.g. computeJacobian() is overwritten) More... | |
| int | verticesDimension () const override |
| Return the combined dimension of all attached vertices (excluding fixed vertex components) More... | |
Public Member Functions inherited from corbo::BaseEdge | |
| virtual void | computeHessian (int vtx_idx_i, int vtx_idx_j, const Eigen::Ref< const Eigen::MatrixXd > &block_jacobian_i, Eigen::Ref< Eigen::MatrixXd > block_hessian_ij, const double *multipliers=nullptr, double weight=1.0) |
| virtual void | computeHessianInc (int vtx_idx_i, int vtx_idx_j, const Eigen::Ref< const Eigen::MatrixXd > &block_jacobian_i, Eigen::Ref< Eigen::MatrixXd > block_hessian_ij, const double *multipliers=nullptr, double weight=1.0) |
| Compute edge block Hessian for a given vertex pair. More... | |
| virtual void | computeHessianInc (int vtx_idx_i, int vtx_idx_j, Eigen::Ref< Eigen::MatrixXd > block_hessian_ij, const double *multipliers=nullptr, double weight=1.0) |
| virtual void | computeJacobian (int vtx_idx, Eigen::Ref< Eigen::MatrixXd > block_jacobian, const double *multipliers=nullptr) |
| Compute edge block jacobian for a given vertex. More... | |
| int | getEdgeIdx () const |
| Retrieve current edge index (warning, this value is determined within the related HyperGraph) More... | |
| virtual bool | providesHessian () const |
| Return true if a custom Hessian is provided (e.g. computeHessian() is overwritten) More... | |
| void | reserveCacheMemory (int num_value_vectors, int num_jacobians) |
| void | reserveValuesCacheMemory (int num_value_vectors) |
| void | reserveJacobiansCacheMemory (int num_jacobians) |
| void | computeValuesCached () |
| Call computeValues() and store result to previously allocated internal cache (call allocateInteralValuesCache() first once) More... | |
| void | computeSquaredNormOfValuesCached () |
| compute the specialied squared-norm method for computing the values (note only the first element in the values cache is used) More... | |
| EdgeCache & | getCache () |
| Retreive values computed previously via computeValuesCached() More... | |
| const EdgeCache & | getCache () const |
Public Member Functions inherited from corbo::EdgeInterface | |
| virtual double | computeSquaredNormOfValues () |
| virtual double | computeSumOfValues () |
| int | getNumFiniteVerticesLowerBounds () const |
| int | getNumFiniteVerticesUpperBounds () const |
| virtual | ~EdgeInterface () |
| Virtual destructor. More... | |
Additional Inherited Members | |
Static Public Attributes inherited from corbo::Edge< ScalarVertex, ScalarVertex > | |
| static constexpr const int | numVerticesCompileTime |
| Return number of vertices at compile-time. More... | |
Protected Attributes inherited from corbo::Edge< ScalarVertex, ScalarVertex > | |
| const VertexContainer | _vertices |
| Vertex container. More... | |
Protected Attributes inherited from corbo::BaseEdge | |
| EdgeCache | _cache |
| int | _edge_idx = 0 |
Definition at line 40 of file misc_edges.h.
| using corbo::TwoScalarEqualEdge::Ptr = std::shared_ptr<TwoScalarEqualEdge> |
Definition at line 43 of file misc_edges.h.
| using corbo::TwoScalarEqualEdge::UPtr = std::unique_ptr<TwoScalarEqualEdge> |
Definition at line 44 of file misc_edges.h.
|
inlineexplicit |
Definition at line 46 of file misc_edges.h.
|
inlineoverridevirtual |
Compute function values.
Here, the actual cost/constraint function values are computed:
| [in] | values | values should be stored here according to getDimension(). |
Implements corbo::Edge< ScalarVertex, ScalarVertex >.
Definition at line 57 of file misc_edges.h.
|
inlineoverridevirtual |
Get dimension of the edge (dimension of the cost-function/constraint value vector)
Implements corbo::Edge< ScalarVertex, ScalarVertex >.
Definition at line 49 of file misc_edges.h.
|
inlineoverridevirtual |
Defines if the edge is formulated as Least-Squares form.
Least-squares cost terms are defined as
and the function values and Jacobian are computed for
rather than for
. Specialiezed least-squares solvers require the optimization problem to be defined in this particular form. Other solvers can automatically compute the square of least-squares edges if required. However, the other way round is more restrictive: general solvers might not cope with non-least-squares forms.
Note, in the LS-form case computeValues() computes e(x) and otherwise f(x).
Reimplemented from corbo::BaseEdge.
Definition at line 55 of file misc_edges.h.
|
inlineoverridevirtual |
Return true if the edge is linear (and hence its Hessian is always zero)
Implements corbo::Edge< ScalarVertex, ScalarVertex >.
Definition at line 51 of file misc_edges.h.