Roadmap

download

Technical roadmap

The roadmap is jointly defined by the Consortium Members with the developer community at the SOFA Technical Committee (STC). This committee is open and free for all, however votes for the roadmap are restricted to Consortium Members.
Read more on the governance.

Previous edition (STC#17) took place in Strasbourg from June 10 to 12th 2024. During this meeting, the committee voted the following roadmap:

Matrix assembly API in SOFA

  • Geometric stiffness to be implemented for some important non-linear mappings
  • Investigate the assembly of the right-hand side

Constraint modernization

  • Implementation of a direct approach for the constraint resolution, which will firstly require the implementation of a full Newton-Raphson scheme
  • Separate constraint model into the combination of a mapping and a simple constraint

Refactor object registration

  • Create POC (continue PR)
  • Create compatibility layer
  • Agree on mechanism
  • Deploy in the code base
  • Refactor meta plugins

Conda packaging

  • Update and finalize packaging with the new v24.06 release

Performance regression tests

  • Define the required hardware
  • Define the output of the tests
  • Define the scenes to run
  • Build the scripts
  • Define the environment (compiler optimization)
  • Build a dedicated dashboard

Updated and automated documentation

  • Generalize access to component information
    • Dump json → #4775
    • Modify scripts of SofaDocGenerator
  • Prepare the documentation page on website
    • Merge into github.com/sofa-framework/doc as a branch (actually 3 branches)
    • Recursive redirection to sofa-framework
    • Add button to get back to SOFA website from the doc and update theme
  • Current doc
    • deletion of unneeded parts in github/doc (data, examples) to avoid duplicates
    • modify all equations into usual Latex equations
    • do relative link url references
  • Define specification on how to document plugins: GitHub Actions to generate and integrate to the general SOFA doc
  • Formalize SOFA learning paths for new users

Cosserat rod plugin

  • Work on a 4-DOF template (torsion, bendings and stretching)
  • Co-axial beam modeling
  • Implement non-linear mapping contributions

Robotic-dedicated application

  • Viewer: hire the engineer
  • Modeler: write specifications for future sub-contracting
  • SOFA-Pinocchio integration as a plugin replacing the ArticulatedSystemMapping

RL in soft-robotics

  • SofaGym: use simulation restart for path planning of the catheter navigation scene

Model Order Reduction plugin

  • Regression test on standard and reduced scenes
  • Add examples/utilities for partitioned reduction
  • CUDA implementation
  • Develop collision reduction and document it
  • Update reduction process with new Prefabs and leverage python3 capabilities
  • Add documentation on installation on different OS
  • Fix the graphical user interface

Validation & Verification

  • Browse found papers
  • Make a report
  • Reference mechanical tests
    • Define regular tests in mechanics
    • Write such tests in collaboration
      (indiedev, intern, subcontracting)
  • Add tests on material forcefields
    (with multiple parameters)

More projects

Besides the main roadmap tasks, a lot of projects are going to evolve in the next 6 months. Never hesitate to join the force or share your own contribution project at the next Technical Committee!

Automatic differentiation

  • Parallel work on python demonstration until SOFA week : synch point in the second half of September
    • Etienne will work on his python version of SOFA, trying to integrate Willow’s soft to it
    • Leo will continue his work on auto differentiation of dynamic simulation.
  • Take a look at Warp to get how the differentiable data is implemented (responsible to be defined)
  • Take a look at Pinnochio to see how differentiation is done (Etienne)

Update of components

  • Not allow new components to have several input data computing the same thing
  • Apply a if(componentStateIsValid or Undefined) to all visitors
    • check which component is not using componentState
    • test feature
  • In a issue, start a list of component handling componentState
  • Suggest a list of flags for Data BaseData.h:50 DataFlagsEnum
  • UniformMass and ConstantForceField could illustrate the design of Engines subdividing tasks
    • Implement an Engine totalMass/totalForce → vertexMass / forces vector
    • Keep only one Callback
  • Open discussions on Data categories: implement behavior
    • live-update data (callback associated)
    • init-only data
    • input / output (read-only, unique)
  • Status of data
    • Define the status of a data, whether it is following a defined behavior or not
      • by default Undefined
      • else one among : live-update, init-only
    • Separated status : input/output/undefined

Collision Algorithms plugin

  • Clarify licensing (no GPL wanted), suggest to move to LGPL (agreement of the author)
  • Comparison with SOFA
    • Create two scene doing the same with the two approaches
    • Compare scenes implementations / Execution / Performances
  • List scene that cannot be implemented in SOFA currently and are accessible with those plugins
  • With those tests, define the concepts to implement in the Core inside of the current collision pipeline.
    • Keep high level concepts and apply them to the current implementation instead of simply replacing the implementation by the one from the plugin.

Implementation of a Newton Raphson solver

  • Implementation of a Newton-Raphson in EulerImplicitSolver (without line search)
  • Line search (bibliography) and implementation

New rendering using BGFX library

  • Create Plugin integrating bgfx.cmake
  • BGFXModel
    • DrawTool API for BGFX
    • Make available the choice of the backend to the user and platform-dependent
Back to Top