On 01/28/2011 05:44 PM, John Hsu wrote:

Is my understanding correct?

yes, the forces applied are cumulative.  I've updated the wiki to reflect so.
Thank you.

I tried to use gazebo/clear_joint_forces instead of applying a -0.01
effort, but it appears that clear_joint_forces is no longer in ROS, even
though it is in the Gazebo package documentation in the ROS wiki.

which release are you running?  I see the clear_joint_forces service calls in both cturtle and unstable(diamondback alpha) files.
I am running C-Turtle for Ubuntu. "rosnode info gazebo" shows /gazebo/clear_joint_forces in the service list, but "rossrv package gazebo" does not list gazebo/ClearJointForces.
"locate ClearJointForces" doesn't find anything, but "locate ApplyJointEffort" shows:

/opt/ros/cturtle/stacks/simulator_gazebo/gazebo/src/gazebo/srv/_ApplyJointEffort.py
/opt/ros/cturtle/stacks/simulator_gazebo/gazebo/src/gazebo/srv/_ApplyJointEffort.pyc
/opt/ros/cturtle/stacks/simulator_gazebo/gazebo/srv/ApplyJointEffort.srv
/opt/ros/cturtle/stacks/simulator_gazebo/gazebo/srv/lisp/gazebo/.ApplyJointEffort.asd-dep
/opt/ros/cturtle/stacks/simulator_gazebo/gazebo/srv/lisp/gazebo/ApplyJointEffort.lisp
/opt/ros/cturtle/stacks/simulator_gazebo/gazebo/srv/lisp/gazebo/_package_ApplyJointEffort.lisp
/opt/ros/cturtle/stacks/simulator_gazebo/gazebo/srv_gen/cpp/include/gazebo/ApplyJointEffort.h

"ls /opt/ros/cturtle/stacks/simulator_gazebo/gazebo/srv" lists:

ApplyBodyWrench.srv     GetModelProperties.srv    SetLinkProperties.srv
ApplyJointEffort.srv    GetModelState.srv         SetLinkState.srv
BodyRequest.srv         GetPhysicsProperties.srv  SetModelConfiguration.srv
DeleteModel.srv         GetWorldProperties.srv    SetModelState.srv
GetJointProperties.srv  JointRequest.srv          SetPhysicsProperties.srv
GetLinkProperties.srv   lisp                      SpawnModel.srv
GetLinkState.srv        SetJointProperties.srv

This works:

rospy.wait_for_service("gazebo/apply_joint_effort")
_apply_joint_effort = rospy.ServiceProxy("gazebo/apply_joint_effort", gazebo.srv.ApplyJointEffort)

but this:

rospy.wait_for_service("gazebo/clear_joint_forces")
_clear_joint_forces = rospy.ServiceProxy("gazebo/clear_joint_forces", gazebo.srv.ClearJointForces)

results in this:

Traceback (most recent call last):
  File "truck.py", line 141, in <module>
    gazebo.srv.ClearJointForces)
AttributeError: 'module' object has no attribute 'ClearJointForces'
-- 
Jim Rothrock | Wunderkammer Laboratory
jim.rothrock@wunderkammerlab.com