首页 > 解决方案 > Webots 与 Pycharm 中的电机/传感器

问题描述

当我在 Pycharm 中调试我的 webbots 控制器时,我注意到电机将有两个常量: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。

标签: webots

解决方案


这不是很“pythonic”,而是比较函数返回Motor.LINEAR常量。这些常数不包含当前电机的类型。Motor.ROTATIONALMotor.getType()

一个典型的用法是:

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

我也有 2 条建议:

  • 我建议您使用Webbots 参考手册,而不是深入研究 Python 对象状态。实际上,Python 库是使用 SWIG 自动创建的,因此生成的对象非常复杂。
  • Nao 的肩膀确实是使用Hinge2Joint. 这允许以一个的性能处理 2 个关节。但这是一种优化。API 仅查看设备级别(在本例中为电机)。所以没有必要知道它是一个 Hinge2Joint 来使用它。

推荐阅读