Webots与Pycharm中的马达/传感器

时间:2019-12-02 20:21:56

标签: webots

当我在Pycharm中调试我的Webots控制器时,我注意到电机将具有两个常数:LINEAR和ROTATIONAL。

NAO的原型将“ RShoulderPitch”列为旋转电动机(对于Hinge2Joint),但是在PyCharm中,电动机由以下代码返回

  

r_shoulder_pitch = getMotor(“ RShoulderPitch”)

具有以下常量:LINEAR = 1和ROTATIONAL = 0。

也许我误解了这些常量,但不是应该反过来(即ROTATIONAL = 1和LINEAR = 0)吗?

注意:

返回的位置传感器
  

r_shoulder_pitch.getPositionSensor()

在PyCharm中也具有以下常量:ANGULAR = 0,LINEAR = 1,ROTATIONAL = 0。

1 个答案:

答案 0 :(得分:1)

这不是很“ pythonic”,但是Motor.LINEARMotor.ROTATIONAL常量,用于比较the Motor.getType() function的返回值。 这些常数不包含当前电动机的类型。

典型用法是:

my_motor = my_robot.getMotor('RShoulderPitch')
if my_motor.getType() == Motor.ROTATIONAL:
    print('my motor is rotational')
else:
    print('my motor is linear')

我还有2条建议:

  • 我建议您使用Webots reference manual而不是深入研究Python对象状态。实际上,Python库是使用SWIG自动创建的,因此生成的对象非常复杂。
  • Nao的肩膀确实使用Hinge2Joint进行了建模。这样一来就可以处理2个关节。但这是一种优化。 API仅查看设备级别(在这种情况下为Motors)。因此,无需知道它就是使用Hinge2Joint。