API review

Proposer: Stuart Glaser

Present at review:

  • Wim, Matei, Kaijen, Eric

Review for the head and gripper interfaces:

Question / concerns / comments

Stu

  • Do we want a "point frame on head" behavior? What should the message look like?
  • Should the parameter server contain the joints or the links?
  • Should "point_head" be an action of some form?
  • From Kaijen/Matei:
    • The gripper should abort when it stops moving and hasn't reached the desired position.
    • A "min_force" should also be specified. This will be the force necessary to overcome static friction.
    • The action should provide feedback as to the current position and effort.

Gunter

  • For head controller: I'm confused that the joint command is a joint state message. Yes, I would imagine that users will want to specify not only locations, but also velocities, but that doesn't necessarily imply state message?
  • Same for the target point, can we also specify a rotational max speed? Do vision folks want this?
  • For grip: admittedly the action interface looks very confusing to me. I assume that's just me????
  • Is the goal always a position with max force?
  • Can we specify velocity?
  • Can we specify just a force, regardless of position? Guess that is 0 or negative position with max force... might be nice to make a little more explicit, but okay.
  • I assume there is little point (given the shape of the fingers), to specifying a max opening force?? We are always looking at closing forces only?
  • Does this use and of the touch sensors? I'm assuming max force is simply max motor force?
  • What units are position in? meters open?

Wim

  • Which frame/axis are we pointing? Should it be possible to choose the frame you want to point?
  • Can the head controller provide state feedback?
  • What type of trajectory is used to get to the desired head orientation and gripper position? Could we specify max vel, max acc, duration?

Matei

  • for the head, we have the controller ("head_traj_controller") and the interface node ("head_controller") that you actually talk to. The naming is confusing: maybe the interface node should not have the word "controller" in its name.
  • for both the gripper and the arm, the interface is through an action; for the head it's not. Do we want to leave it this way?

Meeting agenda

To be filled out by proposer based on comments gathered during API review period

  • Do we want to provide the ability to send velocities or timings as well?
  • Possibility: anyone who wants velocities/timings talks directly to the traj controller.
  • The head currently just jerks to point the head:
    • Do we want maximum velocities?
    • Vision folks just want the head to snap to a position
  • The head goes tic-tic-tic at the command rate
    • Change message to specify how much time to take to get there?
    • Change message to specify the max velocity?
  • Not an action now, but you do want to know when your head has settled so you can take a picture.
  • Also for consistency.
  • If an action, when is success?
    • Succeed when you've settled
    • Never succeed, just cancel when you're preempted (feedback indicates error)
  • Specifying a frame implies specifying an axis (possibly implicitly)
  • Make the user do it?
  • More conceptual juggling than the user should have to do
  • Definitely add a pointing_frame to the command message
  • Also specify an axis?
  • The default is pointing the x axis (for head_pan)

Head message that includes everything:

Header (to describe the target)
target
frame to point
axis to point (vector)
Doing smooth tracking:
  how_long_to_take duration (0 = immediately)
  max_velocity (0 = none)


PointStamped target
Vector3Stamped pointing_axis (origin)
how_long_long_to_take
max_velocity
  • Smoothing at 50hz/20hz?
  • Should have a default frame/axis to point
  • PoseStamped or Vector3Stamped to describe the pointing axis?

    • Need to deal with a quaternion with a pose
    • Vector3 is much more straightforward. Use it.
  • Does the Vector3 timestamp have meaning???
    • Vector3 and a frame_id instead (pointing_axis, pointing_axis_frame)
  • Fixed frame as a parameter? No for now.
  • Setting head joints directly: talk to the traj controller yourself.
    • Interacts badly with ...
  • At some point in the future we will construct a better way of chaining preempts all the way to the bottom.
  • Head controller state feedback
  • Service call: give it what you want to point at and it gives you the joint angles.
  • Interface node should change to head_[pointing]_action
  • This is definitely PR2 specific.
  • Schedule a meeting for the gripper by itself.

Conclusion

Package status change mark change manifest)

  • /!\ Action items that need to be taken.

  • {X} Major issues that need to be resolved


Wiki: pr2_mechanism_controllers/Reviews/2009-12-11_Head_And_Gripper_Interfaces_API_Review (last edited 2009-12-11 21:54:49 by StuartGlaser)