[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-devel
Subject:    Re: Request for comments on idea for a new KDE-based application
From:       Jordi Polo <mumismo () gmail ! com>
Date:       2009-03-02 7:48:06
Message-ID: a4162420903012348j7a55ea3erccf933a5ec6d4743 () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


I contributed some code to Gazebo (similar but not quite the same as the
project you propose) so maybe I can give some insight here.

Physics:
There is already an attempt of general API over physic simulation engines:
PAL http://www.adrianboeing.com/pal/index.html
Surely is the way to go. It is an API for a big number of engines, with
COLLADA XML support build in.
This should be enough for all your 3d physics simulation needs.
Bear in mind that different engines will have always different capabilities
and accuracy, PAL tries hard to hide the details and I think it success.

3D rendering:
In Gazebo we use Ogre3D. It does the work well. But the collada support is
some plugin that I dont think is officially supported and in general I have
being hearing very good things of OSG (also it works with cmake)
I'd say, go for OSG.

GUI:
Qt/KDE of course.

As you see I don't see much plug-in mechanism here. Making any of the above
3 components plug-in and create a generic API for the functionality is an
exercise of overengineering (IMHO)
Also I would like to know the exact focus of the application. If it is the
manipulation on 3D of entities with physics, check Blender (it has bullet
physics built in).

If you go for robotics then you need at least:
- sensors : cameras, lasers, microphones, etc
- controllers: actuators, motors, speakers
- control API : All the above should be controlable. I'd strongly recommend
something like Player. How Gazebo works is "cheating" Player. Player thinks
it is working with the real world but it fact is working with the Gazebo
simulator (it gets commands from Player and returns sensors' data). The
logic here is that if the simulation is accurate enough the same code should
be ready for the real world without further tweaks.

COLLADA can be extended with application specific data. For instance
robotics data. The only thing you need is to create a namespace for your
application. The COLLADA reference states that unknown namespaces should be
just preserved but ignored (so your files can be open with other COLLADA
compatible programs even when you added sensors and stuff there).

If you are willing to build all this from the ground up some comments:
- COLLADA is really big, you really want to mess with that as less as
possible. There are a couple of libraries around to deal with it, still
messy.
- Take a look to Gazebo's code to get an idea of the size of the thing (bear
in mind it is much smaller than what you are proposing)
- I'd advise you to do something like a "3D realistic robotics" library and
over that interesting things can be built:
-- The editor (needed to add sensors and controllers to COLLADA files,
loading worlds, etc)
-- The simulator (similar to editor? Maybe even the same, able to save and
restore the state, connect to hardware, etc.)
-- A robocode game! Program your own realistic robot and see how it competes
with the progrmas of other people (I've been thinking about creating this
for years)
-- Any other 3D + physics + control thing needed, who knows, 3D character
dancing controlled by Amarok?
- If you are serious about the project I may be able to help, I have being
thinking about Qt-ize Gazebo for ages.



-- 
Jordi Polo Carres
NLP laboratory - NAIST
http://www.bahasara.org

[Attachment #5 (text/html)]

<br>I contributed some code to Gazebo (similar but not quite the same as
the project you propose) so maybe I can give some insight \
here.<br><br>Physics:<br>There is already an attempt of general API over physic \
simulation engines: PAL <a href="http://www.adrianboeing.com/pal/index.html" \
target="_blank">http://www.adrianboeing.com/pal/index.html</a><br>

Surely is the way to go. It is an API for a big number of engines, with COLLADA XML \
support build in. <br>This should be enough for all your 3d physics simulation needs. \
<br>Bear in mind that different engines will have always different capabilities
and accuracy, PAL tries hard to hide the details and I think it success.<br>
<br>3D rendering:<br>In Gazebo we use Ogre3D. It does the work well.
But the collada support is some plugin that I dont think is officially
supported and in general I have being hearing very good things of OSG
(also it works with cmake)<br>
I&#39;d say, go for OSG.<br><br>GUI:<br>Qt/KDE of course.<br><br>As
you see I don&#39;t see much plug-in mechanism here. Making any of the
above 3 components plug-in and create a generic API for the
functionality is an exercise of overengineering (IMHO)<br>
Also I would like to know the exact focus of the application. If it is
the manipulation on 3D of entities with physics, check Blender (it has
bullet physics built in).<br><br>If you go for robotics then you need at least:<br>
- sensors : cameras, lasers, microphones, etc<br>- controllers: actuators, motors, \
speakers<br>- control API : All the above should be controlable. I&#39;d strongly
recommend something like Player. How Gazebo works is &quot;cheating&quot; Player.
Player thinks it is working with the real world but it fact is working
with the Gazebo simulator (it gets commands from Player and returns
sensors&#39; data). The logic here is that if the simulation is accurate
enough the same code should be ready for the real world without further
tweaks. <br>
<br>COLLADA can be extended with application specific data. For
instance robotics data. The only thing you need is to create a
namespace for your application. The COLLADA reference states that
unknown namespaces should be just preserved but ignored (so your files
can be open with other COLLADA compatible programs even when you added
sensors and stuff there).<br>
<br>If you are willing to build all this from the ground up some comments:<br>-
COLLADA is really big, you really want to mess with that as less as
possible. There are a couple of libraries around to deal with it, still
messy. <br>
- Take a look to Gazebo&#39;s code to get an idea of the size of the thing
(bear in mind it is much smaller than what you are proposing)<br>- I&#39;d advise you \
to do something like a &quot;3D realistic robotics&quot; library and over that \
                interesting things can be built:<br>
-- The editor (needed to add sensors and controllers to COLLADA files, loading \
worlds, etc)<br>-- The simulator (similar to editor? Maybe even the same, able to \
save and restore the state, connect to hardware, etc.)<br>-- A robocode game! Program \
your own realistic robot and see how it competes with the progrmas of other people \
(I&#39;ve been thinking about creating this for years)<br>
-- Any other 3D + physics + control thing needed, who knows, 3D character dancing \
controlled by Amarok? <br>- If you are serious about the project I may be able to \
help, I have being thinking about Qt-ize Gazebo for ages.<br> <br><br \
clear="all"><br>-- <br>Jordi Polo Carres<br>NLP laboratory - NAIST<br><a \
href="http://www.bahasara.org">http://www.bahasara.org</a><br><br>



>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic