From: Stefan T. <ste...@gm...> - 2012-04-21 14:41:42
|
On Wednesday 18 April 2012 11:37:18 Mikael Persson wrote: > Hi FreeCAD dev team! > > I like your project! Finally a very promising open-source CAD software > project! > > And development-wise I think you have made all the right choices so far: > Qt, Coin3D, OpenCascade, cmake, etc. > > I've been developing and using a multi-body dynamics library (well, that's > just a part of it) in C++. However, I have no visualization software for > this library and I have been looking for a good platform on which to create > that visualization. I eventually narrowed it down to Qt and some > open-inventor-like library. So, it seems natural to create my visualization > software as a workbench / module / plugin for your FreeCAD project. > > First, a little information about me. I'm a PhD candidate at McGill > University in Mechanical Engineering. I've also been a programmer for many > years (since mid-high-school), mostly in C++. I did many hobby projects in > the past, mostly started out doing simple 3D computer games and related > tools (height-map editors, particle system editors, 3D model importers, > etc.), when I got to college, my projects moved a bit more professional and > I started to write more high-fidelity multi-body dynamics simulators as > well as a number of related math utilities (lin-alg, num. integrators, > optimizers, etc.). Now, my work mostly involves motion-planning > (probabilistic algorithms) and state-estimation (non-linear Kalman > filtering). But during my Masters, I developed a lot of code for doing both > multi-body dynamics simulations and model-reference (or model-based) > control for a humanoid robot. So, that code has been pretty thoroughly > tested and validated. > > This code is now fairly feature-rich and it is mostly object-oriented (as > opposed to much of the rest of my library that mostly uses generic > programming and template meta-programming techniques). I rarely add much to > it these days because it has reached a fairly mature and stable point and > all the features that I need for simulation, model-based control, and > motion-planning are already in place, but it lacks any kind of > visualization (which wasn't much of a problem before, but it is starting to > feel like something I should add to it). You can find my overall library > under my github public repository here: > > https://github.com/mikael-s-persson/ReaK > > But, the part of the library that does multi-body dynamics is found under > this folder: > > https://github.com/mikael-s-persson/ReaK/tree/master/src/ReaK/ctrl/mbd_kte > > The only real external dependency of my library are some of the Boost > libraries (Thread, MPL, Concept-Check, and a few basic things). The other > external dependencies are for test programs that aren't core elements of > the library by any means. I also have my own RTTI system and serialization > library (xml or binary). But overall, the library is light-weight and most > other parts of it are header-only (but not the multi-body dynamics part, > because it's a simple OOP architecture). > > I think it would be mutually beneficial to have a module of FreeCAD that > uses my multi-body dynamics library, not to mention that I also see that > you have an "Assembly" module under development which could also benefit > from the type of setup that I have to assemble multi-body systems (based on > a KTE framework, where KTE stands for Kinetostatic Transmission Elements, > which is an abstraction for any kind of joint or link or any other dynamic > or kinematic element). Overall, the potential for an editor for my MBD > library would get close to the kind of functionality that MSC.ADAMS > provides (its basic functionalities, of course). > > What do you think? > > The only little problem for me is that I have almost no experience with > Python, but I hear it is a breeze to learn (especially after 12-13 years of > doing C++!). > > I would be planning to start digging into this project in about a month or > so (I'm a bit busy at the moment), and I would love to collaborate if > anybody is interested in getting involved in this new module for FreeCAD. > > Cheers, looking forward to hearing from you guys, > > Mikael. Hello Mikael, I'm not part of the core developper team, but as I'm trying to create a assembly solver for the upcoming assembly module I thougth I give you a answer. Basicly a motion simulation tool for freecad is planed as part of the assembly, but no one has a own solver or intends to write one. The Idea was to use a existing physics library (ODE or bullet). So without knowing your librarys full capabilitys, I would say scientific code as yours would fit way better into the CAD context, and therefore your offer is most welcome. (next to the fact that everyone willing to put work into freecad is most welcome :) ) To the integration: Jürgen Riegel is working on the assembly module and he stated that some huge changes on freecad basics are ongoing. Therefore only he can give informations on how to integrate such a workbench. From my side I see the following: Assembling constraints as planed rigth now are not simply transformed to Kinetostatic Transmission Elements as I'm understanding it. However, the code I'm writing will make it easy to translate the assembly constraints to joint's between parts. My first idea would therefore be something like that: A "Dynamics Workbench" would be separated from the assembly workbench and allows the creation of joints between parts and all the stuff needed for simulation, so that would work even without doing a assembly before. On the assembly module side, one could create the assembly with it's special constraint set and then just convert it to a dynamic simulation, or just load it into it. Internaly we could transform the assembly constrains and show then as joint's to the user, so he can add drivers and stuff inside the dynamics workbench. Another note: I't seems your code is GPLv3. Freecad is LGPL, which would be compatible, however it links to opencascade whith it's own licanese. This occ license it not GPL compatible, therefore youre code is not allowed to link with freecad rigth now. Possibilitys are to change your license to LGPL or just add a linking exeption for the occ license. These are my first thougths. Hoping it gives you a little insied. Stefan |