Skip to content

Commit 5ecd333

Browse files
committed
move model name prefix and folder to modelSettings
1 parent cb912e6 commit 5ecd333

File tree

11 files changed

+26
-18
lines changed

11 files changed

+26
-18
lines changed

common/ocs2_quadruped_interface/src/QuadrupedInterface.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ std::unique_ptr<ocs2::PreComputation> QuadrupedInterface::createPrecomputation()
6565
}
6666

6767
std::unique_ptr<ocs2::StateInputCost> QuadrupedInterface::createMotionTrackingCost() const {
68-
return std::unique_ptr<ocs2::StateInputCost>(
69-
new MotionTrackingCost(costSettings(), getKinematicModelAd(), modelSettings().recompileLibraries_));
68+
return std::unique_ptr<ocs2::StateInputCost>(new MotionTrackingCost(costSettings(), getKinematicModelAd(), modelSettings()));
7069
}
7170

7271
std::unique_ptr<ocs2::StateCost> QuadrupedInterface::createMotionTrackingTerminalCost(matrix_t Q) const {

common/ocs2_switched_model_interface/include/ocs2_switched_model_interface/core/ModelSettings.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ Algorithm fromAlgorithmName(std::string name);
1313
struct ModelSettings {
1414
Algorithm algorithm_ = Algorithm::SQP;
1515
bool recompileLibraries_ = true;
16+
std::string robotName_ = "quadruped";
17+
std::string autodiffLibraryFolder_ = "/tmp/ocs2";
1618

1719
scalar_t phaseTransitionStanceTime_ = 0.4;
1820

common/ocs2_switched_model_interface/include/ocs2_switched_model_interface/cost/MotionTrackingCost.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include "ocs2_switched_model_interface/core/ComModelBase.h"
1010
#include "ocs2_switched_model_interface/core/KinematicsModelBase.h"
11+
#include "ocs2_switched_model_interface/core/ModelSettings.h"
1112
#include "ocs2_switched_model_interface/core/SwitchedModel.h"
1213
#include "ocs2_switched_model_interface/logic/SwitchedModelModeScheduleManager.h"
1314

@@ -40,7 +41,7 @@ class MotionTrackingCost final : public ocs2::StateInputCostGaussNewtonAd {
4041
using com_model_t = ComModelBase<ocs2::scalar_t>;
4142
using ad_com_model_t = ComModelBase<ocs2::ad_scalar_t>;
4243

43-
MotionTrackingCost(const Weights& settings, const ad_kinematic_model_t& adKinematicModel, bool recompile);
44+
MotionTrackingCost(const Weights& settings, const ad_kinematic_model_t& adKinematicModel, const ModelSettings& modelSettings);
4445

4546
~MotionTrackingCost() override = default;
4647
MotionTrackingCost* clone() const { return new MotionTrackingCost(*this); }
@@ -57,6 +58,7 @@ class MotionTrackingCost final : public ocs2::StateInputCostGaussNewtonAd {
5758
private:
5859
std::unique_ptr<ad_kinematic_model_t> adKinematicModelPtr_;
5960
ocs2::vector_t sqrtWeights_;
61+
const ModelSettings& modelSettings_;
6062
};
6163

6264
MotionTrackingCost::Weights loadWeightsFromFile(const std::string& filename, const std::string& fieldname, bool verbose = true);

common/ocs2_switched_model_interface/src/core/ModelSettings.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ ModelSettings loadModelSettings(const std::string& filename, bool verbose) {
4444

4545
ocs2::loadData::loadPtreeValue(pt, modelSettings.phaseTransitionStanceTime_, prefix + "phaseTransitionStanceTime", verbose);
4646
ocs2::loadData::loadPtreeValue(pt, modelSettings.recompileLibraries_, prefix + "recompileLibraries", verbose);
47+
ocs2::loadData::loadPtreeValue(pt, modelSettings.robotName_, prefix + "robotName", verbose);
48+
ocs2::loadData::loadPtreeValue(pt, modelSettings.autodiffLibraryFolder_, prefix + "autodiffLibraryFolder", verbose);
4749
ocs2::loadData::loadPtreeValue(pt, modelSettings.analyticalInverseKinematics_, prefix + "analyticalInverseKinematics", verbose);
4850
ocs2::loadData::loadPtreeValue(pt, modelSettings.frictionCoefficient_, prefix + "frictionCoefficient", verbose);
4951
ocs2::loadData::loadPtreeValue(pt, modelSettings.coneRegularization_, prefix + "coneRegularization", verbose);

common/ocs2_switched_model_interface/src/core/SwitchedModelPrecomputation.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,16 @@ SwitchedModelPreComputation::SwitchedModelPreComputation(const SwingTrajectoryPl
1414
const ad_kinematic_model_t& adKinematicModel, const com_model_t& comModel,
1515
const ad_com_model_t& adComModel, ModelSettings settings)
1616
: swingTrajectoryPlannerPtr_(&swingTrajectoryPlanner), robotMass_(comModel.totalMass()) {
17-
std::string libFolder = "/tmp/ocs2";
18-
1917
// intermediate linear outputs
20-
std::string intermediateLibName = "AnymalPrecomputation_intermediateLinearOutputs";
18+
std::string intermediateLibName = settings.robotName_ + "_Precomputation_intermediateLinearOutputs";
2119
auto intermediateDiffFunc = [&](const ad_vector_t& x, ad_vector_t& y) {
2220
// Extract elements from taped input
2321
comkino_state_ad_t state = x.segment(0, STATE_DIM);
2422
comkino_input_ad_t input = x.segment(STATE_DIM, INPUT_DIM);
2523
intermediateLinearOutputs(adComModel, adKinematicModel, state, input, y);
2624
};
2725
intermediateLinearOutputAdInterface_.reset(
28-
new ocs2::CppAdInterface(intermediateDiffFunc, STATE_DIM + INPUT_DIM, intermediateLibName, libFolder));
26+
new ocs2::CppAdInterface(intermediateDiffFunc, STATE_DIM + INPUT_DIM, intermediateLibName, settings.autodiffLibraryFolder_));
2927
tapedStateInput_.resize(STATE_DIM + INPUT_DIM);
3028

3129
const auto initCollisions = kinematicModel.collisionSpheresInBaseFrame(joint_coordinate_t::Zero());
@@ -40,9 +38,10 @@ SwitchedModelPreComputation::SwitchedModelPreComputation(const SwingTrajectoryPl
4038
collisionSpheresDerivative_.resize(maxNumCollisions);
4139

4240
// pre jump linear outputs
43-
std::string prejumpLibName = "AnymalPrecomputation_prejumpLinearOutputs";
41+
std::string prejumpLibName = settings.robotName_ + "_Precomputation_prejumpLinearOutputs";
4442
auto prejumpDiffFunc = [&](const ad_vector_t& x, ad_vector_t& y) { prejumpLinearOutputs(adComModel, adKinematicModel, x, y); };
45-
prejumpLinearOutputAdInterface_.reset(new ocs2::CppAdInterface(prejumpDiffFunc, STATE_DIM, prejumpLibName, libFolder));
43+
prejumpLinearOutputAdInterface_.reset(
44+
new ocs2::CppAdInterface(prejumpDiffFunc, STATE_DIM, prejumpLibName, settings.autodiffLibraryFolder_));
4645

4746
// Generate the models
4847
const bool verbose = true;

common/ocs2_switched_model_interface/src/cost/MotionTrackingCost.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@ Eigen::Matrix<SCALAR_T, -1, 1> computeMotionTargets(const comkino_state_s_t<SCAL
4444

4545
} // namespace
4646

47-
MotionTrackingCost::MotionTrackingCost(const Weights& settings, const ad_kinematic_model_t& adKinematicModel, bool recompile)
48-
: adKinematicModelPtr_(adKinematicModel.clone()) {
47+
MotionTrackingCost::MotionTrackingCost(const Weights& settings, const ad_kinematic_model_t& adKinematicModel,
48+
const ModelSettings& modelSettings)
49+
: adKinematicModelPtr_(adKinematicModel.clone()), modelSettings_(modelSettings) {
4950
// Weights are sqrt of settings
5051
CostElements<ocs2::scalar_t> weightStruct;
5152
weightStruct.eulerXYZ = settings.eulerXYZ.cwiseSqrt();
@@ -61,8 +62,8 @@ MotionTrackingCost::MotionTrackingCost(const Weights& settings, const ad_kinemat
6162
}
6263
sqrtWeights_ = weightStruct.asVector();
6364

64-
initialize(STATE_DIM, INPUT_DIM, CostElements<ocs2::scalar_t>::Size() + sqrtWeights_.size(), "MotionTrackingCost", "/tmp/ocs2",
65-
recompile);
65+
initialize(STATE_DIM, INPUT_DIM, CostElements<ocs2::scalar_t>::Size() + sqrtWeights_.size(),
66+
modelSettings_.robotName_ + "_MotionTrackingCost", modelSettings_.autodiffLibraryFolder_, modelSettings_.recompileLibraries_);
6667
};
6768

6869
ocs2::vector_t MotionTrackingCost::getParameters(ocs2::scalar_t time, const ocs2::TargetTrajectories& targetTrajectories,
@@ -76,8 +77,9 @@ ocs2::vector_t MotionTrackingCost::getParameters(ocs2::scalar_t time, const ocs2
7677

7778
MotionTrackingCost::MotionTrackingCost(const MotionTrackingCost& other)
7879
: ocs2::StateInputCostGaussNewtonAd(other),
80+
adKinematicModelPtr_(other.adKinematicModelPtr_->clone()),
7981
sqrtWeights_(other.sqrtWeights_),
80-
adKinematicModelPtr_(other.adKinematicModelPtr_->clone()) {}
82+
modelSettings_(other.modelSettings_) {}
8183

8284
ocs2::ad_vector_t MotionTrackingCost::costVectorFunction(ocs2::ad_scalar_t time, const ocs2::ad_vector_t& state,
8385
const ocs2::ad_vector_t& input, const ocs2::ad_vector_t& parameters) const {

common/ocs2_switched_model_interface/src/dynamics/ComKinoSystemDynamicsAd.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,8 @@ ComKinoSystemDynamicsAd::ComKinoSystemDynamicsAd(const ad_kinematic_model_t& adK
4444
adComModelPtr_(adComModel.clone()),
4545
dynamicsParametersModulePtr_(&dynamicsParametersModule),
4646
settings_(settings) {
47-
std::string libName = "anymal_dynamics";
48-
std::string libFolder = "/tmp/ocs2";
49-
const bool verbose = settings_.recompileLibraries_;
50-
this->initialize(STATE_DIM, INPUT_DIM, libName, libFolder, settings_.recompileLibraries_, verbose);
47+
const std::string libName = settings_.robotName_ + "_dynamics";
48+
this->initialize(STATE_DIM, INPUT_DIM, libName, settings_.autodiffLibraryFolder_, settings_.recompileLibraries_);
5149
}
5250

5351
ComKinoSystemDynamicsAd::ComKinoSystemDynamicsAd(const ComKinoSystemDynamicsAd& rhs)

ocs2_anymal_loopshaping_mpc/config/c_series/task.info

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ model_settings
22
{
33
algorithm SQP
44
recompileLibraries false
5+
robotName c_series
56

67
analyticalInverseKinematics true
78

ocs2_anymal_loopshaping_mpc/config/d_series/task.info

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ model_settings
22
{
33
algorithm SQP
44
recompileLibraries false
5+
robotName d_series
56

67
analyticalInverseKinematics true
78

ocs2_anymal_mpc/config/c_series/task.info

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ model_settings
22
{
33
algorithm SQP
44
recompileLibraries false
5+
robotName c_series
56

67
analyticalInverseKinematics true
78

0 commit comments

Comments
 (0)