Google Summer of Code 2022 #61
Closed
nmnaughton
started this conversation in
General
Replies: 1 comment
-
Hi PyElastica team, I am not able to label my #68 with |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Google Summer of Code 2022
About Elastica
Elastica is a free and open-source software project for the simulation of assemblies of slender, one-dimensional bodies using Cosserat rod theory. Slender structures are ubiquitous in both nature and engineered systems at all different sizes, from DNA strands to space tethers. Elastica has been designed to model such slender structures, with a particular focus on muscular structures and soft robotics. We are focused on providing useful simulation tools to the robotics and biomechanics communities to model, control, and visualize how these slender structures evolve and interact. Some examples of what Elastica has been for can be found here.
PyElastica
PyElastica is the Python implementation of Elastica. PyElastica is designed to be modular, extensible, and easy to use. It allows the user to model a collection of slender rods that are each subject to different external (i.e. gravity, friction, etc…) and internal (i.e. muscle torque) forces. Rods can account for self contact and can be combined to create assemblies of rods capable of modeling increasingly complex systems. We are actively developing it and continually adding new features and performance improvements.
Application advice
Before applying for a Google Summer of Code project, make sure you review our contribution guidelines. Applicants should have prior experience with Python 3. A basic understanding of scientific computing, in particular computational mechanics/numerical simulations, is preferred, however, lack of such knowledge should not hamper your ability to come up with a competitive proposal.
We have provided some projects ideas below. Before applying, make please reach out to us to discuss your idea. Make an issue on the PyElastica GitHub repo . Projects that have reached out and discussed with us will be prioritized. If you have general questions about PyElastica, you can also comment below.
Deliverables: Projects with limited and well-defined scopes will be favored. We would prefer a project that is finished, documented, tested, and deployed by the end of the summer even if it means all the possible features are not implemented.
Ideas List
Theme 1: Improving visualization abilities
Currently, we do not have great tools for visualizing simulations. We have identified three different aspects of visualization that we think would make a good GSoC project. We think each is large enough to be its own but it might be possible to combine projects together if one solution satisfies the requirements of both.
Project 1: Run-time visualization of simulations
Skills required: Python, VTK
Difficulty: Intermediate
Project size: 175 or 350 hours (depending on the extent of proposed features)
Description: This project is one we are especially interested in. This project is focused on the implementation of a lightweight, fast visualization method that can be used either during an Elastica simulation to track progress or after simulation for fast visualization and post-processing of data using open-source libraries (hint: the Fury package might be useful). It should be capable of visualizing simulations, rotate/zoom, set camera angles, and generating images/videos both during the simulation as well as afterward for postprocessing.
Mentors: Noel Naughton, Arman Tekinalp, Seung Hyun Kim
Project 2: Integration with 3D rendering software
Skills required: Python, JSON, Blender or equivalent
Difficulty: Intermediate
Project size: 350 hours
Description: This project should focus on developing a pipeline to export simulation data from a finished Elastica simulation to an open-source 3D rendering software (such as Blender) to create high-resolution images and videos of simulations. It should provide both an automatic method based on reasonable default parameters as well as the ability to customize the visualization in Blender. Documentation and tutorials for users will also be required.
Mentors: Noel Naughton, Arman Tekinalp, Seung Hyun Kim
Project 3: CAD integration
Skills required: Python, CAD software
Difficulty: Advanced
Project size: 350 hours
Description: This project is focused on implementing automatic import and setup of simulation geometry from CAD files using a neutral file format (such as *.stl). It will develop an interface to read in a CAD file, convert the geometry to an Elastica simulation, allow necessary simulation parameters that can not be defined in the CAD file to be specified, and have substantial error checking to make sure the user does not forget necessary properties. The ability to export an Elastica simulation into the same neutral CAD format should also be implemented.
Mentors: Noel Naughton, Seung Hyun Kim, Tejaswin Parthasarathy
Theme 2: Logging, saving, and restarting simulations
Project 4: Saving and restart framework for simulations
Skills required: Python, database frameworks
Difficulty: Easy to Intermdiate
Project size: 175 hours
Description: Develop a framework for saving simulations both as checkpoints which can be relaunched if the simulation crashes and at the end of the simulation. Enough information about the simulation should be included that the simulation can be loaded and restarted from the saved data and utilities to do so should also be written. A filetype/database standard for the data should be identified (we are flexible about what type and will work with you to identify it) in order to allow interoperability with postprocessing data pipelines.
Mentors: Noel Naughton, Seung Hyun Kim, Tejaswin Parthasarathy
Project 5: Debugger/logger of simulation instabilities
Skills required: Python, data vizualization
Difficulty: Easy
Project size: 175 hours
Description: Often, if a simulation becomes unstable and crashes, it can be difficult to identify what aspect of the simulation caused the crash. This project should develop a logging/debugging tool that can be enabled to log, vizualize, and (bonus) automatically identify the part of the simulation that caused the instability. We can work with you to identify the metrics to track, but you will need to devlop the utilities to log and visualize the data in a useful manner.
Mentors: Noel Naughton, Arman Tekinalp, Tejaswin Parthasarathy
Beta Was this translation helpful? Give feedback.
All reactions