1 / 16

INTRODUCTION TO MOTION GENERATION FOR NAO ROBOT USING ANDROID FRAMEWORK

INTRODUCTION TO MOTION GENERATION FOR NAO ROBOT USING ANDROID FRAMEWORK. Department: FTI-FHO-FPT Presenter: Pham Van Trung. OUTLINE. Introduction. 1. 2. Motor Stiffness Control. Joint Angle Control. 3. 4. Position Control. 5. Locomotion Control. Question and Comment. 6.

taite
Download Presentation

INTRODUCTION TO MOTION GENERATION FOR NAO ROBOT USING ANDROID FRAMEWORK

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. INTRODUCTION TO MOTION GENERATION FOR NAO ROBOT USING ANDROID FRAMEWORK Department: FTI-FHO-FPT Presenter: Pham Van Trung

  2. OUTLINE Introduction 1 2 • Motor Stiffness Control • Joint Angle Control 3 4 • Position Control 5 • Locomotion Control • Question and Comment 6

  3. Introduction Robot Models

  4. Introduction Humanoid robot • Have human model • Capable to perform as human

  5. Introduction NAO Humanoid Robot

  6. Introduction Motions of NAO Robot • How to move an arm or a leg to a position? • Forward kinematic • Inverse kinematic • How to locate a position of the robot?

  7. Introduction NAO Motion Module on Android Framework Control Stiffness of Joint Motor Control Joint Angle Control Effector Position in Cartesian Coordinate Locomotion control

  8. Stiffness Control • What is stiffness? • Basically, stiffness is a torque that a motor of joint can generate • Stiffness value relatively defined 0.0 to 1.0 • Functions to control and manage stiffness • Globally, on the whole robot using:  • RobotMotionStiffnessController. wakeUp(Robot robot) • RobotMotionStiffnessController. rest (Robot robot) • Specifically, for one or several joint(s) using:  • RobotMotionStiffnessController. stiffnessInterpolation(Robot robot, String[] names, float[] stiffnesses, float[] times) float[] • RobotMotionStiffnessController. getStiffnesses(Robot robot, String name ) • RobotMotionStiffnessController. setStiffnesses(Robot robot, String[] names, float[] stiffnesses)

  9. Stiffness Control • Example Using setStiffnesses() • names–Name or names of joints or chains: “Body”, “JointActuators”, “Joints” or “Actuators”: HeadYaw, LShoulderPitch, LHipYawPitch, RHipYawPitch, RShoulderPitch, HeadPitch, LShoulderRoll, LHipRoll, RHipRoll, RShoulderRoll, LElbowYaw, LHipPitch, RHipPitch, RElbowYaw, LElbowRoll, LKneePitch, RKneePitch, RElbowRoll,LWristYaw, LAnklePitch, RAnklePitch, RWristYaw, LHand, RAnkleRoll, LAnkleRoll, RHand. • Stiffnesses,stiffnessLists, – An stiffness, list of stiffnesses or list of list of stiffnesses. Range of stiffness value is within [0.0,1.0];

  10. Joint Control • What is joint control? • Rotate a joint motor by a exact given angle • Forward kinematic control • Functions to control joint angles • Animation methods (time fixed, blocking function • RobotMotionJointController. angleInterpolation(Robot robot, String[] names, float[] angles, float[] times, booleanisAbsolute) • RobotMotionJointController. angleInterpolationWithSpeed(Robot robot,String[] names, float[] angles, float fractionMaxSpeed) • Reactive methods (could be changed every ALMotion cycle, non blocking function) • RobotMotionJointController. setAngles (Robot robot, String[] names, float[] angles, float fractionMaxSpeed) • RobotMotionJointController. changeAngles(Robot robot, String[] names, float[] angles, float fractionMaxSpeed) • RobotMotionJointController. closeHand(Robot robot, String hand) • RobotMotionJointController. openHand(Robot robot, String hand)

  11. Joint Control • Example Using angleInterpolation () • names – Name or names of joints, chains as mentioned in the section 1. • angles – An angle, list of angles or list of list of angles in radians that will be varied. Range of angle variation is within [-3.14,+3.14] depending on an allowable range of a chosen joint. See more about joint of hardware specification. • times – A time, list of times or list of list of times in seconds. It must be greater than zero. • isAbsolute – If true, the movement is described in absolute angles in the default defined coordinate , else the angles are relative to the current angle.

  12. Cartesian Control • What is Cartesian control? • Move an effector (chain of joints) to a given position in a Cartesian coordinate • Dealing with inverse kinematic problem • Functions • Animation methods (time fixed, blocking function • RobotMotionCartesianController. positionInterpolation(Robot robot, String name, int space, RobotPosition6D[] positionList, intaxisMask, float[] durationList, booleanisAbsolute) • RobotMotionCartesianController. positionInterpolations(Robot robot, String[] names, intspaceForAll, RobotPosition6D[] positionList, int[] axisMaskList, float[] durationList, booleanisAbsolute) • Reactive methods (could be changed every ALMotion cycle, non blocking function) • RobotMotionCartesianController. setPosition(Robot robot, String name, int space, RobotPosition6D position, intaxisMask, float fractionMaxSpeed) • RobotMotionCartesianController. changePosition (Robot robot, String name, int space, RobotPosition6D positionChange, intaxisMask, float fractionMaxSpeed)

  13. Cartesian Control • Example Using positionInterpolation () • Name – Name of the chain. Could be: “Head”, “LArm”, “RArm”, “LLeg”, “RLeg”. • space – Task space {FRAME_TORSO = 0, FRAME_WORLD = 1, FRAME_ROBOT = 2}. • positionList– Vector of 6D position arrays (x,y,z,wx,wy,wz) in meters and radians. • axisMask – Axis mask. True for axes that you wish to control. e.g. 7 for position only, 56 for rotation only and 63 for both. • durationList– Vector of times in seconds corresponding to the path points. • isAbsolute – If true, the movement is absolute else relative. • Robot – is a connected robot. This variable is retrieved by calling the function Robot. getRobot().

  14. Locomotion Control • What is Locomotion control? • Move a robot in local place • Functions to manage walking • RobotMotionLocomotionController. moveTo(Robot robot, RobotMoveTargetPosition target) • RobotMotionLocomotionController. setWalkTargetVelocity(Robot robot, RobotMoveTargetPosition target, float speed) • RobotMotionLocomotionController. moveIsActive() • RobotMotionLocomotionController. stopMove() • RobotMotionLocomotionController. getRobotPosition(constbool& useSensors) • RobotMotionLocomotionController. getNextRobotPosition() • RobotMotionLocomotionController. getRobotVelocity()

  15. Locomotion Control • Examples • SetWalkwithVelocity() • x – Fraction of MaxStepX. Use negative for backwards. [-1.0 to 1.0] • y – Fraction of MaxStepY. Use negative for right. [-1.0 to 1.0] • theta – Fraction of MaxStepTheta. Use negative for clockwise [-1.0 to 1.0] • Frequency  – Fraction of MaxStepFrequency [0.0 to 1.0] • MoveTo() • x – Distance along the X axis in meters. • y – Distance along the Y axis in meters. • theta – Rotation around the Z axis in radians [-3.1415 to 3.1415].

  16. Questions and Comments Thank for Your Attention

More Related