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
Head
- 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.
Major issues that need to be resolved