Codebase Analysis: Difference between revisions

From SpaceElevatorWiki.com
Jump to navigationJump to search
Line 21: Line 21:
=== Codebases ===
=== Codebases ===
Quickgraph: http://www.codeplex.com/quickgraph
Quickgraph: http://www.codeplex.com/quickgraph
Mogre pure C# classes http://www.ogre3d.org/wiki/index.php/MOGRE_pure_.NET_classes


NPack: http://www.codeplex.com/NPack
NPack: http://www.codeplex.com/NPack
Line 29: Line 31:


http://www.nuclex.org/weblinks/Programming/Math
http://www.nuclex.org/weblinks/Programming/Math


'''AForge AI Library written in C#'''
'''AForge AI Library written in C#'''

Revision as of 06:54, 5 July 2008

Questions

When evaluating software, quality is 50%, and community is 50%.

In general we should be looking for the biggest community. The one with 2x as many developers will win, unless both have achieved critical mass.

Any codebases we use we will want to be able to program in a Mono language. (Reasons for this do not fit into the margin) Finding managed bindings is a part of the development.

GNU Scientific Library

All C, but so big it gets its own section: http://www.gnu.org/software/gsl/

We could use this code as a source for us.

Math (Jeko or Wolf-Dieter or Keith)

Requirements

Here is a set of math functions that the torcs robot needs. http://keithcu.com/wiki/index.php/Image:Unitlinalg.cpp

We also need support for splines. The code above doesn't use operators, and our code should to be more natural-looking. We should be binary compatible with torcs, and we can change it to match our data structures.

We also need neural network code for some learning required by the driving robot.

Codebases

Quickgraph: http://www.codeplex.com/quickgraph

Mogre pure C# classes http://www.ogre3d.org/wiki/index.php/MOGRE_pure_.NET_classes

NPack: http://www.codeplex.com/NPack

Others: http://www.codeplex.com/NPack/Wiki/View.aspx?title=What%20are%20the%20Alternatives%3f&referringTitle=Home

dnAnalytics: [1]

http://www.nuclex.org/weblinks/Programming/Math


AForge AI Library written in C# Math, Image processing, neural networks, machine learning, and vision. (We won't be using his vision code...) There is a decent amount of traffic on the forums, and the releases have thousands of downloads. The guy is from Latvia and has linked-in profile says he is looking for consulting work: http://www.linkedin.com/pub/4/410/A72

http://code.google.com/p/aforge/

Article about library: http://www.codeproject.com/KB/recipes/aforge.aspx?display=Print

Computer Vision

http://en.wikipedia.org/wiki/Category:Computer_vision

http://en.wikipedia.org/wiki/Computer_vision

http://www.intel.com/technology/computing/opencv/overview.htm

http://en.wikipedia.org/wiki/OpenCV

Found a .Net wrapper! http://code.google.com/p/opencvdotnet/

To get it to work with mono, use the opencvdotnetnewcore directory

Intel's code written in C++ in 1999-2000. Not too much going on with it, but it was used by Stanford in the Darpa Grand Challenge. It has code that should be thrown away, but it is comprehensive. I think we should start with it, especially that there is a .Net wrapper


OCR: http://code.google.com/p/tesseract-ocr/

Motion Planning

Great background doc, with lots of links: http://www.red3d.com/cwr/steer/

PDF from our Mercurial repo: [2]

OpenSteer: http://opensteer.sourceforge.net/doc.html

OpenSteer port to C#: http://code.google.com/p/opensteerdotnet/

Another port: http://www.codeplex.com/SharpSteer/

Motion Strategy Library, http://msl.cs.uiuc.edu/msl/

Motion Planning Kit, http://ai.stanford.edu/~mitul/mpk

Darpa contestant (will try to get the code) http://www.torctech.com/services/software.html

http://www.umich.edu/~driving/sim.html

Urban driving simulator http://portal.acm.org/citation.cfm?id=1296777

Simple doc: http://www.gamedev.net/reference/articles/article1125.asp

The various engines in Torcs (from Wolf Dieter)

The "delphin V1.00" is the easiest to understand one, drives stable and can be extended by others without great initial training. It consumes litte simulation time and initializes very fast.

The "ModBod" (also written in Delphi) drives faster and uses a precalculated racingline beeing alone, but switches to the delphin-mode in traffic. Extending it would take more time to learn about how it works. (It was used last year to prepare the races for the wdbee_2007, written in C++, only reading the modbot information and driving while racing) Consumes litte simulation time but takes some time to initialize the racingline.

The new "Simplix"(="Wdbee") (written in C++) is the top of the art robot (See the results of the Forza race at the TORCS Racing board: http://www.berniw.org/trb/events/event_view_result.php?raceid=64).

It drives very fast and uses three precalculated racinglines (One fast beeing alone, one at each side to avoid without reducing the speed more than needed). If pitting is used, there are six racinglines to get the fastest way in an off the pitlane too! But to precalculate the racinglines, it tooks a lot of time while initialization and it consumes much more simulation time!

Game libraries

(Jeko) Mono Tao Framework http://taoframework.com/

Ogre

Ogre: http://www.ogre3d.org/ A good and popular one with a big online community. Used by many "serious" project, it is well documented. A friend of mine worked with and recommended it.

http://www.ogre3d.org/wiki/index.php/OgreDotNet (Supports mono, not that used)

http://www.ogre3d.org/wiki/index.php/MOGRE (Popular, doesn't support Mono)

HUGE LINKS

http://www.ogre3d.org/wiki/index.php/AssemblingAToolset

http://www.ogre3d.org/wiki/index.php/OGRE_DCC_Tools

http://www.ogre3d.org/wiki/index.php/Libraries

Others

http://www.openscenegraph.org/projects/osg/wiki/About/Introduction

(Jeko)http://www.openscenegraph.org/projects/osg/wiki/Community/LanguageWrappers

I've been using openscenegraph for 2 years (that was 2 years ago) and it has been a pain! Lack of documentation and a few bugs. However it is quite popular, it is still not very mature. Its good points however: there are many import of 3D formats supported and it offer good real-time performances.


(Jeko) More: http://www.freeprogrammingresources.com/gamelib.html

Physics Engines

The physics engine we will use is likely this: http://www.ode.org/

There are .Net wrappers we will use so we can program in C#: (Jeko) http://sourceforge.net/projects/odedotnet

PDF intro: http://www.ode.org/slides/parc/dynamics.pdf

API overview: http://www.ode.org/ode-latest-userguide.html

http://www.ode.org/users.htm


Physics Simulations

(Jeko) We also need a physics simulator GUI to play and step through simulations. Here is a robot simulator: http://playerstage.sourceforge.net/index.php?src=gazebo

Can ODE help with this?

One thing that we can set up in the physics model is a degradation analysis of the ribbon. Essentially take the ribbon stretch it under high tension and then snap a thread. The interesting part is the stored energy and where it goes - there is a lot and it will affect how we design the ribbon.

Racing games

http://www.racer.nl/, nice looking, source code available but not open source (restrictive license).


http://www.ultimatestunts.nl/, require art work to look better. The track format supports junctions.

Removed from consideration

Jad Engine: http://www.jadengine.com/index.php?title=Main_Page

All in C#, but going through a rewrite, and they don't have a community yet.


Delta 3-D http://www.delta3d.org/

Small community


PLIB, Portable game library: http://plib.sourceforge.net/whats_inside.html Features: sound effects, music, a complete 3D engine, font rendering, a simple Windowing library, a game scripting language, a GUI, networking, 3D math library and a collection of handy utility functions. Each library component is fairly independent of the others - so if you want to use SDL, GTK, GLUT, or FLTK instead of PLIB's 'PW' windowing library, you can.

This is a cool component for people making simple games, but we don't need most of it, and the stuff we do need isn't that powerful or popular. Torcs uses it, but that will change :-)


Irrlicht: http://irrlicht.sourceforge.net/, also has .Net bindings

http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=18125&highlight=

http://www.blitzbasic.com/Community/posts.php?topic=73978

Looks like a good engine, but some have complaints about it: it is less pluggable, less powerful, etc.


http://axiomengine.sourceforge.net/wiki/index.php/Main_Page This is a port of Ogre that is clean, rich, and supports Mono. It doesn't have the community of Ogre and Irrlicht. Using a native C# component is awesome, but using something with a community is more important.


http://code.google.com/p/monoxna/

This is missing a lot