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

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

Embed Size (px)

Citation preview

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

INTRODUCTION TO MOTION GENERATION FOR NAO ROBOT USING

ANDROID FRAMEWORK

Department: FTI-FHO-FPT

Presenter: Pham Van Trung

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

OUTLINE

Introduction1

Motor Stiffness Control

Position Control

Locomotion Control5

4

2

Joint Angle Control3

Question and Comment6

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

Introduction

Robot Models

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

Introduction

Humanoid robot

• Have human model• Capable to perform as human

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

Introduction

NAO Humanoid Robot

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

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?

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

Introduction

NAO Motion Module on Android Framework

1. Control Stiffness of Joint Motor

2. Control Joint Angle

3. Control Effector Position in Cartesian Coordinate

4. Locomotion control

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

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: 

o RobotMotionStiffnessController. wakeUp (Robot robot)o RobotMotionStiffnessController. rest (Robot robot)

Specifically, for one or several joint(s) using: o RobotMotionStiffnessController. stiffnessInterpolation (Robot robot, String[]

names, float[] stiffnesses, float[] times) float[] o RobotMotionStiffnessController. getStiffnesses (Robot robot, String name )o RobotMotionStiffnessController. setStiffnesses (Robot robot, String[] names,

float[] stiffnesses)

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

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];

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

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 functiono RobotMotionJointController. angleInterpolation (Robot robot, String[] names,

float[] angles, float[] times, boolean isAbsolute)o RobotMotionJointController. angleInterpolationWithSpeed (Robot robot,String[]

names, float[] angles, float fractionMaxSpeed) Reactive methods (could be changed every ALMotion cycle, non blocking

function)o RobotMotionJointController. setAngles (Robot robot, String[] names, float[] angles,

float fractionMaxSpeed) o RobotMotionJointController. changeAngles (Robot robot, String[] names, float[]

angles, float fractionMaxSpeed)o RobotMotionJointController. closeHand (Robot robot, String hand)o RobotMotionJointController. openHand (Robot robot, String hand)

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

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.

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

Cartesian ControlWhat 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 functiono RobotMotionCartesianController. positionInterpolation (Robot robot, String name,

int space, RobotPosition6D[] positionList, int axisMask, float[] durationList, boolean isAbsolute)

o RobotMotionCartesianController. positionInterpolations (Robot robot, String[] names, int spaceForAll, RobotPosition6D[] positionList, int[] axisMaskList, float[] durationList, boolean isAbsolute)

Reactive methods (could be changed every ALMotion cycle, non blocking function)

o RobotMotionCartesianController. setPosition (Robot robot, String name, int space, RobotPosition6D position, int axisMask, float fractionMaxSpeed)

o RobotMotionCartesianController. changePosition (Robot robot, String name, int space, RobotPosition6D positionChange, int axisMask, float fractionMaxSpeed)

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

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().

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

Locomotion Control

What is Locomotion control? Move a robot in local place

Functions to manage walkingo RobotMotionLocomotionController. moveTo (Robot robot, RobotMoveTargetPosition

target)o RobotMotionLocomotionController. setWalkTargetVelocity (Robot robot,

RobotMoveTargetPosition target, float speed)o RobotMotionLocomotionController. moveIsActive()o RobotMotionLocomotionController. stopMove()o RobotMotionLocomotionController. getRobotPosition (const bool& useSensors)o RobotMotionLocomotionController. getNextRobotPosition()o RobotMotionLocomotionController. getRobotVelocity()

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

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].

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

Questions and Comments

Thank for Your Attention