def __init__(self, filename='human_rig', name=None): """ :param filename: the human model. Default: 'human_rig' """ GroundRobot.__init__(self, filename, name) self.properties(classpath="morse.robots.human.Human") self.skeleton = None try: self.skeleton = Armature( armature_name=self.get_child("HumanSkeleton").name) self.append(self.skeleton) except KeyError: logger.error("Could not find the human armature! (I was looking " +\ "for an object called 'HumanSkeleton' in the children " + \ "objects of the human). I won't be able to export the " + \ "human pose to any middleware.") if self.skeleton: self.skeleton.create_ik_targets(self.IK_TARGETS) for t, name in self.skeleton.ik_targets: t.parent = self._bpy_object # Add an armature sensor. "joint_stateS" to match standard ROS spelling. self.joint_states = ArmaturePose("joint_states") self.skeleton.append(self.joint_states)
def __init__(self, name = None, debug = True): # theman.blend is located in the data/robots directory Robot.__init__(self, 'test_1/robots/theman.blend', name) self.properties(classpath = "test_1.robots.theman.Theman") self.suffix = self.name[-4:] if self.name[-4] == "." else "" try: self.armature = Armature("Armature" + self.suffix, "human_posture") # self.armature = Armature("Armature") self.append(self.armature) self.armature_pose = ArmaturePose() # armature_pose = joint states self.armature_pose.name="pose" self.armature.append(self.armature_pose) self.joint_state = CompoundSensor([self.armature_pose]) self.append(self.joint_state) except KeyError: logger.error("Could not find the human armature! (I was looking " +\ "for an object called 'Armature' in the human" +\ " children). I won't be able to export the human pose" +\ " to any middleware.") ################################### # Actuators ################################### # (v,w) motion controller # Check here the other available actuators: # http://www.openrobots.org/morse/doc/stable/components_library.html#actuators # self.motion = MotionVW() # self.append(self.motion) # Optionally allow to move the robot with the keyboard if debug: keyboard = Keyboard() self.append(keyboard) ################################### # Sensors ################################### self.pose = Pose() self.append(self.pose)
def __init__(self, filename='human', name = None): """ The 'style' parameter is only to switch to the mocap_human file. :param filename: 'human' (default) or 'mocap_human' """ GroundRobot.__init__(self, filename, name) self.suffix = self.name[-4:] if self.name[-4] == "." else "" self.armature = None if filename == 'mocap_human': self.properties(classpath="morse.robots.mocap_human.MocapHuman") else: self.properties(classpath="morse.robots.human.Human") try: self.armature = Armature(armature_name = "HumanArmature" + self.suffix) self.append(self.armature) except KeyError: logger.error("Could not find the human armature! (I was looking " +\ "for an object called 'HumanArmature' in the human" +\ " children). I won't be able to export the human pose" +\ " to any middleware.") # Add an armature sensor. "joint_stateS" to match standard ROS spelling. self.joint_states = ArmaturePose() self.armature.append(self.joint_states) # fix for Blender 2.6 Animations armature_object = self.get_child(self.armature.name) if armature_object: hips = self.get_child("Hips_Empty") # IK human has no object called Hips_Empty, so avoid this step if hips: for i, actuator in enumerate(hips.game.actuators): actuator.layer = i for i, actuator in enumerate(armature_object.game.actuators): actuator.layer = i self.make_grasper('Hand_Grab.R')