Skip to content

Commit

Permalink
Merge pull request #123 from epernod/inf_readme
Browse files Browse the repository at this point in the history
[Documentation] Update Readme and regroup all documentation in md files
  • Loading branch information
hugtalbot authored Jan 10, 2024
2 parents a243f9c + 9f82a32 commit 76ca5a6
Show file tree
Hide file tree
Showing 24 changed files with 483 additions and 364 deletions.
36 changes: 23 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,29 @@
BeamAdapter plugin
------------------
# BeamAdapter plugin

This SOFA plugin implements a 1-dimensional Finite Element Method (FEM) in the context of coil embolization in neurology. The method is based on Kirchhoff rod theory, and allows to simulate any 1D flexible structure, like catheters or guidewires. Moreover, an adaptive formulation is proposed to model the insertion of such medical devices.
[![Documentation](https://img.shields.io/badge/doc-on_website-green.svg)](https://sofa-framework.github.io/BeamAdapter/)
[![Support](https://img.shields.io/badge/support-on_GitHub_Discussions-blue.svg)](https://github.com/sofa-framework/sofa/discussions/categories/beamadapter)
[![Gitter](https://img.shields.io/badge/chat-on_Gitter-ff69b4.svg)](https://app.gitter.im/#/room/#sofa-framework:gitter.im)

## Description

This SOFA plugin implements a 1-dimensional Finite Element Method (FEM) based on the Kirchhoff rod theory and allows to simulate any 1D flexible structure, like catheters, guidewires or coils in a medical context.

# Related publications
This plugin proposes an adaptive implementation allowing for the interactive deployment of one or several concentric tools. This approach is therefore especially well designed for interventional radiology interventions, more especially the simulation of a catheter deployment.

<img align="center" width="50%" height="auto" src="./doc/screenshots/WireSections.png">



## Build instructions

This plugin relies on the open-source project SOFA. To build the sources of this plugin, you can follow the associated "[Build a plugin from sources](https://www.sofa-framework.org/community/doc/plugins/build-a-plugin-from-sources/)" documentation page.

## Documentation

- [API Documentation](https://sofa-framework.github.io/BeamAdapter/)
- [Full readme documentation](./doc)

## Related publications

If you are using this code in your research work, please cite us!

Expand All @@ -16,12 +34,4 @@ If you are using this code in your research work, please cite us!
If this work is useful for your industrial application, your [support](https://www.sofa-framework.org/consortium/support-us/) would be most welcome.


<img align="center" width="80%" height="auto" src="https://www.sofa-framework.org/wp-content/uploads/2016/08/coils.jpg">

# Build instructions

This plugin relies on the open-source project SOFA. To build the sources of this plugin, you can follow the associated "[Build a plugin from sources](https://www.sofa-framework.org/community/doc/plugins/build-a-plugin-from-sources/)" documentation page.

# API documentation

https://sofa-framework.github.io/BeamAdapter/
<img align="center" width="50%" height="auto" src="https://www.sofa-framework.org/wp-content/uploads/2016/08/coils.jpg">
36 changes: 0 additions & 36 deletions doc/BeamAdapter.bib

This file was deleted.

Binary file removed doc/BeamAdapter.pdf
Binary file not shown.
116 changes: 0 additions & 116 deletions doc/BeamAdapter.tex

This file was deleted.

52 changes: 43 additions & 9 deletions doc/README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,54 @@
Beam Adapter Documentation
=======================
Contributors: ...

### Introduction
All contributors are listed in the [Author.md](https://github.com/sofa-framework/BeamAdapter/blob/master/Authors.md) file.

## 1. Introduction

The plugin Beam Adpater allows to have a dynamic implementation of the FEM beam elements.
The underlying mechanical fundations are based on beam theory (https://en.wikipedia.org/wiki/Euler–Bernoulli_beam_theory), that have been extended to large transformation using corotational formualation.
The underlying mechanical fundations are based on Timoshenko beam theory (https://en.wikipedia.org/wiki/Timoshenko%E2%80%93Ehrenfest_beam_theory), that have been extended to large transformation using corotational formulation.
These elements are particularly useful for modeling 1D like deformable structures (cables, threads, flexible needles, catheters, etc...).


This tutorial presents the mechanical and implementation basis of the plugin Beam Adpater.
It also presents some examples of use and lists the current limitations.

#### This Documentation covers:
- [Mechanical basis](docs/modeling.md)
- [Implementation](docs/implementation.md)
- [Examples](docs/examples.md)
- [Limitation](docs/limitation.md)

## 2. Documentation cover:
- [Modeling theory](modeling/theory.md)
- [Modeling scene implementation](modeling/implementation.md)


## 3. Technical roadmap
- [x] Create alias for **AdaptiveBeamInterpolation** => **BeamInterpolation** ou **WireBeamInterpolation**
- [ ] Change name **AdaptiveBeamInterpolation** into **WireBeamInterpolation**
- [ ] Split **WireBeamInterpolation** into **BeamInterpolation** and **WireBeamInterpolation** (add file and move methods)
- [ ] Split interpolation into 2 classes : **BeamInterpolation** / **WireBeamInterpolatio**n (pointer = WireShape)
- [ ] ** BeamParam* ** and accessor from **BeamInterpolation**
- [ ] Change x_curv representation (in case cable is cut in 2)
- [ ] **AdaptiveBeamController** => **WireAdaptiveBeamController** (pointers= WireInterpolation) + InterventionalRadiologyController (for SOFAEVE)
### AdaptiveBeamMapping
- [ ] Split specific case SOFAEVE (case "fromSeveralInterpolations")-> InterventionalRadiologyMapping
- [ ] Mapping "global" (pointeur = inteporlation ) use barycentric coordinates + id beam for each "mapped" point
- [ ] Specific case for mapped model on a wireInterpolation (with x_curv) => Todo a method that recompute the distribution (bary + id beam) on each point0

### TO ADD List:
- [ ] TreeInterpolation
- [ ] Représentation arbre "continue"
- [ ] Représentation arbre "discrète" => Lien avec topo SOFA
- [ ] TreeAdaptiveBeamController


## 4. Examples list:
### Simple scenario
- [examples/SingleBeam.scn](https://github.com/sofa-framework/BeamAdapter/blob/master/examples/SingleBeam.scn) -> Simulation of a single wire with a fixed number of beams.
- [examples/SingleBeamDeployment.scn](https://github.com/sofa-framework/BeamAdapter/blob/master/examples/SingleBeamDeployment.scn) -> Simulation of a single wire deployment in free environment.
- [examples/SingleBeamDeploymentCollision.scn](https://github.com/sofa-framework/BeamAdapter/blob/master/examples/SingleBeamDeploymentCollision.scn) -> Simulation of a single wire deployment in a vessel mesh.

### Component examples
- [examples/Tool_from_loader.scn](https://github.com/sofa-framework/BeamAdapter/blob/master/examples/Tool_from_loader.scn) -> Simulation of a tool with a geometry loaded from a mesh file.
- [examples/AdaptiveBeamController.scn](https://github.com/sofa-framework/BeamAdapter/blob/master/examples/AdaptiveBeamController.scn) -> Example showing the difference of 2 modeling with and without AdaptiveBeamController component.
- [examples/AdaptiveBeamMapping.scn](https://github.com/sofa-framework/BeamAdapter/blob/master/examples/AdaptiveBeamMapping.scn) -> Simple example showing the behavior of AdaptiveBeamMapping component.

### Complex scenario
- [examples/3instruments.scn](https://github.com/sofa-framework/BeamAdapter/blob/master/examples/3instruments.scn) -> Simulation of 3 instruments interventional radiology free deployment in space.
- [examples/3instruments_collis.scn](https://github.com/sofa-framework/BeamAdapter/blob/master/examples/3instruments_collis.scn) -> Simulation of 3 instruments interventional radiology deployment in a vessel triangulation structure with collisions.
Loading

0 comments on commit 76ca5a6

Please sign in to comment.