Webots-Supervisor

supervisor是不是一个节点,它是一套函数,适用于supervisor字段设置为TRUE的机器人节点。该supervisor API可用于访问所不具备额外功能的正规机器人。

Supervisor API 函数

作为用于常规机器人控制器,所述wb_robot_initwb_robot_step等等的功能必须在使用Supervisor控制器。

#include <webots/Supervisor.hpp>

namespace webots {
  class Supervisor : public Robot {
    Node *getRoot();
    Node *getSelf();
    Node *getFromDef(const std::string &name);
    Node *getFromId(int id);
    Node *getSelected();
    // ...
  }
}

掌握World上的节点

WbNodeRef node = wb_supervisor_node_get_from_def("ROBOT.JOINT.SOLID");

从它的DEF名称返回到World上某个节点的句柄。该返回值可用于后续对需要WbNodeRef参数的函数的调用。如果请求的节点在当前世界文件中不存在或不是PROTO的内部节点,则该函数返回NULL
可以在DEF参数中使用点( . )作为作用域运算符。在节点层次结构中查找特定的节点路径时,可以使用点。

这意味着我们在名为“ ROINT”的节点内的名为“ JOINT”的节点内搜索名为“ SOLID”的节点。

 #include <webots/Supervisor.hpp>

namespace webots {
  class Supervisor : public Robot {
    Node *getSelf();
    // ...
  }
}

该函数将句柄返回到运行控制器的Robot节点本身。这是一个实用程序功能,它简化了检索基础节点的任务,而不必为其定义DEF名称。

从节点获取字段引用

#include <webots/Node.hpp>

namespace webots {
  class Node {
    Field *getField(const std::string &fieldName) const;
    // ...
  }
}

该wb_supervisor_node_get_field函数检索节点字段的处理程序。该字段由其名称in field_name和node它所属的字段指定。它可以是单个字段(SF)或多个字段(MF)。如果对于指定的节点不存在这样的字段名称,或者该字段是PROTO的内部字段,则返回值为NULL。否则,它将处理程序返回到字段。
注意:wb_supervisor_node_get_field如果与字段名称相对应的字段是隐藏字段,则该函数将返回有效的字段处理程序。

获取字段的值

#include <webots/Field.hpp>

namespace webots {
  class Field {
    const double *getSFVec3f() const;
    // ...
  }
}

这些getSFVec3f()* 函数检索指定单field(SF)的值。字段的类型必须与使用的函数的名称匹配,否则返回值是不确定的(并显示警告消息)。如果field参数为NULL,类型错误或index无效,则返回默认值。对于布尔值,默认值定义为0和,0.0对于整数和双false精度值,对于矢量和指针,默认值为NULL;对于字符串,则为空字符串" "。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kay880

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值