Add control plugin API.
PiperOrigin-RevId: 493311715 Change-Id: Iccd99fb26004f39832818e378f01f9149a0e3e3b
This commit is contained in:
committed by
Copybara-Service
parent
60fbb77b2a
commit
e4f1d584ad
@@ -277,7 +277,7 @@ void Cable::RegisterPlugin() {
|
||||
mjp_defaultPlugin(&plugin);
|
||||
|
||||
plugin.name = "mujoco.elasticity.cable";
|
||||
plugin.type |= mjPLUGIN_PASSIVE;
|
||||
plugin.capabilities |= mjPLUGIN_PASSIVE;
|
||||
|
||||
const char* attributes[] = {"twist", "bend", "flat", "vmax"};
|
||||
plugin.nattribute = sizeof(attributes) / sizeof(attributes[0]);
|
||||
@@ -297,10 +297,11 @@ return 0;
|
||||
delete reinterpret_cast<Cable*>(d->plugin_data[instance]);
|
||||
d->plugin_data[instance] = 0;
|
||||
};
|
||||
plugin.compute = +[](const mjModel* m, mjData* d, int instance, int type) {
|
||||
auto* elasticity = reinterpret_cast<Cable*>(d->plugin_data[instance]);
|
||||
elasticity->Compute(m, d, instance);
|
||||
};
|
||||
plugin.compute =
|
||||
+[](const mjModel* m, mjData* d, int instance, int capability_bit) {
|
||||
auto* elasticity = reinterpret_cast<Cable*>(d->plugin_data[instance]);
|
||||
elasticity->Compute(m, d, instance);
|
||||
};
|
||||
plugin.visualize =
|
||||
+[](const mjModel* m, mjData* d, mjvScene* scn, int instance) {
|
||||
auto* elasticity = reinterpret_cast<Cable*>(d->plugin_data[instance]);
|
||||
|
||||
@@ -30,8 +30,7 @@ class Cable {
|
||||
public:
|
||||
// Creates a new Cable instance (allocated with `new`) or
|
||||
// returns null on failure.
|
||||
static std::optional<Cable> Create(const mjModel* m, mjData* d,
|
||||
int instance);
|
||||
static std::optional<Cable> Create(const mjModel* m, mjData* d, int instance);
|
||||
Cable(Cable&&) = default;
|
||||
~Cable() = default;
|
||||
|
||||
|
||||
@@ -347,7 +347,7 @@ void Solid::RegisterPlugin() {
|
||||
mjp_defaultPlugin(&plugin);
|
||||
|
||||
plugin.name = "mujoco.elasticity.solid";
|
||||
plugin.type |= mjPLUGIN_PASSIVE;
|
||||
plugin.capabilities |= mjPLUGIN_PASSIVE;
|
||||
|
||||
const char* attributes[] = {"nx", "ny", "nz", "young", "poisson", "damping"};
|
||||
plugin.nattribute = sizeof(attributes) / sizeof(attributes[0]);
|
||||
@@ -367,10 +367,11 @@ void Solid::RegisterPlugin() {
|
||||
delete reinterpret_cast<Solid*>(d->plugin_data[instance]);
|
||||
d->plugin_data[instance] = 0;
|
||||
};
|
||||
plugin.compute = +[](const mjModel* m, mjData* d, int instance, int type) {
|
||||
auto* elasticity = reinterpret_cast<Solid*>(d->plugin_data[instance]);
|
||||
elasticity->Compute(m, d, instance);
|
||||
};
|
||||
plugin.compute =
|
||||
+[](const mjModel* m, mjData* d, int instance, int capability_bit) {
|
||||
auto* elasticity = reinterpret_cast<Solid*>(d->plugin_data[instance]);
|
||||
elasticity->Compute(m, d, instance);
|
||||
};
|
||||
|
||||
mjp_registerPlugin(&plugin);
|
||||
}
|
||||
|
||||
@@ -33,8 +33,7 @@ struct Stencil {
|
||||
class Solid {
|
||||
public:
|
||||
// Returns a new Solid instance or nullopt on failure.
|
||||
static std::optional<Solid> Create(const mjModel* m, mjData* d,
|
||||
int instance);
|
||||
static std::optional<Solid> Create(const mjModel* m, mjData* d, int instance);
|
||||
Solid(Solid&&) = default;
|
||||
|
||||
Solid& operator=(Solid&& other) = default;
|
||||
|
||||
Reference in New Issue
Block a user