Difference between revisions of "PR2 Arm Control"

From Healthcare Robotics Wiki
Jump to: navigation, search
(Low-level Controllers)
(Low-level Controllers)
Line 109: Line 109:
 
||
 
||
 
* Competing forces (pose and posture)
 
* Competing forces (pose and posture)
* Elbow drifts overtime if posture gain too low
+
* Elbow drifts over time if posture gain too low
 
* "Bouncing" in elbow when arm stops moving
 
* "Bouncing" in elbow when arm stops moving
 
* Difficult to detect collision using joint errors
 
* Difficult to detect collision using joint errors

Revision as of 03:09, 30 June 2011

Low-level Controllers

Controller Joint Spline Trajectory Controller JTranspose Controller JTranspose Task Controller JInverse Controller End Effector Cartesian Impedance Control
Designer Stuart Glaser Stuart Glaser Adam Leeper Stuart Glaser MIT
Control Space Joint space Cartesian Space Cartesian Space Cartesian Space Cartesian Space
Control Type Joint position, velocity, acceleration control with PID Controls force at the end effector with PD on the Cartesian error Same as JTranspose, shaped stiffness matrix in end effector's frame Position or Velocity Cartesian control with PD control on joint velocities Force-stiffness hybrid control, JTranspose on some DOF, force control on others
Relevant Equations

T = PID(spline(t, trajectory) - q_cur)

T = J^T * PD(x_err) + Kff * J_null * (q_posture - q)

Same but: PD(x_err) = R * Kp * R^T * x_err + R * Kd * R^T * x_dot

T = Kp * (q_proxy - q) + Kd * (q_dot_des - q_dot)

q_dot_des = J_pinv * x_dot + J_null * (q_posture - q)

T = J^T * F

F = PD(x_err) or F_des

Control Location Joints User specified Cartesian pose User specified Cartesian pose User specified Cartesian pose Wrist Cartesian pose
Interfaces
  • Actionlib
  • Command topic
  • Command topic
  • Command topic
  • Command topic
  • Actionlib
  • Command topic
Demonstrated Tasks
  • Planning and manipulation stack
  • Scratch approach ver. 1
  • Trajectory playback
  • Overhead grasping
  • Lightswitch
  • Interactive grasping
  • THEP remote control
  • Door opening
  • Invisible surface
  • Sweeping with broom
  • Brushing on table
  • Writing with pencil
  • Flipping pages in a book
  • Cutting a cake
  • Door opening (not smoothly)
Specify Trajectory Yes No No No Yes
Change Gains on the Fly No Yes Yes No Yes, if using impedance control
Integral Control Yes No No No No
Cartesian Velocity Saturation No Yes Yes No, not implemented yet No
Torque Saturation No Yes Yes No No
Pros
  • Repeatable
  • Control of extra DOF stronger
  • Detecting collisions easy and equally constrained
  • Easier to control extra DOF in general
  • Cartesian impedance control
  • Impedance control makes more sense in tool's frame
  • Has several videos with different applications
Cons
  • Difficult to control elbow in general
  • Joint space impedance control doesn't make sense
  • Working with IK has been difficult (solved by KDL?)
  • Competing forces (pose and posture)
  • Elbow drifts over time if posture gain too low
  • "Bouncing" in elbow when arm stops moving
  • Difficult to detect collision using joint errors
  • Singularity issues
  • Seems like a volatile controller
  • Still in development (not all interfaces implemented)
  • No saturation limits
Issues/Bugs
  • Can sometimes demonstrate unexpected behavior when in kinematically constrained situations
  • Sometimes one of the arms doesn't respond to commands (reported by Marc)
Notes
  • Waypoints are smoothly interpolated between using splines.
  • Commands can be sent to the controller to be executed in the future.
  • Don't set derivative gains to 0 (division by zero error)
  • Each point in the trajectory is alternatively an impedance vector or a force.
  • The derivative term is not implemented.