Add inner radius as a parameter for the sdf gear plugin.
PiperOrigin-RevId: 578789045 Change-Id: Id69418d6b1adcce404927de4ed68c94a5ec1f66f
This commit is contained in:
committed by
Copybara-Service
parent
3c0a56c1e5
commit
e6dc5ed176
+6
-3
@@ -82,6 +82,9 @@ static mjtNum distance2D(const mjtNum p[3],
|
||||
mjtNum h = 2.2 / Pd;
|
||||
|
||||
mjtNum innerR = Ro - h - 0.14*D;
|
||||
if (attributes[4] >= 0.0) {
|
||||
innerR = attributes[4] / 2.0;
|
||||
}
|
||||
|
||||
// Early exit
|
||||
if (innerR - rho > 0.0)
|
||||
@@ -144,10 +147,10 @@ static mjtNum distance(const mjtNum p[3],
|
||||
} // namespace
|
||||
|
||||
// factory function
|
||||
std::optional<Gear> Gear::Create(
|
||||
const mjModel* m, mjData* d, int instance) {
|
||||
std::optional<Gear> Gear::Create(const mjModel* m, mjData* d, int instance) {
|
||||
if (CheckAttr("alpha", m, instance) && CheckAttr("diameter", m, instance) &&
|
||||
CheckAttr("teeth", m, instance)) {
|
||||
CheckAttr("teeth", m, instance) &&
|
||||
CheckAttr("innerdiameter", m, instance)) {
|
||||
return Gear(m, d, instance);
|
||||
} else {
|
||||
mju_warning("Invalid parameter specification in Gear plugin");
|
||||
|
||||
+4
-4
@@ -16,7 +16,6 @@
|
||||
#define MUJOCO_PLUGIN_SDF_GEAR_H_
|
||||
|
||||
#include <optional>
|
||||
#include <vector>
|
||||
|
||||
#include <mujoco/mjdata.h>
|
||||
#include <mujoco/mjmodel.h>
|
||||
@@ -27,10 +26,11 @@
|
||||
namespace mujoco::plugin::sdf {
|
||||
|
||||
struct GearAttribute {
|
||||
static constexpr int nattribute = 4;
|
||||
static constexpr int nattribute = 5;
|
||||
static constexpr char const* names[nattribute] = {"alpha", "diameter",
|
||||
"teeth", "thickness"};
|
||||
static constexpr mjtNum defaults[nattribute] = { 0, 2.8, 25, .2 };
|
||||
"teeth", "thickness",
|
||||
"innerdiameter"};
|
||||
static constexpr mjtNum defaults[nattribute] = { 0, 2.8, 25, .2 , -1};
|
||||
};
|
||||
|
||||
class Gear {
|
||||
|
||||
Reference in New Issue
Block a user