File tree Expand file tree Collapse file tree 5 files changed +65
-1
lines changed
common/ocs2_switched_model_interface
include/ocs2_switched_model_interface/terrain Expand file tree Collapse file tree 5 files changed +65
-1
lines changed Original file line number Diff line number Diff line change @@ -77,6 +77,7 @@ add_library(${PROJECT_NAME}
7777 src/logic/DynamicsParametersSynchronizedModule.cpp
7878 src/logic/SwitchedModelModeScheduleManager.cpp
7979 src/ros_msg_conversions/RosMsgConversions.cpp
80+ src/terrain/PlanarSignedDistanceField.cpp
8081 src/terrain/PlanarTerrainModel.cpp
8182 src/terrain/PlaneFitting.cpp
8283 src/terrain/TerrainPlane.cpp
Original file line number Diff line number Diff line change 1+ #pragma once
2+
3+ #include " ocs2_switched_model_interface/core/SwitchedModel.h"
4+ #include " ocs2_switched_model_interface/terrain/SignedDistanceField.h"
5+ #include " ocs2_switched_model_interface/terrain/TerrainModel.h"
6+
7+ namespace switched_model {
8+
9+ /* *
10+ * Implements a flat terrain signed distance field
11+ */
12+ class PlanarSignedDistanceField : public SignedDistanceField {
13+ public:
14+ EIGEN_MAKE_ALIGNED_OPERATOR_NEW
15+
16+ explicit PlanarSignedDistanceField (TerrainPlane terrainPlane);
17+
18+ ~PlanarSignedDistanceField () override = default ;
19+ PlanarSignedDistanceField* clone () const override { return new PlanarSignedDistanceField (*this ); };
20+
21+ scalar_t value (const vector3_t & position) const override ;
22+
23+ vector3_t derivative (const vector3_t & position) const override ;
24+
25+ std::pair<scalar_t , vector3_t > valueAndDerivative (const vector3_t & position) const override ;
26+
27+ protected:
28+ PlanarSignedDistanceField (const PlanarSignedDistanceField& other);
29+
30+ private:
31+ TerrainPlane terrainPlane_;
32+ };
33+
34+ } // namespace switched_model
Original file line number Diff line number Diff line change 55#pragma once
66
77#include " ocs2_switched_model_interface/core/SwitchedModel.h"
8+ #include " ocs2_switched_model_interface/terrain/PlanarSignedDistanceField.h"
89#include " ocs2_switched_model_interface/terrain/TerrainModel.h"
910
1011namespace switched_model {
@@ -25,8 +26,11 @@ class PlanarTerrainModel : public TerrainModel {
2526
2627 std::vector<vector2_t > getHeightProfileAlongLine (const vector3_t & position1InWorld, const vector3_t & position2InWorld) const override ;
2728
29+ const SignedDistanceField* getSignedDistanceField () const override { return &sdf_; }
30+
2831 private:
2932 TerrainPlane terrainPlane_;
33+ PlanarSignedDistanceField sdf_;
3034};
3135
3236} // namespace switched_model
Original file line number Diff line number Diff line change 1+ //
2+ // Created by rgrandia on 08.09.22.
3+ //
4+
5+ #include " ocs2_switched_model_interface/terrain/PlanarSignedDistanceField.h"
6+
7+ namespace switched_model {
8+
9+ PlanarSignedDistanceField::PlanarSignedDistanceField (TerrainPlane terrainPlane) : terrainPlane_(std::move(terrainPlane)) {}
10+
11+ PlanarSignedDistanceField::PlanarSignedDistanceField (const PlanarSignedDistanceField& other) : terrainPlane_(other.terrainPlane_) {}
12+
13+ scalar_t PlanarSignedDistanceField::value (const vector3_t & position) const {
14+ return terrainSignedDistanceFromPositionInWorld (position, terrainPlane_);
15+ }
16+
17+ vector3_t PlanarSignedDistanceField::derivative (const vector3_t & position) const {
18+ return surfaceNormalInWorld (terrainPlane_);
19+ }
20+
21+ std::pair<scalar_t , vector3_t > PlanarSignedDistanceField::valueAndDerivative (const vector3_t & position) const {
22+ return {value (position), derivative (position)};
23+ }
24+
25+ } // namespace switched_model
Original file line number Diff line number Diff line change 66
77namespace switched_model {
88
9- PlanarTerrainModel::PlanarTerrainModel (TerrainPlane terrainPlane) : terrainPlane_(std::move(terrainPlane)) {}
9+ PlanarTerrainModel::PlanarTerrainModel (TerrainPlane terrainPlane) : terrainPlane_(terrainPlane), sdf_( std::move(terrainPlane)) {}
1010
1111TerrainPlane PlanarTerrainModel::getLocalTerrainAtPositionInWorldAlongGravity (
1212 const vector3_t & positionInWorld, std::function<scalar_t (const vector3_t &)> penaltyFunction) const {
You can’t perform that action at this time.
0 commit comments