MotionProxy类中包含了指挥NAO进行动作的一系列函数。

getSummary:快速地查看到所有关节的当前状态以及正在运行的任务。

(传感器值可能会有延时)

string ip = "127.0.0.1";//NAO的IP地址
int port = 9559;        //NAO的端口号
MotionProxy mp = new MotionProxy(ip, port);//定义MotionProxy的一个对象
string summary = motion.getSummary();      //获取全部的关节状态和任务
Console.Write(summary);

getJointNames:得到机器人身上或关节链上的关节名称。

string names = "Body";//关节组的名称,这里用Body做示范,即全身关节
List<string> jointnames = motion.getJointNames(names);//获取关节名
foreach (string name in jointnames)
{Console.WriteLine(name);//逐一输出
}

setAngles:通过指定关节名称来控制关节。

string names = "RShoulderRoll";//关节的名称
float angles = -1.3265f;//目标角度(单位:弧度,注意不同关节有不同的角度限制!)
float fractionMaxSpeed = 0.1f;//达到目标角度所需的速度(0~1)
motion.setAngles(names, angles, fractionMaxSpeed);//向关节发送命令

引用:setAngles和changeAngles这两个命令不会阻塞调用线程,因而非常适用于诸如头部跟踪等反应控制回路。您可以经常使用这些命令,动作模块会保证轨迹位置流畅、速度连贯。

angleInterpolation和angleInterpolationWithSpeed:定时插值,在已经确定了关节要运动的轨迹时,可以用来设定插值。

//定时插值:在已经确定了要遵循的轨迹时,可以用来设定插值。
单个关节,单个动作
string names = "HeadYaw";       //关节的名称
float angleLists = 1.0f;        //目标弧度
float times = 1.0f;
bool isAbsolute = true;
motion.angleInterpolation(names, angleLists, times, isAbsolute);
//单个关节,单个动作
string names = "HeadYaw";       //关节的名称
float angleLists = 1.0f;        //目标弧度
float maxspeed = 0.5f;          //最大速度
motion.angleInterpolationWithSpeed(names, angleLists, maxspeed);//多个关节,单个动作
string names = "Head";      //关节的名字('Head'代表了'HeadYaw'和'HeadPitch')
List<float> angleLists = new List<float> { 0, 0 };  //与关节数量相同的目标弧度
float times = 1.0f;
bool isAbsolute = true;
motion.angleInterpolation(names, angleLists, times, isAbsolute);
//多个关节,单个动作
string names = "Head";      //关节的名字('Head'代表了'HeadYaw'和'HeadPitch')
List<float> angleLists = new List<float> { 1, 1 };  //与关节数量相同的目标弧度
float maxspeed = 0.1f;      //最大速度
motion.angleInterpolationWithSpeed(names, angleLists, maxspeed);//单个关节,多个动作
string names = "HeadYaw";   //关节的名字
List<float> angleLists = new List<float> {1.0f, -1.0f, 1.0f, -1.0f, 0.0f};  //目标弧度组
List<float> times = new List<float> {1.0f, 2.0f, 3.0f, 4.0f, 10.0f};        //相对应时间
bool isAbsolute = true;
motion.angleInterpolation(names, angleLists, times, isAbsolute);//多个关节,多个动作
string[] names = { "HeadYaw", "HeadPitch" };    //关节的名字
float[] HeadYaw_angles = {1.0f, -1.0f, 1.0f, -1.0f};
float[] HeadPitch_angles = {-1.0f};
List<float[]> angleLists = new List<float[]> { HeadYaw_angles, HeadPitch_angles };  //目标弧度组
float[] HeadYaw_times = {1.0f, 2.0f, 3.0f, 4.0f};
float[] HeadPitch_times = {5.0f};
List<float[]> times = new List<float[]> { HeadYaw_times, HeadPitch_times };         //相对应时间
bool isAbsolute = true;
motion.angleInterpolation(names, angleLists, times, isAbsolute);

(未完待续……)

NAOqi.Net(C#)MotionProxy类的一些函数用法(一)相关推荐

  1. string类的各种函数用法

    标准c++中string类函数介绍 注意不是CString 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作 ...

  2. CButton类的Create函数用法

    通过查阅MSDN文档可知,Create函数的参数含义如下: virtual BOOL Create(    LPCTSTR lpszCaption,    DWORD dwStyle,    cons ...

  3. C++_static,类模板、函数模板、namespace

    C++_static,类模板.函数模板.namespace 1.static 2.类模板 3.函数模板 4.namespace 5.深入,更多细节 参考:侯捷<C++面向对象高级编程>

  4. 类的成员函数指针和mem_fun适配器的用法

    先来看一个最简单的函数: void foo(int a) {cout << a << endl; } 它的函数指针类型为 void (*)(int); 我们可以这样使用: vo ...

  5. C++对象模型7——类的成员函数、反汇编虚析构函数、RTTI、多态的开销

    一.类成员函数 class test { public:void myfunc(){}virtual void vfunc() {}static void sfunc() {} };void myfu ...

  6. c++学习笔记之基础---类内声明函数后在类外定义的一种方法

    在C++的"类"中经常遇到这样的函数, 返回值类型名 类名::函数成员名(参数表){ 函数体.} 双冒号的作用 ::域名解析符!返回值类型名 类名::函数成员名(参数表) { 函数 ...

  7. php 匿名方法,PHP基于Closure类创建匿名函数的方法详解

    本文实例讲述了PHP基于Closure类创建匿名函数的方法.分享给大家供大家参考,具体如下: Closure 类 用于代表匿名函数的类. 匿名函数(在 PHP 5.3 中被引入)会产生这个类型的对象. ...

  8. java设计一个顺序表类的成员函数_顺序表代码讲解以及实现

    用C语言编写一个有关顺序表的程序代码 创建一个顺序表,其数据元素类型为整型: 在该顺序表中插入数据(#include #include #define MaxSize 50 typedef char ...

  9. python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...

    本文实例分析了Python中的对象,方法,类,实例,函数用法.分享给大家供大家参考.具体分析如下: Python是一个完全面向对象的语言.不仅实例是对象,类,函数,方法也都是对象. class Foo ...

最新文章

  1. 原型开发、模型构建和设计反馈在线工具
  2. java 返回double数组_java-如何使用Collectors.averagingDouble计算双精度数组的均值?
  3. htmlparser设置表单属性值
  4. Artech的MVC4框架学习——第三章controller的激活
  5. Linux的Application 内存模型---
  6. ES6、TYPESCRIPT、ATSCRIPT和BABEL是什么玩意儿
  7. 哪些手机支持双wifi?
  8. mongodb聚合内存不足解决方案
  9. 幻塔html5,《幻塔》捏脸系统怎么玩 捏脸系统玩法分享
  10. c语言连续生成不同随机数_【转】关于C语言生成不重复的随机数
  11. 机器人焊钳选型_点焊机器人焊钳的分类及区别
  12. 从零到一,美芽的技术实战
  13. Jetson nano 使用ROS 实现串口通信,并且解析通信协议(C++)
  14. c盘扩容(亲测有效)+软件已备好
  15. linux 中 lrwxrwxrwx是什么意思?
  16. 并查集是什么?怎么模拟实现?如何应用?
  17. springboot志愿者活动报名服务系统jsp ssm maven
  18. python-opencv创建空白图
  19. 静态路由知识华为eNSP实践
  20. realtek phy 8211fs相关配置(phy芯片更改)

热门文章

  1. 19.React Native动画Animated效果三种动画类型二;
  2. dvdscr是什么意思?什么是dvdscr格式?
  3. usb4java android,桌面java应用程序通过USB复制和传输android数据
  4. 用vivo手机拍照一定要先打开这个设置,不然白浪费这么强大的手机
  5. pdf阅读器,pdf阅读器大全,最好pdf阅读器排行,pdf阅读器下载
  6. hadoop+Spark+hbase集群动态增加节点
  7. 上位机使用C++通过ADS协议与倍福PLC通信例程-布尔变量的读取
  8. ArcGIS计算图斑的四邻坐标(XMin,XMax,YMin,YMax)
  9. Unity 个人玩法Demo合集
  10. nginx反向代理实现指定接口访问指定机器