GithubHelp home page GithubHelp logo

morse-simulator / morse Goto Github PK

View Code? Open in Web Editor NEW
349.0 40.0 154.0 560.47 MB

The Modular OpenRobots Simulation Engine

Home Page: http://morse-simulator.github.io/

License: Other

Shell 0.01% Python 14.40% CMake 0.63% Smarty 0.08% C 84.81% Batchfile 0.02% Inno Setup 0.06%

morse's Introduction

⚠️ As of 2020, MORSE is not maintained/updated anymore. The code will remain available for the foreseeable future for adventurous researchers and/or archeologists, but do not expect much support! ⚠️

⚠️ Also, MORSE requires Blender to run. The last supported version of Blender is 2.79b. MORSE can not run with more recent versions! ⚠️

MORSE logo

MORSE: the Modular Open Robots Simulator Engine

DOI Build Status Build status

MORSE screenshot 1

MORSE (Modular OpenRobots Simulation Engine) is an academic robotic simulator, based on the Blender Game Engine and the Bullet Physics engine. It is a BSD-licensed project (cf LICENSE).

It is meant to be versatile (simulation of field robotics, indoor robotics, human robot interaction, multi-robots systems) and allow simulation at different levels (from raw cameras to high-level semantics).

The communication with the simulator is middleware independent. At the moment, MORSE supports the following middlewares:

  • ROS
  • Yarp
  • pocolibs
  • MOOS
  • HLA
  • mavlink
  • and a generic socket interface (with an intuitive Python API)

Installation

Please read INSTALL or check the on-line installation instructions.

Documentation

The MORSE documentation is available from the doc/ directory. It is available as well online, on the MORSE website.

You can also subscribe to [email protected].

How to contribute

Even if the code-base is not stabilized yet, contribution to MORSE are more than welcome.

You can contribute new robot models, new sensors, we have a TODO list for the Blender game engine itself...

Feel free to subscribe to [email protected] and ask!

Code is available on GitHub.

Feel free to fork, pull request or submit issues to improve the project!

Credits

Copyright (c) 2009-2010 ONERA Copyright (c) 2009-2016 LAAS-CNRS Copyright (c) 2015-2016 ISAE-SUPAERO Copyright held by the MORSE authors or the institutions employing them, refer to the AUTHORS file for the list. The list of the contributors to each file can be obtained from the commit history ('git log ').

MORSE is developped by a large community of academics, with contributions from more that 15 universities world-wide.

MORSE contributors

The initial development of MORSE has been partially funded by the Fondation RTRA within the ROSACE project framework, and by DGA http://www.defense.gouv.fr/dga through the ACTION http://action.onera.fr project.

MORSE screenshot 2

morse's People

Contributors

adegroote avatar amiller27 avatar cehberlin avatar cyrobin avatar davidhodo avatar dgerod avatar eirikhex avatar greg8978 avatar harmishhk avatar horvathjo avatar incandescant avatar johaq avatar lesire avatar mamoun-gharbi avatar mark-summerfield avatar maxint avatar mherrb avatar msis avatar muratsevim avatar nicolaje avatar peterroelants avatar pierrickkoch avatar pronobis avatar sergestinckwich avatar severin-lemaignan avatar simonlacroix avatar simonrohou avatar stephendade avatar thesourcerer8 avatar warp1337 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

morse's Issues

Time control

Introduce a mean to externally control time, by pacing the game
engine time (e.g. through a socket, cf mail from Benoit Bolsee on Jan. the 10th
in blender-robotics).

Add support to pause the simulation.

set matrix_parent_inverse to identity at builder level

If the matrix_parent_inverse of a sensor/actuator is not identity it will have an offset when parented to your robot even if you specified zero as location.

You can inspect this matrix from the python console:
bpy.data.objects['your_object_name'].matrix_parent_inverse
And set it to identity again if needed:
bpy.data.objects['your_object_name'].matrix_parent_inverse.identity()

So it would probably make sense to always set this matrix to identity when making a new object via the builder api.

No module named morse.core.ansistrm

I've followed the instructions to install morse, however, I get the following:

$ morse check
Traceback (most recent call last):
   File "/usr/local/bin/morse", line 6, in <module>
    from morse.core.ansistrm import ColorizingStreamHandler
   ImportError: No module named morse.core.ansistrm

Can anyone help me please?

Export position in a consistent way

Export position in a consistent way through in different components (use Transformation3D).

Currently, we often export (x,y,z,yaw,pitch,roll) at the sensor level. Because different middlewares have different needs, and also modifiers often need to convert back the data to their own standard, it leads to numerous conversions and no standard representation.

It would make sense to export always the same object (Transformation3D) to prevent this.

Conflict between set_rotation in kuka_lwr and armature_actuator

Both provide the set_rotation service, so in the end only kuka_lwr one is used.

I suppose that the kuka_lwr must disappear and that we need to use the generic one (from armature_actuator). Unfortunately, the set_rotation service from armature_actuator does not work on kuka_lwr. If you just comment the one in kuka_lwr, the unit-test armature_actuator_testing just fails

Improve CMake behaviour with pymorse

At first run, CMake complains about missing pymorse. This is not an issue, but it displays an error message which is confusing for new users.

morse's cmake should detect if Python.h is available (or not)

cd /home/sylvestre/Téléchargements/morse-0.5.1/obj-x86_64-linux-gnu/src/morse/modifiers && /usr/bin/gcc -Dgaussian_EXPORTS -fPIC -I/usr/include/python3.2mu -o CMakeFiles/gaussian.dir/gaussian.c.o -c /home/sylvestre/Téléchargements/morse-0.5.1/src/morse/modifiers/gaussian.c
/home/sylvestre/Téléchargements/morse-0.5.1/src/morse/modifiers/gaussian.c:1:20: fatal error: Python.h: Aucun fichier ou dossier de ce type
compilation terminated.
make[3]: *** [src/morse/modifiers/CMakeFiles/gaussian.dir/gaussian.c.o] Erreur 1
make[3]: quittant le répertoire « /home/sylvestre/Téléchargements/morse-0.5.1/obj-x86_64-linux-gnu »

Test and merge code for automatic renaming

From A Degroote, on morse-dev, 24/07/2012
I pushed the branch renaming on https://github.com/adegroote/morse.git
It includes component renaming and fixes configuration handling. There
is still an issue : we need to call explicitly env.create() at the end
of the script. Previously, it was ``automatically'' called from
Environnement.del which is magically called by GC. With the new
code, the GC does not seem to destroy the object ...

So I fixed the different unit-test. I updated code to name port for both
yarp and ROS. The ROS part is well not tested at all, and so probably
broken. While doing here, I notice that there are a lot of code
duplication : I will propose in the next days a way to refactor stuff in
a cleaner way.

Some component are still broken (kuka lwr at least but lots of actuators
/ sensors don't have any unit test ...). In the kuka lwr, it expects a
parent name with a really specific name (so previously, you probably can
use it only once by scene, which is a bug too ...:).

I'll appreciate if people can test the branch (particularly the ROS
part but also in general for their scene, and their sensor / actuator).

morse binary should not generate "python_checker.py"

When executing the morse binary, it generates "python_checker.py" in the current directory and deletes it afterwards. This is problematic both when executing the binary from a directory where you haven't got writing permissions or if "python_checker.py" already exists in the directory.

cmake should fail when sphinx is not found

if sphinx is not available on the system, the cmake detection system is not failing.
It would be nice to fail the detection is sphinx is not available and provide an option to explicitly disable sphinx build if it is on purpose.

Simulate motion capture systems

Motion capture poster: MORSE should be able to simulate a motion capture setup
by allowing the designer to paste markers in the scene whose position will be
exported.

kuka_lwr::set_rotation does not respect ik_max

If you request some value greater than ik_max (returned by get_IK_minmax service), the request is accepted, and set the value of the angle to the requested value (and so violate the ik_max constraint).

The service must reject the request if the value is too high or thresold the requested value to the ik_max. But in any case, Morse must respect {min, max} of the IK properties

Keybindings conflict between camera and human

Reported on the mailing list by [email protected] :

I tried the script:

from morse.builder.morsebuilder import *

Import the human model.

human = Human()

Use the standard environment 'indoor-1.blend'. You could use any other.

env = Environment('indoors-1/indoor-1')

It runs but the key to move the character are coupled weirdly with the camera:
the w key move forward the human and the camera, so after a while pushing it the
camera goes throug the wall.
The S key do the same: move backward the camera and the human.

kuka_lwr::set_rotation does not respect ik_max

If you request some value greater than ik_max (returned by get_IK_minmax service), the request is accepted, and set the value of the angle to the requested value (and so violate the ik_max constraint).

The service must reject the request if the value is too high or thresold the requested value to the ik_max. But in any case, Morse must respect {min, max} of the IK properties

Eliminate duplicated code for ROS serialization

Producing TF frames, odometry or Twist messages, as well as topic creation and topic writing/reading should not be duplicated for the various components.

We first want to assess the exact amount of code duplication, and then factorize it to generic methods.

Timeline of events

Introduce means to define scenarios with controlled dynamic events (through
requests and/or a simple scripting API). Requires a notion of timeline (in
the API? in the simulator? at Builder script levels?)

Allow to pass real objects to the middleware layer

Allow to pass real objects to the middleware layer, so we can keep some kind
of states, properties at the middleware layer. While here, propose a better
interface at the builder level to pass this arguments to the middleware layer.

Package morse-ros as a Debian package

This package should depend on Debian's morse-simulator and the required WG ROS pakages (for fuerte, I guess). It won't be included in Debian since ROS itself is not available there. It's mainly to help with the installation on Debian/Ubuntu.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.