0

我想把 Pepper 放在一个特定的位置(有点像使用罢工姿势应用程序时。我使用这个最小的代码:

import qi

session = qi.Session()
session.connect("tcp://YOUR_IP:9559")
almotion = session.service("ALMotion")
almotion.setStiffnesses("RArm", 0.0)
  1. 我运行上面的代码(现在移动右臂)
  2. 我将右臂保持在我想要的位置
  3. 我运行上面相同的代码,刚度为 1.0

但是,这并不能将手臂固定在我所握的位置。手臂下降,然后将刚度设置为 1.0。

当我用“Head”而不是“RArm”做同样的事情时,效果很好,就好像当我们握住它们时电机无法修复一样。我应该怎么做?

编辑 1:禁用自主能力后,我仍然遇到手臂没有挡住我所持有的位置的问题。我的代码目前是:

import sys
import qi

stiffness = 1.0
if len(sys.argv) > 1: stiffness = float(sys.argv[1])

session = qi.Session()
session.connect("tcp://YOUR_IP:9559")

almotion = session.service("ALMotion")
almotion.setBreathEnabled("Body", False) # Also tried True
almotion.setIdlePostureEnabled("Body", False) # Also tried True

allife = session.service("ALAutonomousLife")
allife.setAutonomousAbilityEnabled("BackgroundMovement", False)
allife.setAutonomousAbilityEnabled("BasicAwareness", False)
allife.setAutonomousAbilityEnabled("ListeningMovement", False)
allife.setAutonomousAbilityEnabled("SpeakingMovement", False)

almotion.stiffnessInterpolation("LArm", stiffness, 1.0)

测试它

python code.py 0.0 # To free the left arm
# Move the left arm how you wish
python code.py 1.0 # To fix the arm
4

2 回答 2

0

Pepper 身上有“自主能力”,可以让它呼吸、环顾四周并放下手臂。你想让那些在你的情况下被禁用。

为此,请添加到您的代码中:

alife = session.service("ALAutonomousLife")
alife.setAutonomousAbilityEnabled("BackgroundMovement", False)
alife.setAutonomousAbilityEnabled("BasicAwareness", False)
alife.setAutonomousAbilityEnabled("ListeningMovement", False)
alife.setAutonomousAbilityEnabled("SpeakingMovement", False)

您也可以使用ALMotion.setIdlePostureEnabled&ALMotion.setBreathEnabled

于 2017-10-04T00:34:52.260 回答
0

NAO 和 Pepper 机器人会自动调节关节的刚度,以减少过热和能耗。请参阅此文档页面。我认为您可以相信它可以为您提供安全的刚度值,以便您移动机器人的关节。

根据我的经验,如果你轻轻地用力佩珀的手臂,刚度会自动降低,直到你可以移动手臂。然后,如果你让手臂静止并停止用力,僵硬会自动恢复。

但是,如果这不令人满意并且想要控制刚度,您可以使用 禁用智能刚度almotion.setSmartStiffnessEnabled(False)

然后不要忘记您的调用almotion.stiffnessInterpolation("LArm", stiffness, 1.0)将需要 1.0 秒来打开僵硬,并且这是足够的时间让手臂下落。确保在用户放下 Pepper 的手臂之前的某个时间,触发开启刚度。

于 2019-11-21T16:23:21.177 回答