# -*- encoding: UTF-8 -*- '''Cartesian control: Torso and Foot trajectories''' ''' This example is only compatible with NAO ''' import argparse import motion import almath from naoqi import ALProxy def main(robotIP, PORT=9559): ''' Example of a cartesian foot trajectory Warning: Needs a PoseInit before executing ''' motionProxy = ALProxy("ALMotion", robotIP, PORT) postureProxy = ALProxy("ALRobotPosture", robotIP, PORT) # Wake up robot motionProxy.wakeUp() # Send robot to Stand Init postureProxy.goToPosture("StandInit", 0.5) frame = motion.FRAME_WORLD axisMask = almath.AXIS_MASK_ALL # full control useSensorValues = False # Lower the Torso and move to the side effector = "Torso" initTf = almath.Transform( motionProxy.getTransform(effector, frame, useSensorValues)) deltaTf = almath.Transform(0.0, -0.06, -0.03) # x, y, z targetTf = initTf*deltaTf path = list(targetTf.toVector()) times = 2.0 # seconds motionProxy.transformInterpolations(effector, frame, path, axisMask, times) # LLeg motion effector = "LLeg" initTf = almath.Transform() try: initTf = almath.Transform(motionProxy.getTransform(effector, frame, useSensorValues)) except Exception, errorMsg: print str(errorMsg) print "This example is not allowed on this robot." exit() # rotation Z deltaTf = almath.Transform(0.0, 0.04, 0.0)*almath.Transform().fromRotZ(45.0*almath.TO_RAD) targetTf = initTf*deltaTf path = list(targetTf.toVector()) times = 2.0 # seconds motionProxy.transformInterpolations(effector, frame, path, axisMask, times) # Go to rest position motionProxy.rest() if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--ip", type=str, default="127.0.0.1", help="Robot ip address") parser.add_argument("--port", type=int, default=9559, help="Robot port number") args = parser.parse_args() main(args.ip, args.port)