Hello,

On Thu, Apr 17, 2008 at 9:33 AM, Benjamin Kloster <[EMAIL PROTECTED]> wrote:
> Hello everyone,
>  I have two questions:
>  1. I'm almost done with the joint force sensors I mentioned a while ago
>  and would like to submit them as patch, along with the necessary stuff
>  to use the opaque interface of Player (arbitrary data). Unfortunately,
>  my text editor has automatically stripped all trailing spaces in the
>  files I modified along the way. Is there a diff tool (or an option to
>  the standard diff) that can ignore these unimportant "changes"?

I don't know of a good method to solve this problem. What I would do
is download the SVN version of Gazebo, and merge in your changes.
Development with the subversion code source is much easier.

>  2. I am now tasked with the implementation of contact sensors as a step
>  to constructing suction cups (for climbing bots). To access all
>  necessary information about a contact, one has to call
>  SetFeedback(dJointID, dJointFeedback) for the contact joint after it is
>  created, but before it is evaluated. So, basically, in the collision
>  callback of Gazebo. I am now wondering how to implement this with as
>  little changes as possible. Here's what I think of:
>   a. In the XML of a model, a contact sensor is a normal body that has
>  the tag <provideContactFeedback> true </provideContactFeedback>. By
>  adding a GetContactFeedback function to the Body class, a controller can
>  acquire an array of dJointFeedback structs in which the first N contacts
>  are to be found.
>   b. In the collision callback, it is checked whether one of the
>  connected bodies should provide contact feedback and if yes, SetFeedback
>  is called for the created contact joint, with a pointer to the body's
>  feedback array as second parameter.
>
>  a is the easy part. As it might be difficult to find the right time to
>  wipe the old data in the feedback array of the body (and I am not sure
>  that there are multi-contact sensors currently in use) it might be
>  better to save just one feedback, i.e. the one of the last contact joint
>  created.
>
>  b is somewhat of a problem. The collision callback knows only the ID of
>  the body, not the body object it belongs to. So it's not possible to
>  check whether this particular body should provide feedback about its
>  contacts. And that's the question: Is there any way to get the body
>  object of a given ID, or can you think of another feasible way to
>  implement contact sensors?

The collision callback function has a pointer to ODEPhysics. So, you
could add a pointer to World as an attribute of the ODEPhysics class.
Then query the World for the Body with the appropriate ID.

Here is another option. ODEPhysics has a list of all the entities. You
can modify the Entity class to have a string "type" identifier (such
as "body","geom","joint", etc). Then in the collision callback,
iterate through the list and find the "body" entity with the right ID.

-nate

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Playerstage-gazebo mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-gazebo

Reply via email to