webots - 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。
解决方案
这不是很“pythonic”,而是比较函数返回值Motor.LINEAR
的常量。这些常数不包含当前电机的类型。Motor.ROTATIONAL
Motor.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 来使用它。
推荐阅读
- ssas - SSAS 表格模型。SSAS 服务重新启动后列消失
- c# - 如何从 Azure Blob 存储中的文件夹下载文件?
- c# - .NET Core API -> 更新对象也会更新以前加载的对象
- flutter - 我怎样才能将扁平按钮大小设置为儿童大小
- c# - Encoding.GetEncoding ucs 2 little endian
- c# - 使用 c# 将秒表注入使用 Mono.Cecil 的所有 dll 方法,包括具有多个 Return 语句的方法
- python - 将项目配置存储在环境变量中是一种不好的做法吗?
- javascript - 如何在“dompurify”中允许一个 iframe 标签,包括它的所有属性
- php - 在模式中使用 CodeIgniter is_unique 表单验证和 Postgres 表
- asp.net - 如何最好地保护 SQL Always Encrypted 的加密密钥