I am trying to simulate a simple bar-link robot with a contracting actuator with a non-linear force strain curve (force decreases roughly exponentially as the strain of the actuator increases). I have created the sdf of the robot with a prismatic joint in place of the actuator.
The issue I have is that I need to actuate this joint with a force that changes based on the current position of the prismatic actuator. How could I model this in drake? As far as I could find the JointActuator only allows for a constant force to be applied.
I am trying to simulate this using pydrake.
CodePudding user response:
One way to do this is via a ForceElement; see eg https://github.com/RobotLocomotion/drake/blob/master/multibody/tree/door_hinge.h for an example of using a force element to create a complex force and potential energy profile on a joint.
(That's all C , but I expect the python approach would be similar)
CodePudding user response:
See also the Propeller
class as a way to do that as a System
(instead of ForceElement
), which can have an input port and might be more suitable for an actuator model.
https://drake.mit.edu/doxygen_cxx/classdrake_1_1multibody_1_1_propeller.html