/** * Copyright (c) 2011 Aldebaran Robotics. All Rights Reserved * * \file movehead.cpp * \brief Move NAO's head. * * A simple example showing how to move NAO's head by using ALMotionProxy. * This example will make NAO turn its head left and right slowly. * We use here a specialized proxy to ALMotion. */ #include #include #include int main(int argc, char* argv[]) { if(argc != 2) { std::cerr << "Wrong number of arguments!" << std::endl; std::cerr << "Usage: movehead NAO_IP" << std::endl; exit(2); } /** The name of the joint to be moved. */ const AL::ALValue jointName = "HeadYaw"; try { /** Create a ALMotionProxy to call the methods to move NAO's head. * Arguments for the constructor are: * - IP adress of the robot * - port on which NAOqi is listening, by default 9559 */ AL::ALMotionProxy motion(argv[1], 9559); /** Make sure the head is stiff to be able to move it. * To do so, make the stiffness go to the maximum in one second. */ /** Target stiffness. */ AL::ALValue stiffness = 1.0f; /** Time (in seconds) to reach the target. */ AL::ALValue time = 1.0f; /** Call the stiffness interpolation method. */ motion.stiffnessInterpolation(jointName, stiffness, time); /** Set the target angle list, in radians. */ AL::ALValue targetAngles = AL::ALValue::array(-1.5f, 1.5f, 0.0f); /** Set the corresponding time lists, in seconds. */ AL::ALValue targetTimes = AL::ALValue::array(3.0f, 6.0f, 9.0f); /** Specify that the desired angles are absolute. */ bool isAbsolute = true; /** Call the angle interpolation method. The joint will reach the * desired angles at the desired times. */ motion.angleInterpolation(jointName, targetAngles, targetTimes, isAbsolute); /** Remove the stiffness on the head. */ stiffness = 0.0f; time = 1.0f; motion.stiffnessInterpolation(jointName, stiffness, time); } catch (const AL::ALError& e) { std::cerr << "Caught exception: " << e.what() << std::endl; exit(1); } exit(0); }