Étant donné que le moteur peut chauffer pendant la lecture continue de l'application ou lors de la création d'animation pendant le développement, le développement peut s'arrêter au milieu, j'ai donc créé une boîte qui fera une pause sans autorisation avant de me fatiguer. Si vous le mettez dans Init ou Main de l'application, même si vous obtenez de la chaleur pendant la lecture, il ne s'arrêtera pas au milieu, faites simplement une pause et essayez de donner l'impression qu'il recommencera à bouger lorsque la chaleur se refroidira.
getIdlePostureEnabled(const std::string& pChainName) setIdlePostureEnabled(const std::string& pChainName, const bool& pEnable)
Si vous souhaitez arrêter cette fonction en la plaçant dans le boîtier de gestion / surveillance, déclenchez un événement pour l'arrêter.
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)
La source est sale, mais pardonnez-moi s'il vous plaît.
[Bibliothèque de robots] de Robot Start (https://robo-lib.com/repositories/summary/49) https://robo-lib.com/repositories/summary/49
Recommended Posts