Da der Motor während der kontinuierlichen Wiedergabe der Anwendung oder der Erstellung von Animationen während der Entwicklung möglicherweise heiß wird, stoppt die Entwicklung möglicherweise in der Mitte. Daher habe ich eine Box erstellt, die ohne Erlaubnis eine Pause einlegt, bevor sie müde wird. Wenn Sie es in den Init oder Main der App einfügen, wird es nicht in der Mitte angehalten, auch wenn Sie während der Wiedergabe Wärme bekommen. Machen Sie einfach eine Pause und versuchen Sie, das Gefühl zu erzeugen, dass es sich wieder in Bewegung setzt, wenn die Hitze abkühlt.
getIdlePostureEnabled(const std::string& pChainName) setIdlePostureEnabled(const std::string& pChainName, const bool& pEnable)
Wenn Sie diese Funktion beenden möchten, indem Sie sie in das Verwaltungs- / Überwachungsfeld einfügen, lösen Sie ein Ereignis aus, um sie zu stoppen.
Example.py
def onLoad(self):
self.timer = None
self.memory = ALProxy("ALMemory")
self.motion = ALProxy("ALMotion")
self.parts = ["Head", "LArm", "RArm", "Legs"]
def onTimer(self):
partList = []
tempList = []
partCount = { "Head":False, "LArm":False, "RArm":False, "Legs":False }
sNameList = ["HeadPitch", "HeadYaw", "LElbowRoll", "LElbowYaw", "LHand", "LShoulderPitch", "LShoulderRoll", "LWristYaw", "RElbowRoll", "RElbowYaw", "RHand", "RShoulderPitch", "RShoulderRoll", "RWristYaw", "KneePitch", "HipRoll", "HipPitch"]
for sName in sNameList:
sKeyName = "Device/SubDeviceList/%s/Temperature/Sensor/Value" % sName
try:
partList.append(sName)
tempList.append(int( self.memory.getData(sKeyName) ))
except:
self.logger.error("No temperature found for this hardware: " + str(sName))
for pName in partList:
if ( "Head" in pName ):
act = "Head"
elif ( "LElbow" in pName or "LHand" in pName or "LShoulder" in pName or "LWrist" in pName ):
act = "LArm"
elif ( "RElbow" in pName or "RHand" in pName or "RShoulder" in pName or "RWrist" in pName ):
act = "RArm"
elif ( "Ankle" in pName or "Hip" in pName or "Knee"):
act = "Legs"
i = tempList[partList.index(pName)]
if i >= int(self.getParameter("Motion stop temperature(or more)")):
if partCount[act] == False:
partCount[act] = True
for part in self.parts:
if partCount[part] and self.motion.getIdlePostureEnabled(part) == False:
self.logger.warn("%s Motion Stopped" % part)
self.motion.setIdlePostureEnabled(part, True)
elif partCount[part] == False and self.motion.getIdlePostureEnabled(part):
self.logger.info("%s Motion Start" % part)
self.motion.setIdlePostureEnabled(part, False)
Die Quelle ist schmutzig, aber bitte vergib mir.
[Robot Library] von Robot Start (https://robo-lib.com/repositories/summary/49) https://robo-lib.com/repositories/summary/49
Recommended Posts