上帝视角获取机器人位置
from controller import Supervisor
robot=Supervisor()
name = robot.getFromDef("car")
trans = name.getField("translation")
rotation = name.getField("rotation")
#这里就是获取机器人的世界坐标系,SF就是单个field。
#MF就是多个field,Vec3f就是一个三维向量,其他的命名可以以此类推
WorldCoord=trans.getSFVec3f()
supervisor作为一个上帝视角的节点来调用,可以直接获取坐标等实时的数据,而且和传感器的使用不太一样,传感器的使用都是在每一次robot.step(timestep)调用时才会读取一次,而用supervisor去获取时是直接获取,而不需要每次经过step。对于我们在使用优化算法,比如我正在做的强化学习的项目时,非常方便的控制机器人和获取数据,当然为了仿真,大部分的数据都是用传感器获取的,不过在每一个Episode结束以后,重置环境起到了很大的作用。