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
