Andrew, yes, you're looking at the right place for the additional loop closure joint(s). John On Fri, Oct 8, 2010 at 1:47 PM, Andrew Mor wrote: > Thanks for the feedback. I've been looking at urdf2gazebo.cpp to see how I > can add in the last joint to the gazebo model, using, as you suggest, a > gazebo extension to get the joint information. Is the support already built > into that code, or a previous version? I have a plan on adding it, but may > not be doing everything in the best manner possible. > > Looking through the gripper xacro file, there is this: > > > ${prefix}_r_parallel_link > ${prefix}_palm_link > ${prefix}_palm_link > 0 0 -1 > 0.2 > ${0.07691+parallel_link_x_offset} > ${-0.01-parallel_link_y_offset} 0 > > > Is this the code that adds in the parallel link? If so, I should be able > to decipher what everything in there does. > > As far as the application, we have a pan/tilt platform, where the tilt axis > controls one of the bars of a 4-bar linkage so that upper platform actually > translates instead of tilts. There is then another pan/tilt head on top of > the first one to do the actual tilting. But the 4-bar linkage is the one > causing the difficulties. > > Thanks > > Andrew > > > On Fri, Oct 8, 2010 at 2:39 PM, John Hsu wrote: > >> Hi Andrew, >> >> Can you provide some more detail about the robot you're simulating and >> your application? >> >> To model the closed loop chain in the PR2 gripper, I hid an additional >> joint constraint in extension for each gripper so we are >> effectively solving the dynamics of a closed 4-bar linkage in ODE. The >> implementation is far from pretty but that's what I had to do to get around >> the urdf tree-structure requirement. For urdf-2.0, we plan on adding graph >> support , but that's in >> the discussion stage. >> >> As for joint mimic, ODE internally does not support dynamic joint >> mimicking right now, it's something on my todo list, but may take a while, >> pending priority of the functionality. >> >> Without a specific context for your simulation, I might suggest trying the >> same trick I did for the PR2 gripper first by hiding the additional >> "loop-closing" joint in gazebo extensions, and the physics engine can take >> care of the implicit joint mimicking behavior due to closed loop >> constraints. >> >> Note that using the set_link_state service call for partial robot will >> most likely disrupt dynamics of the entire of the system. >> >> I cc'd the list in case someone else has more experiences with similar >> problems. >> John >> >> >> On Fri, Oct 8, 2010 at 8:24 AM, Andrew Mor wrote: >> >>> John, >>> >>> I was wondering if there was a straightforward way of constraining the >>> orientation of a joint within the urdf framework? I looked through the >>> archives of the mailing list and the pr2_gripper code, and nothing is really >>> popping out at me. We have a simple 4 bar mechanism where the side bars are >>> both the same size and the top is the same as the bottom, so the side links >>> are always parallel as is the top to the bottom. I was hoping to use the >>> mimic tag from within my controller to set the joint_state_ position to be >>> equal to the other joint, but position_ is read-only. Is there another way >>> to get around this without constructing a custom transmission? >>> >>> I had thought about calling the /gazebo/set_link_state service and that >>> is still my backup plan before writing a transmission. >>> >>> Would this be better to send to the ros-users list? >>> >>> Thanks >>> >>> Andrew Mor >>> >> >> >