Dmitriy Ogureckiy
Dmitriy Ogureckiy

Reputation: 146

what kind of models would best fit for my leg dynamic's case?

Background

I am using this library and lower_leg_2_parts branch for modeling my robot solo12.

My robot model is loading in Drake from URDF file using AddModelFromFile and after that is connecting the controller to the simulated plant.

What is a deformable body ?

  1. Flexure Joints for Large Range of Motion video from University of Twente (UT).
  2. The book: Design and optimization of large stroke flexure mechanisms by Mark Naves.
  3. LARGE-STROKE FLEXURE HINGES.

I want modeling something like that, for example: enter image description here enter image description here enter image description here

These are real prototypes: enter image description here

Parameter optimization with modeling the nonlinearities all-together I'm performing in the flexible multibody dynamics software SPACAR.

Question

I came to several possible ways to solve this problem: the question is which way is a best ?

  1. I can create rigid part of the robot and 4 flexible leg's parts and then connect their together. We can add rigid bodies via AddModelFromFile and deformable body with RegisterDeformableBody separately and put them in a single plant. The deformable body can be prepared in two ways:

1.1. Deformable body can be simulated with FEM by DeformableModel PyDrake class.

How to connect together deformable and rigid body? I tried, e.g. WeldFrames along with AddFrame,FixedOffsetFrame, but I can't get appropriate bodyB: drake::multibody::Body<double> argument of the deformable model.

In the RegisterDeformableBody method written "The body is represented in the world frame". As I understand there is no way to connect deformable body to the another robot cause deformable body cannot have it's own frame.

1.2. Deformable body can be modeled using C++ ForceElement as mentioned jwnimmer-tri here.

  1. I can model leg as amount of joints, connected like snake's spine with small angle constraints. The problem here is that when I modeled lower leg consisted of 3 links and 2 joints (they are fixed), my leg fell into resonant undamped oscillations. enter image description here

  2. Make a bridge between PyChrono and Drake and use PyChrono for modeling deformable bodies.

Drake Version

the latest from master branch of drake's repository

What operating system are you using?

Ubuntu 20.04

What installation option are you using?

compiled from source code using CMake

P.S.

I am already studied the example deformable_torus.ipynb and learned how to simulate deformable bodies, but there wasn't answer on my question. I went through all the documentation, code, drake's issues, questions here related to Drake and did not find an answer. I say this so that you don't give me cons,then I was banned anyway.

If you required I will provide you instructions for reproducing my program.

Upvotes: 1

Views: 173

Answers (2)

Mitiguy
Mitiguy

Reputation: 191

You may want to investigate using Drake with a linear bushing to model extensional, bending, and torsional stiffness and damping. You may be able to estimate stiffness constants from an existing FEA model. The documentation provides details on how to estimate damping.

Upvotes: 1

jwnimmer-tri
jwnimmer-tri

Reputation: 2449

As of today in Drake, the support for deformable models is still incomplete and under development. So, the process will not be easy (yet).

It does not seem possible currently to specify a deformable geometry via a URDF file. As in the deformable_torus.cc example, you will need to call RegisterDeformableBody manually, after making a GeometryInstance with your tetrahedral mesh *.vtk file.

To remove the non-deformable model, easiest would be to edit (a copy of) your URDF file to remove the proximity geometries you are about to replace.

Upvotes: 2

Related Questions