Motor/Sensor 在 Webots 与 Pycharm

Motor/Sensor in Webots vs. Pycharm

当我在 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.

这不是很 "pythonic",但是 Motor.LINEARMotor.ROTATIONAL 常量 来比较 return 值 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 只能看到设备级别(在本例中为电机)。所以不用知道是Hinge2Joint就可以使用了。