[ros-users] Flexible & remote transmission

John Hsu johnhsu at willowgarage.com
Thu Dec 16 00:08:39 UTC 2010


Hi Jeroen,

Thanks for the updated description, though I think I might understand the
gist of the problem, can you attach a diagram as well?

To briefly describe what I think you are modeling here, the motor output has
it's own degree of freedom and an encoder attached to the motor output
position, independent of the leg joint's degree of freedom.   In addition,
the motor dof and the leg joint dof are coupled by a spring-like link
mechanism?

One way to do this is to model the spring dynamics in transmission.  To do
this, you can model the two joints independently, and specify a transmission
that applies the right amount of torque on the leg joint based on joint
position differences between motor output joint and leg joint.  In the
attached package, I created a simple urdf with two joints
(motor_output_joint and leg_joint).  leg_joint is connected to
motor_output_joint via something called a SpringTransmission.  Basically,
motor_output_joint can potentially be controlled by one of the mechanism
controllers (e.g. Joint Effort
Controller<http://www.ros.org/wiki/robot_mechanism_controllers/JointEffortController>,
Joint Velocity Controller or
<http://www.ros.org/wiki/robot_mechanism_controllers/JointVelocityController>Joint
Position Controller<http://www.ros.org/wiki/robot_mechanism_controllers/JointPositionController>)
while the position difference between motor_output_joint and leg_joint
dictates the amount of torque to be applied to the leg_joint.
Does that sound about right?

You can see the spring joint in action by:

roslaunch pr2_spring_transmission_example spring_link.launch

and in a separate terminal:

rostopic pub /test_controller/command std_msgs/Float64 0.5

John



On Wed, Dec 15, 2010 at 4:02 AM, Jeroen Willems <jjpa.willems at gmail.com>wrote:

> To problem can be simplified to a motor which is connected through a ~20cm
> axis with a joint. Both, the motor and joint, are having position encoders.
> We assume that the main dynamics of the axis (the transmission) can be
> modeled as a linear spring ( T_spring = k * (theta_joint - theta_motor) ).
>
> This problem is probably also due the fact I'm have problems understanding
> the mechnism_model. I'm used to that the controller is getting a joint
> error, it outputs a control signal to the robot (torque applied to the motor
> for instance). So the mechanism_model is somewhat confusing to me because
> you put the effort directly on the joints and then via a transmission the
> effort on the actuator is determined. If I get it correctly.
>
> I'm using an hexapod so imagine that if you eventually want to jump, you
> want to use the kinetic energy of the springs.  When landing you also want
> to use the
> springs to reduce the impact on the robot by obtaining a part of the
> energy.
>
> Jeroen
>
>
>
> On Tue, Dec 14, 2010 at 23:39, Stuart Glaser <sglaser at willowgarage.com>wrote:
>
>> Hi Jeroen,
>>
>> Could you describe what you're trying to model in more detail?  In
>> particular, where are the encoders, motors, springs, gears, and joints
>> in relation to each other?
>>
>> -Stu
>>
>> On Tue, Dec 14, 2010 at 4:37 AM, Jeroen Willems <jjpa.willems at gmail.com>
>> wrote:
>> > Okay I'm looking into the flexibility between the actuator and the joint
>> by
>> > adding a custom transmission but I'm having some difficulties.
>> >
>> > I've looked into the existing transmissions and those are pretty
>> > straightforward (except for the pr2_gripper).
>> > I want to add the (linear, rotational) flexibility, I will neglect the
>> > damping for simplicity.
>> > I'm used to use the equations of motion:
>> > Load:  Jl theta_L_ddot + k ( theta_L - theta_M ) = 0
>> > Motor: Jm theta_M_ddot - k ( theta_L - theta_M ) = u
>> >
>> > I don't get it how to implement this in the transmission. I was thinking
>> of
>> > a little bit of rewriting as in the attachment but it did not influence
>> > anything at all.
>> > Would be great if someone has an idea, solution or suggestion on how
>> > implementing this flexibility.
>> >
>> > Thanks in advance
>> >
>> > Jeroen
>> >
>> > On Sat, Nov 20, 2010 at 21:07, Stuart Glaser <sglaser at willowgarage.com>
>> > wrote:
>> >>
>> >> Hi Joeren,
>> >>
>> >> For both of these, the solution is to write a transmission.  Both
>> >> issues require a specific translation between actuators and joints,
>> >> and the best way to encode that translation is in a transmission.
>> >>
>> >> -Stu
>> >>
>> >> On Fri, Nov 19, 2010 at 1:36 AM, Jeroen Willems <
>> jjpa.willems at gmail.com>
>> >> wrote:
>> >> > Hi All,
>> >> >
>> >> > I'm currently modeling a hexapod in Gazebo but I'm currently having
>> some
>> >> > difficulties.
>> >> >
>> >> > I have basically 2 questions, I hope that this is not a problem for
>> one
>> >> > post
>> >> > but both have to do with the transmission:
>> >> >
>> >> > 1) Between the actuators and the joints are torsion springs. I
>> haven't
>> >> > found
>> >> > something that incorporates flexibility between actuators and joints.
>> >> > Is there some solution or workaround to obtain this or should I try
>> an
>> >> > alternative solution like writing a custom transmission?
>> >> >
>> >> > 2) As you can imagine I have 6 legs consisting of three links,
>> basically
>> >> > an
>> >> > elbow manipulator.
>> >> > The last two links can be regarded as in a 2D-plane. The third link
>> is
>> >> > remotely driven.
>> >> > This means that when rotating the second link the third link does not
>> >> > change
>> >> > the rotation with respect to the body.
>> >> > So in a 'standard' situation the third link rotates with the second
>> link
>> >> > so
>> >> > the angle between those two does not change.
>> >> > I hope this is a bit clear.
>> >> > So again is there some solution or workaround?
>> >> >
>> >> > Thanks!
>> >> >
>> >> > Jeroen
>> >> >
>> >> > _______________________________________________
>> >> > 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
>> _______________________________________________
>> ros-users mailing list
>> ros-users at code.ros.org
>> https://code.ros.org/mailman/listinfo/ros-users
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20101215/c5e67eb8/attachment-0003.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pr2_spring_transmission_example.tgz
Type: application/x-gzip
Size: 4815 bytes
Desc: not available
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20101215/c5e67eb8/attachment-0005.bin>


More information about the ros-users mailing list