[ros-users] Custom transmission

Stuart Glaser sglaser at willowgarage.com
Tue Oct 12 20:26:19 UTC 2010


Hi,

On Tue, Oct 12, 2010 at 11:08 AM, Andrew Mor <abm760 at gmail.com> wrote:
> Could you explain the calling order for the four different propagate*
> functions when running with gazebo?  What calls which functions when?

The simulation creates TWO copies of the transmissions.  The "real"
ones and "fake" ones which translate the actuator values back into
joint values.  I've illustrated the full picture here:

http://www.ros.org/wiki/pr2_mechanism_model?action=AttachFile&do=get&target=mechanism_model.png

In simulation, the calls happen like this:

1. Gazebo writes joint state (position, velocity, ...) into the fake joints.
2. FakeTransmissions.propagatePositionBackwards() translates fake
joint states into actuator states
3. RealTransmissions.propagatePosition() translates actuator states
into joint states
4. Controllers read the joint states and write joint efforts
5. RealTransmissions.propagateEffort() translates joint efforts into
actuator efforts
6. FakeTransmissions.propagateEffortBackwards() translates actuator
efforts into fake joint efforts
7. Gazebo applies the fake joint efforts.

Yes, we are "needlessly" translating joints->actuators->joints when we
could skip that step.  We do the translation so that the transmissions
get tested out in simulation.  By simulating the hardware interface we
match code that runs in simulation more closely to the code that runs
on the robot and increase the likelihood of finding bugs in
simulation.

-Stu

>
> Thanks
>
> Andrew
>
> On Tue, Oct 12, 2010 at 1:57 PM, Stuart Glaser <sglaser at willowgarage.com>
> wrote:
>>
>> Hi Andrew,
>>
>> Yes, a custom transmission sounds like exactly what you need.  There
>> shouldn't be any non-obvious tricks; just work off the simple
>> transmission and the wrist transmission and you should be fine.
>>
>> -Stu
>>
>> On Tue, Oct 12, 2010 at 7:45 AM, Andrew Mor <abm760 at gmail.com> wrote:
>> > I'm looking to simulate two joints in a finger actuated by a single
>> > motor,
>> > where the outer link rotates at a different rate than the inner link.
>> > It
>> > looks like a custom transmission is the best method for doing this.  Is
>> > this
>> > correct, and if so, are there any non-obvious tricks for coding up a
>> > custom
>> > transmission?  I've looked through the 3 transmissions in
>> > pr2_mechanism_model.
>> >
>> > Thanks
>> >
>> > Andrew Mor
>> >
>> > _______________________________________________
>> > ros-users mailing list
>> > ros-users at code.ros.org
>> > https://code.ros.org/mailman/listinfo/ros-users
>> >
>> >
>>
>>
>>
>> --
>> Stuart Glaser
>> sglaser -at- willowgarage -dot- com
>> www.willowgarage.com
>> _______________________________________________
>> ros-users mailing list
>> ros-users at code.ros.org
>> https://code.ros.org/mailman/listinfo/ros-users
>
>
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>
>



-- 
Stuart Glaser
sglaser -at- willowgarage -dot- com
www.willowgarage.com



More information about the ros-users mailing list