辣椒上的setStiffnesses移动手臂

时间:2017-10-03 07:40:46

标签: pepper

我想把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
  4. 但是,这并没有将手臂固定在我握住的位置。手臂向下,然后刚度设置为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
    

2 个答案:

答案 0 :(得分:0)

佩珀上有“autonomous abilities”,它会让它呼吸,环顾四周,双臂向下。你想在你的情况下让那些残疾人。

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

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

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

答案 1 :(得分:0)

NAO和Pepper机器人自动调节关节的刚度,以减少过热和能耗。参见this documentation page。 我认为您可以相信它可以为您提供安全的刚度值,以便您移动机器人的关节。

根据我的经验,如果您轻轻地施压Pepper的手臂,刚度会自动降低,直到您可以移动手臂。然后,如果让手臂静止不动并停止用力,刚度将自动恢复。

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

然后别忘了,您对almotion.stiffnessInterpolation("LArm", stiffness, 1.0)的呼叫将花费1.0秒来启用刚度,并且这是足够的时间使手臂跌落。确保打开刚度的触发器发生在用户放下Pepper的手臂之前的一段时间。