def __init__(self, dontInclude=[], wait_services=True): self.tf_listener = tf_server.TFClient() if 'head' not in dontInclude: self.head = head.Head() if 'base' not in dontInclude: self.base = ros_navstack_base.Base(self.tf_listener, wait_service=wait_services) if 'spindle' not in dontInclude: self.spindle = spindle.Spindle(wait_service=wait_services) if 'arms' not in dontInclude: self.arms = arms.Arms( self.tf_listener) #TODO: use self.tf_listener here if 'leftArm' not in dontInclude: self.leftArm = arms.Arm(arms.Side.LEFT, self.tf_listener) if 'rightArm' not in dontInclude: self.rightArm = arms.Arm(arms.Side.RIGHT, self.tf_listener) if 'ebutton' not in dontInclude: self.ebutton = ebutton.EButton() self.leftSide = arms.Side.LEFT self.rightSide = arms.Side.RIGHT self.pub_target = rospy.Publisher("/target_location", geometry_msgs.msg.Pose2D, queue_size=10)
def __init__(self, robot_name="", wait_services=False): self.robot_name = robot_name self.tf_listener = tf_server.TFClient() # Body parts self.base = base.Base(self.robot_name, self.tf_listener, wait_service=wait_services) self.torso = torso.Torso(self.robot_name, wait_service=wait_services) self.spindle = self.torso self.leftArm = arms.Arm(self.robot_name, "left", self.tf_listener) self.rightArm = arms.Arm(self.robot_name, "right", self.tf_listener) self.arms = OrderedDict(left=self.leftArm, right=self.rightArm) self.head = head.Head(self.robot_name) # Human Robot Interaction self.speech = speech.Speech(self.robot_name, wait_service=wait_services) self.ears = ears.Ears(self.robot_name) self.ebutton = ebutton.EButton() self.lights = lights.Lights() # Perception: can we get rid of this??? self.perception = perception_ed.PerceptionED( wait_service=wait_services) # Reasoning/world modeling self.ed = world_model_ed.ED(wait_service=wait_services) self.reasoner = reasoner.Reasoner() # Miscellaneous self.pub_target = rospy.Publisher("/target_location", geometry_msgs.msg.Pose2D, queue_size=10) self.base_link_frame = "/" + self.robot_name + "/base_link" #Grasp offsets #TODO: Don't hardcode, load from parameter server to make robot independent. self.grasp_offset = geometry_msgs.msg.Point(0.5, 0.2, 0.0)