我想把Pepper放在一个特定的位置(有点像使用敲击姿势应用程序。我使用这个最小的代码:
import qi
session = qi.Session()
session.connect("tcp://YOUR_IP:9559")
almotion = session.service("ALMotion")
almotion.setStiffnesses("RArm", 0.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
答案 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的手臂之前的一段时间。