Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Elastica Kinematics #25

Open
mstoelzle opened this issue Jan 16, 2022 · 3 comments
Open

Elastica Kinematics #25

mstoelzle opened this issue Jan 16, 2022 · 3 comments
Assignees

Comments

@mstoelzle
Copy link
Contributor

mstoelzle commented Jan 16, 2022

I am creating this issue for future reference. Please implement first a soft robotic arm and a sphere into the simulation as already discussed previously.

Afterwards, I think the next step is to add some kinematics. This will be quite a bit more mathematical, than all the coding in the first part of the internship :) I am thinking of the following structure:

  • The package should be named elastica_kinematics
  • We have these rod states now. These are way to high-dimensional though to use them for any kind of feedback control purposes. Additionally, we want to re-use as much of the learnings from literature as possible. Therefore, we should derive a standard Piecewise Constant Curvature (PCC) kinematic description of the soft robotic state. This means that we model every segment to have constant curvature, even if there are small deviations in the rod states of one segment. The node could have the name RodStatesToPCC with the RodsState.msg as an input and the PCC kinematic states as an output. We aim to use the following PCC convention:
Della Santina, Cosimo, Antonio Bicchi, and Daniela Rus. "On an improved state parametrization for soft robots with piecewise constant curvature and its use in model based control." IEEE Robotics and Automation Letters 5.2 (2020): 1001-1008.

The next components should (hopefully) be applicable for any soft robotic arm, not only for rods simulated within the elastica simulator. Thus, we should probably put them into a separate repo with the name ros2-pcc_kinematics

  • A main component of (inverse) kinematics is usually the Jacobian. You will need to derive this symbolically. However, it is very computationally inefficient to do this at run-time. Therefore, I propose to add a script scripts/derive_jacobian.py, which computes the Jacobian symbolically using sympy and afterwards saves the result as a compiled C++ library. Then, our ROS nodes can access this C++ library for fast usage at run-time. We should have a Jacobian available at the minimum for every tip of each segment. Ideally, we can also evaluate the Jacobian within each segment as a function of a running variable s with minimum 0 (e.g. the base of the segment) and 1 as the maximum (e.g. the tip of the segment).
  • Please implement a ForwardKinematics node, which subscribes to a topic with PCC configuration states and publishes the position and orientation of the tip of each segment.
@RUFFY-369
Copy link
Collaborator

Hi @mstoelzle , please review the latest commits regarding this issue

@mstoelzle
Copy link
Contributor Author

mstoelzle commented Mar 1, 2022

Hi @mstoelzle , please review the latest commits regarding this issue

I have created the following issues to address specific concerns with the current implementation:

@RUFFY-369
Copy link
Collaborator

Hi @mstoelzle , please review the latest commits regarding this issue

I have created the following issues to address specific concerns with the current implementation:

Sure, will go through them asap to solve

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants