CMRoboBits: Actuators, Motion : CMRoboBits: Actuators, Motion
Manuela Veloso
Nick Aiwazian
Sonia Chernova
Thanks to Jim Bruce,
Scott Lenser, and Doug Vail
15-491, Fall 2003
Carnegie Mellon
Intelligent Complete Robot : Intelligent Complete Robot Actuators Perception External World Sensors Cognition
Sony AIBO Robot : Sony AIBO Robot
AIBO Actuators : AIBO Actuators 18 degrees of freedom with a continuously controllable range of motion
3 DOF in each leg (12 total)
3 DOF in the head
2 DOF in the tail
1 DOF in the jaw
Each joint is controlled by specifying to a desired joint angle to OVirtualRobotComm.
2 binary motors for the ears
A speaker for general sound production
CMPack Walk Engine : CMPack Walk Engine Lowest level: desired angles for joints
Interface: CMPack WalkEngine
One level of abstraction
More natural settings to specify desired positions
Includes all the kinematics computation
Supports both walking and kicking
Forward Kinematics, Inverse Kinematics, & PID Control in a Nutshell : Forward Kinematics, Inverse Kinematics, & PID Control in a Nutshell Nick Aiwazian
September 15, 2003
Forward Kinematics : Forward Kinematics Determines position in space based on joint configuration
Denavit-Hartenberg Convention
Conceptually simple (follow convention)
A simple example : A simple example What is the position & orientation of the tool (end effector) relative to the origin?
Solution : Solution Can be solved trigonometrically!
Inverse Kinematics : Inverse Kinematics Going backwards
Find joint configuration given position & orientation of tool (end effector)
More complex (path planning & dynamics)
Usually solved either algebraically or geometrically
Possibility of no solution, one solution, or multiple solutions
Another example : Another example What is the configuration of each joint if the end effector is located at (l1, l2, -)? (Solve for (θ1, θ2) when the tool is at {l1, l2, -}) Let’s assume l1 = l2
Solution : Solution
Or
(Two Solutions)
PID Control : PID Control The Basic Problem:
We have n joints, each with a desired position which we have specified
Each joint has an actuator which is given a command in units of torque
Most common method for determining required torques is by feedback from joint sensors
The Control Loop : The Control Loop
What is PID Control? : What is PID Control? Proportional, Integral, & Derivative Control
Proportional: Multiply current error by constant to try to resolve error
Integral: Multiply sum of errors by constant to resolve steady state error (error after system has come to rest)
Derivative: Multiply time derivative of error change by constant to resolve error as quickly as possible
Summary : Summary These concepts make up the low level functionality of the AIBO
Implemented once and used repeatedly
For more information about PID Control and Forward & Inverse Kinematics take Matt Mason’s Robotic Manipulation course
Robot Motion : Robot Motion A 51-parameter structure is used to specify the gait of the robot. Global Parameters:
Height of Body (1)
Angle of Body (1)
Hop Amplitude (1)
Sway Amplitude (1)
Walk Period (1)
Height of Legs (2) Leg Parameters:
Neutral Kinematic Position (3x4)
Lifting Velocity (3x4)
Lift Time (1x4)
Set Down Velocity (3x4)
Set Down Time (1x4)
Kicking : Kicking A series of set positions for the robot
Linear interpolation between the frames
Kinematics and interpolation provided by CMWalkEngine
Set robot in desired positions and query the values of the joints
Very Effective Kicks : Very Effective Kicks
High Sensitivity to ParametersGood Settings for Effective Kick : High Sensitivity to Parameters Good Settings for Effective Kick
High Sensitivity to ParametersExact Same Settings - Lab : High Sensitivity to Parameters Exact Same Settings - Lab
High Sensitivity to ParametersGood Settings for the Lab : High Sensitivity to Parameters Good Settings for the Lab
Approaches for Parameter Setting : Approaches for Parameter Setting Trial and error
Tedious, but controlled, and provides knowledge of parameters
Search
Large parameter space, local vs. global optima
Adaptation
Controlled change by feedback
Motor Control : Motor Control Each message to OVirtualRobotComm contains a set of target angles for the joints
Each target is used for a PID controller (part of the AIBO robot) that controls each motor
Each target angle is used for one 8ms motor frame
Each message contains at least 4 motor frames (32ms)
Use of Kicks in Behaviors : Use of Kicks in Behaviors Modeling effects of kicking motions
Ball vision analysis
Ball trajectory angle analysis
Kick strength analysis
Kick selection for behaviors
Selection algorithm
Performance comparison
(Sonia Chernova’s senior thesis)
Accuracy of Object Detection Varies -- Robot Standing -- : Accuracy of Object Detection Varies -- Robot Standing -- Distance (mm)
Accuracy of Object Detection Varies -- Robot Pacing -- : Distance (mm) Accuracy of Object Detection Varies -- Robot Pacing --
Slide29 : Distance (mm) Accuracy of Object Detection Varies – Robot Spinning --
Ball Trajectory Angle : Ball Trajectory Angle Estimate the angle of the ball’s trajectory relative to the robot
Track ball’s trajectory after the kick
Retain information about ball position in each vision frame
Calculate angle of trajectory using linear regression
Angle Analysis : Angle Analysis Forward Kick Right Head Kick Left Head Kick
Kick Strength : Kick Strength Estimate the distance the ball will travel after a kick.
Impossible to track entire path of the ball
Calculate only the final location of the ball relative to the kick position
Estimate failure rate of the kick using distance threshold
Forward Kick Distance Analysis : Forward Kick Distance Analysis
Head Kick Distance Analysis : Head Kick Distance Analysis
Kick Selection : Kick Selection Incorporate the kick models into the selection algorithm
The robot knows its position on the field relative to the goal and the desired ball trajectory
The robot selects appropriate kick by referencing the kick model
If no kick fits desired criteria, robot selects closest matching kick and turns/dribbles ball to appropriate position
Kick Selection Performance : Kick Selection Performance
Kick Selection in Action : Kick Selection in Action
Summary : Summary Effectively moving a four-legged robot is challenging
Effectiveness of motion is highly sensitive to motion parameters
CMWalk provides the kinematics computations, so parameter setting can be at a high level of abstraction.
Ideally, we would like to set parameters automatically.
The Motion Interface : The Motion Interface Sonia Chernova
The Motion Interface : The Motion Interface
Coordinate Frames : Coordinate Frames x x a a
The Walk Engine : The Walk Engine All of the inverse kinematics have been done for you!
All you have to deal with are the “motion parameters”
Your Goal: Create fluid, stable motion
Motion Parameters : Motion Parameters Neutral Kinematic Position (3x4)
Lift Velocity (3x4)
Lift Time (1x4)
Down Velocity (3x4)
Down Time (1x4)
Front Leg Height Limit (1)
Back Leg Height Limit (1) Height of Body (1)
Angle of Body (1)
Hop Amplitude (1)
Sway Amplitude (1)
Walk Period (1) Leg Parameters (46) Body Parameters (5)
Motion Parameters : Motion Parameters Neutral Kinematic Position (3D vector relative to the motion coordinate frame) - Position of the leg on the ground at some point during the walk cycle
Think of it as the position the legs would be in if the dog was pacing in place using your walk parameters Path of the leg during 1 cycle
Motion Parameters : Motion Parameters Lift Velocity (3D vector) – Velocity (mm/sec) with which the leg is lifted off the ground
Down Velocity (3D vector) – Velocity (mm/sec) with which the leg is placed on the ground
Lift Time and Down Time – This controls the order of the legs by specifying a percentage of the time through the time cycle that each leg is moved
Motion Parameters : Motion Parameters Front and Back Leg Height Limit (mm) – Upper bound on the height of the airpath of the front and back legs. Air path of leg with height limit
Motion Parameters : Motion Parameters Body Angle (radians) – Angle of the body relative to the ground measured at the origin of the motion coordinate frame
Body Height (mm) – Height of the body relative to the ground measured at the origin of the motion coordinate frame
Walk Period (ms) – Time of one walk cycle
Hop and Sway Amplitudes (mm) – Amplitude of vertical and horizontal oscillations (Value usually set to 0)
Creating a Parameter Set (1) : Creating a Parameter Set (1) Motion::WalkParam wp;
wp.leg[0].neutral.set( 125, 82,0);
wp.leg[1].neutral.set( 125,-82,0);
wp.leg[2].neutral.set( -100, 75,0);
wp.leg[3].neutral.set( -100,-75,0);
wp.period = 640;
wp.leg[0].lift_vel.set(0,0, 100);
wp.leg[1].lift_vel.set(0,0, 100);
wp.leg[2].lift_vel.set(0,0, 150);
wp.leg[3].lift_vel.set(0,0, 150);
wp.leg[0].down_vel.set(0,0,-100);
wp.leg[1].down_vel.set(0,0,-100);
wp.leg[2].down_vel.set(0,0,-100);
wp.leg[3].down_vel.set(0,0,-100);
Values are in millimeters, milliseconds or radians!
Creating a Parameter Set (2) : Creating a Parameter Set (2) wp.leg[0].lift_time=0.0000; wp.leg[0].down_time=0.5000;
wp.leg[1].lift_time=0.5000; wp.leg[1].down_time=1.0000;
wp.leg[2].lift_time=0.5000; wp.leg[2].down_time=1.0000;
wp.leg[3].lift_time=0.0000; wp.leg[3].down_time=0.5000;
wp.body_angle = RAD(16.0);
wp.body_height = 98;
wp.hop = 0;
wp.sway = 0;
wp.front_height = 9.0;
wp.back_height = 9.0;
out = fopen("walk_xy.prm","wb");
if(out){
fwrite(&wp,sizeof(wp),1,out);
fclose(out);
}
Primary Motion Parameters : Primary Motion Parameters Neutral Kinematic Position (3x4)
Lift Velocity (3x4)
Lift Time (1x4)
Down Velocity (3x4)
Down Time (1x4)
Front Leg Height Limit (1)
Back Leg Height Limit (1) Height of Body (1)
Angle of Body (1)
Hop Amplitude (1)
Sway Amplitude (1)
Walk Period (1) Leg Parameters (46) Body Parameters (5)
Running Your Code : Running Your Code Edit: ~/dogs/agent/Motion/genmot/genwalk.cc
Compiling code:
~/dogs/agent/Motion/genmot> make
~/dogs/agent/Motion/genmot> ./genmot
>Kinemaric Errors=[0] [0]
[0] [0]
Saving to the stick:
~/dogs/agent/Motion/genmot> mount /memstick
~/dogs/agent/Motion/genmot> cp walk_xy.prm /memstick/motion/
~/dogs/agent/Motion/genmot> umount /memstick
Running Your Code : Running Your Code Compiling code:
~/dogs/agent/Motion/genmot> make
~/dogs/agent/Motion/genmot> ./genmot
>Kinemaric Errors=[0] [0]
[0] [0]
Saving to the stick:
~/dogs/agent/Motion/genmot> mount /memstick
~/dogs/agent/Motion/genmot> cp walk_xy.prm /memstick/motion/
~/dogs/agent/Motion/genmot> umount /memstick What are these errors?
Questions? : Questions?
Frame-Based Motion : Frame-Based Motion
Frame-Based Motion : Frame-Based Motion Each motion is described by a series of “frames” which specify the position of the robot, and a time to interpolate between frames
Movement between frames is calculated through linear interpolation of each joint
Slide56 : The position of the robot in each frame can be described using any of the following:
Position of the legs - in terms of angles of each joint or position of the foot in motion coordinates
Angle of the head (tilt, pan, roll)
Body height and angle
Angle of the mouth struct BodyState{
BodyPosition pos;
LegState leg[4];
HeadState head;
MouthState mouth;
};
Examples: Valid Motion Frames : Examples: Valid Motion Frames LegAng(b,0, 0.0, 1.5, 0.0);
LegAng(b,1, 0.0, 1.5, 0.0);
LegAng(b,2, 0.1, 0.0, 0.2);
LegAng(b,3, 0.1, 0.0, 0.2);
m[n].body = b;
m[n].time = 100;
n++; BodyPos(b,98,RAD(16));
HeadAng(b, 0.5, 1.5, 0.0);
MouthAng(b,-.7);
LegPos(b,0, 123, 85,0);
LegPos(b,1, 123,-85,0);
LegPos(b,2, -80 , 75,0);
LegPos(b,3, -80 ,-75,0);
m[n].body = b;
m[n].time = 100;
n++; BodyPos(b,98,RAD(16));
HeadAng(b, 0.5, 1.5, 0.0);
LegPos(b,0, 123, 85, 0);
LegPos(b,1, 123,-85, 0);
LegAng(b,2, 0.1, 0.0, 0.2);
LegAng(b,3, 0.1, 0.0, 0.2); m[n].body = b;
m[n].time = 100;
n++; m[n].body = b;
m[n].time = 100;
n++;
Running Your Code : Running Your Code Edit: ~/dogs/agent/Motion/genmot/genmisc.cc
Compiling code:
~/dogs/agent/Motion/genmot> make
~/dogs/agent/Motion/genmot> ./genmot
>Kinemaric Errors=[0] [0]
[0] [0]
Saving to the stick:
~/dogs/agent/Motion/genmot> mount /memstick
~/dogs/agent/Motion/genmot> cp k_bump.mot /memstick/motion/
~/dogs/agent/Motion/genmot> umount /memstick
In your code:
command->motion_cmd = MOTION_KICK_BUMP;
Joint Angle Limits : Joint Angle Limits
Information : Information Two readings will be made available off the Webpage.
Wednesday’s lab will be about debugging tools using wavelan communication to and from the robots.
Homework 2 is due in class on Wednesday and Homework 3 will be handed out then.
John deCuir, SONY, USA, will present the new ERS-7 robots at the beginning of the class on Monday, September 22nd.