Bugs report & suggestions

13 views
Skip to first unread message

Mickaël Nicolaccini

unread,
Apr 19, 2013, 5:00:41 AM4/19/13
to sigvers...@googlegroups.com

Dear SIGVerse users,

 

I started to work on the human interaction and the physical interaction in SIGVerse.
About Collision event, currently this event is catch in the function OnCollision in the Class: Controller.
This function is called where something collide an agent who has the onCollision function.

I notice some bugs:

  • if there are a collision, the OnCollision function is called even if simulation is stopped
  • physical model of some item in SIGVerse is false, and doesn’t match with the appearance
  • The parameter scale in world xml file modify may cause bugs. (modify the appearance but not the physical model)
  • Collision doesn't manage multi part collision'' (when a same entity collide something with more  one part) e.g.: a collision between a table and the right and the left hand of the robot)

For the moment the event is made of 3 vectors of string

  • one vector for doers name : entities  who  collide the agent 
  • a second vector for parts name  of the entities which collide the agent
  • a third vector for the parts name  of the agent who are collided

The doer and his parts are linked by the index  vector

e.g.; vect_doers[1] == '''robots'

vect_parts[1] == "nameofsomeparttheRobot"


Suggestions:

To minimize the code changes, I propose to change the second vector to a vector of vector of string in order that we can store several parts.

If you have some comment or you want to correct bugs, please answer using  the sig-verse user Google groups.


--
Sincerely,
Mickaël NICOLACCINI .  ミカエル  ニコラシーニ



Tetsunari Inamura

unread,
Apr 19, 2013, 5:53:28 AM4/19/13
to sigvers...@googlegroups.com
Dear Mickael,
Thank you for your suggestions.

> - physical model of some item in SIGVerse is false, and doesn't match
> with the appearance

Basically, both of physical model and appearance model should be defined by users.
Currently, official SIGVerse package provides detail appearance model and
rough physical model. Since definition of detail physical model takes so much time,
please forgive me providing such rough model. It is not bug, but limitation of resource for development.

> - The parameter scale in world xml file modify may cause bugs. (modify
> the appearance but not the physical model)

This might be bug. I'll confirm.

Thank you for other suggestions. I'll store the suggestion to future revision tasks.

Best,
------------------------------------------------
Tetsunari Inamura (Associate Professor)
National Institute of Informatics, JAPAN
The Graduate University for Advanced Studies, JAPAN
TEL : +81-3-4212-2518 FAX : +81-3-4212-2120
URL : http://www.iir.nii.ac.jp/index_e.html
Email : ina...@nii.ac.jp




From: Mickaël Nicolaccini <m.nico...@gmail.com>
Subject: [SIGVerse-users: 16] Bugs report & suggestions
Date: Fri, 19 Apr 2013 18:00:41 +0900

> Dear SIGVerse users,
>
>
> I started to work on the human interaction and the physical interaction in
> SIGVerse.
> About Collision event, currently this event is catch in the function
> OnCollision in the Class: Controller.
> This function is called where something collide an agent who has the
> onCollision function.
>
> I notice some bugs:
>
>
> - if there are a collision, the OnCollision function is called even if
> simulation is stopped
> - physical model of some item in SIGVerse is false, and doesn't match
> with the appearance
> - The parameter scale in world xml file modify may cause bugs. (modify
> the appearance but not the physical model)
> - Collision doesn't manage multi part collision'' (when a same entity
> collide something with more one part) e.g.: a collision between a table
> and the right and the left hand of the robot)
>
> For the moment the event is made of 3 vectors of string
>
>
> - one vector for doers name : entities who collide the agent
> - a second vector for parts name of the entities which collide the agent
> - a third vector for the parts name of the agent who are collided
>
> The doer and his parts are linked by the index vector
>
> e.g.; vect_doers[1] == '''robots'
>
> vect_parts[1] == "nameofsomeparttheRobot"
>
>
> Suggestions:
>
> To minimize the code changes, I propose to change the second vector to a
> vector of vector of string in order that we can store several parts.
>
> If you have some comment or you want to correct bugs, please answer
> using the sig-verse user Google groups.
>
>
> --
> Sincerely,
> Mickaël NICOLACCINI . ミカエル ニコラシーニ
>
> --
> You received this message because you are subscribed to the Google Groups "SIGVerse-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to sigverse-user...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

Raghvendra Jain

unread,
Apr 21, 2013, 8:02:20 PM4/21/13
to sigvers...@googlegroups.com
Dear Mickael, Inamura sensei,

Regarding the notification of Bug 2.

Yes. The parameter scale in world xml file only modifes the appearance but not the physical model. I had confirmed it with Jeffrey last time.

Regarding, the difference between bounding objects and appearance of physical model, as sensei pointed out its limitation of current version. But just for discussion, I would like to provide my opinion.

For simple object models e.g. Box, Sphere, Capsule, Cylinder etc the Sigverse constructs are mapped to ODE objects. For example,

1.boundingObject(Box)--> dGeomID(dBoxClass)
2. boundingObject(Sphere)--> dGeomID(dSphereClass )
3. boundingObject(Capsule)--> dGeomID (dGeomTransformClass + dCapsuleClass)
4. boundingObject(Cylinder)--> dGeomID (dGeomTransformClass + dCylinderClass)

But the question is how to map complex shapes to ODE objects in such a way that bounding object model is almost similar to the appearance of physical model.


Lets say you model a spoon using some 3d modeling software (e.g. Blender, Maya etc ) then after doing a triangle mesh conversion you can import 3d shapes in form of IndexedFaceSet nodes. The IndexedFaceSet node represents a 3D shape formed by constructing faces (polygons)
from vertices. Now to map a solid represented using IndexedFaceSet nodes, there is a function in ODE, which is

5. boundingObject( IndexFaceSet) : dGeomID (dTriMeshClass).

Similarly if you want to attach many solids in a group ( or create a hierarchy of solids such that coordinate system of child solid node  is relative to the coordinate systems of its parent solid node), then such solids can be mapped using:

6. boundingObject(Transform):  dGeomID (dGeomTransformClass)
7. boundingObject(Group):  dSpaceID (dSimpleSpaceClass)

But unfortunately, I do not know how ( and where) to modify the code in Sigverse such that such mapping can be done for complex objects by itself.

One way could be is to just download some 3d model ( presented using IndexFaceSet nodes for example and use corresponding function to see if proper boundingObject is created). Also we can ask on ODE forums for some hint.

Thank you,

Best Regards,
Raghav












Raghvendra Jain

unread,
Apr 22, 2013, 2:47:02 AM4/22/13
to sigvers...@googlegroups.com
Dear Mickael,

For the follow up of earlier discussion regarding bounding objects.

If you navigate through $:~/SIGServer-2.2.0/srcs/simserver/readconf$ 

and open the file using

$emacs SgvX3DSimObjCreator.cpp

Please find a function: createSSimObjFromOpenHRP_ShapeNode(...)

This function is used for creating bounding objects. If you search for "IndexedFaceSet", you shall find:

   //IndexedFaceSetノードの場合は形状推定し、ODE形状を作成る                          
   case INDEXED_FACE_SET_NODE:{                                                                      
                    DUMP(("*** SimpleShape: Auto generate mode ***\n"));

CSimplifiedShapeFactory::calcAutoFromShapeNode(pShapeNode, CSi\
mplifiedShape::BOX);

Thus as can be seen, the ODE object for Box is generated by default. So I think we need to change the code here as discussed in last email ( just a guess! )

Best Regards,
Raghav




Mickaël Nicolaccini

unread,
Apr 22, 2013, 4:07:58 AM4/22/13
to sigvers...@googlegroups.com
Dear Jain,

I thinks there are another kinds of problem.
As you can see in attached files, in appearance there are clearly no contact between the avatar and the table, but sigserver detect a collision...


2013/4/22 Raghvendra Jain <ja...@nii.ac.jp>

--
You received this message because you are subscribed to the Google Groups "SIGVerse-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sigverse-user...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 



--
Cordialement,

Mickaël NICOLACCINI .  ミカエル  ニコラシーニ


Élève Ingénieur de Polytech Grenoble RICM5
Département Réseau Informatique et Communication Multimédia


buccollision2.JPG
bugCollision1.JPG

Mickaël Nicolaccini

unread,
Apr 22, 2013, 4:13:50 AM4/22/13
to sigvers...@googlegroups.com
By the way, I didn't use the parameter scale.


2013/4/22 Mickaël Nicolaccini <m.nico...@gmail.com>

Raghvendra Jain

unread,
Apr 22, 2013, 4:19:09 AM4/22/13
to sigvers...@googlegroups.com
Hi Mikael,

I think there is slight misunderstanding. My explanation and opinion were not regarding the collision problem you had mentioned. But they were directed towards the another problem which is about difference between physical model of some item in SIGVerse is false and its appearance.

As Inamura sensei had mentioned that physical model as of now is quite simplistic and rough, I intent to discuss how it can be made more accurate like the appearance model.

Best Regards,
Raghav
Reply all
Reply to author
Forward
0 new messages