【问题标题】:Reset Webots Position Sensor重置 Webots 位置传感器
【发布时间】:2020-04-14 14:35:52
【问题描述】:

我希望一个 webbots 机器人向前移动,然后以完全相同的方式顺时针旋转 90 度 4 次以绕一个正方形。机器人将完美地完成第一条腿,但我不知道如何在循环结束时将位置传感器重置为 0。有任何想法吗?

for i in range (0, 4):
    leftWheelSensor.getValue()
    rightWheelSensor.getValue()
    robot.step(800)
    leftWheel.setPosition(21.4)
    rightWheel.setPosition(21.4)
    leftWheel.setPosition(21.4 + 2.6)
    rightWheel.setPosition(21.4 - 2.6)

就在这里,我应该能够将左右轮传感器设置回零,但似乎没有办法做到这一点。我试图禁用并重新启用传感器,但没有奏效。这是关于该课程的 webbots 信息...

类位置传感器(设备): 旋转,线性

def enable(self, samplingPeriod):
def disable(self):
def getSamplingPeriod(self):
def getValue(self):
def getType(self):
# ...

【问题讨论】:

  • 您的程序看起来很奇怪,因为我希望您实际上使用例如left_position = leftWheelSensor.getValue() 检索位置传感器的值,然后使用此信息来计算电机的新目标位置。此外,多次设置车轮位置而不在其间调用robot.step 是没有用的。您可能应该遵循 Webots 教程以更好地了解控制器的工作原理。
  • 非常感谢 - 是的,我现在正在做这些

标签: webots


【解决方案1】:

很遗憾,无法通过 Webots API 重置位置传感器值。

但是,您可以轻松计算控制器中的偏移量,例如:

for i in range (0, 4):
    leftWheel.setPosition(21.4)
    rightWheel.setPosition(21.4)
    robot.step(800)
    leftOffset = leftWheelSensor.getValue()
    rightOffset = rightWheelSensor.getValue()
    leftWheel.setPosition(leftOffset + 2.6)
    rightWheel.setPosition(rightOffset - 2.6)
    robot.step(800)

【讨论】:

  • 感谢您提供的信息!
猜你喜欢
  • 2021-09-23
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多