# AnyKode Marilou

anyKode Marilou is a modeling and simulation environment for mobile robots, humanoids, articulated arms and parallel robots operating in real-world conditions that respect the laws of physics. This robotics suite is used in research centers and industry for various projects like humanoid architectures, wheeled and multi legged vehicles, and multi-robot systems (Multi-agents).
It also has a real-time engine that uses the ODE (Open Dynamics Engine) for collisions detecting and dynamics management. Various 'real world' variables like forces, torques, masses, damping, friction and others can be adjusted directly to the objects surfaces.

## Scenes modeling

The entities' editor can design the robot's collision model by using any of the static or dynamic objects in the given simulated world. CAD-style editing tools are entirely graphical.
Scenes, dynamics, and robots properties can be changed from a view/document/properties IHM style. Also, the editor takes in charge re-usable physicals entities as well as pure 3D models.
Marilou uses a hierarchical system to present entire objects at the highest level (the current world). This approach makes it possible to reuse members of a complex object as sub-parts of another object.

## Key features

* Graphical handling of robots and environments models (physics parts and 3D models)
* Modeling helpers, Refactoring tools, several documents and viewpoints
* Rigid bodies, n-axis constraints and springs
* Mechanical constraints
* Surface properties (reflection, shock, friction, incidence, rebound, behavior with infra-red or ultrasound …)
* Hierarchy and complex assemblies
* Real-time or accelerated simulations (RT-Multiplier)
* Multi-robots, multiple embedded applications, centralized or distributed
* Acquisition/measurement cycles as low as 1 ms
* Interactions with running simulation
* 3D rendering using pixel and vertex shaders
* Spot, Point, Ambient and Directional lights
* Dynamic shadowing
* Physics Editor for Windows, Exec (the simulator) for Windows, Ubuntu, and Mint (BETA)

## Devices

Marilou includes a complete set of user-modifiable virtual devices. The behavior of these devices may be overridden by the properties of real devices available in robotics. This feature allows the programmer to use a known device's parameters directly.
This is a list of supported devices types:
* Embedded robotic components
* Absolute Compass
* Actuating cylinders / jack
* Accelerometers/Gyro-meters/Gyroscope
* Air pressure forces
* Bumpers
* Distance sensors (Ultrasonic, Infra Red and Laser)
* Motors and servo motors
* Emitters and receivers
* Force and Torque sensors
* GPS
* Laser range finders
* LED
* LCD display
* Light Sources
* Lidar (3D-Scanner)
* Odometers
* Standard and panoramic spherical Cameras (Panoramic camera)
* Touch area

## Robots programming

MODA (Marilou Open Devices Access) is the Marilou generic SDK for handling simulated robots and their embedded devices, such as sensors and actuators. Depending on chosen language, MODA provides libraries (.lib /.a) or .Net assembly (.dll) for accessing simulation over the network. Synchronized to a simulated clock, algorithms can run on any computer in the network. Individual robots may run several programs. In addition, one MODA program can control numerous robots, whether they be in the same world. MODA TCP server can be embedded in real robot.
* Languages: C / C++, C++ CLI, C#, J#, VB#
* Compilers: Microsoft Visual Studio suites, DevC++, Borland C++ RAD Studio, G++ for Linux, CodeBlocks
* MODA is open-source and compatible with Linux (Mac coming soon)