40 from std_msgs.msg 
import String
    41 from geometry_msgs.msg 
import Twist
    42 from geometry_msgs.msg 
import Pose2D
    44 from std_srvs.srv 
import Empty, EmptyResponse
    45 from naoqi_bridge_msgs.srv 
import CmdPoseService, CmdVelService, CmdPoseServiceResponse, CmdVelServiceResponse, SetArmsEnabled, SetArmsEnabledResponse
    47 from humanoid_nav_msgs.srv 
import StepTargetService, StepTargetServiceResponse
    49 from nao_apps 
import startWalkPose
    53         NaoqiNode.__init__(self, 
'nao_walker')
    67         initStiffness = rospy.get_param(
'~init_stiffness', 0.0)
    72             self.
footGaitConfig = rospy.get_param(
'~foot_gait_config', self.motionProxy.getFootGaitConfig(
"Default"))
    74             self.
footGaitConfig = self.motionProxy.getFootGaitConfig(
"Default")
    77         if initStiffness > 0.0 
and initStiffness <= 1.0:
    78             self.motionProxy.stiffnessInterpolation(
'Body', initStiffness, 0.5)
    81             enableFootContactProtection = rospy.get_param(
'~enable_foot_contact_protection')
    82             self.motionProxy.setMotionConfig([[
"ENABLE_FOOT_CONTACT_PROTECTION", enableFootContactProtection]])
    83             if enableFootContactProtection:
    84                 rospy.loginfo(
"Enabled foot contact protection")
    86                 rospy.loginfo(
"Disabled foot contact protection")
    92         rospy.Subscriber(
"cmd_vel", Twist, self.
handleCmdVel, queue_size=1)
    94         rospy.Subscriber(
"cmd_step", StepTarget, self.
handleStep, queue_size=50)
    97         self.
pub = rospy.Publisher(
"speech", String, latch = 
True)
   108         self.
say(
"Walker online")
   110         rospy.loginfo(
"nao_walker initialized")
   113         '''(re-) connect to NaoQI'''   114         rospy.loginfo(
"Connecting to NaoQi at %s:%d", self.
pip, self.
pport)
   121         """ Stops the current walking bahavior and blocks until the clearing is complete. """   123             self.motionProxy.setWalkTargetVelocity(0.0, 0.0, 0.0, self.
stepFrequency)
   124             self.motionProxy.waitUntilWalkIsFinished()
   127         except RuntimeError,e:
   128             print "An error has been caught"   136         self.pub.publish(text)
   139         rospy.logdebug(
"Walk cmd_vel: %f %f %f, frequency %f", data.linear.x, data.linear.y, data.angular.z, self.
stepFrequency)
   140         if data.linear.x != 0 
or data.linear.y != 0 
or data.angular.z != 0:
   144             if abs(data.linear.x)<eps 
and abs(data.linear.y)<eps 
and abs(data.angular.z)<eps:
   145                 self.motionProxy.setWalkTargetVelocity(0,0,0,0.5)
   148         except RuntimeError,e:
   150             rospy.logerr(
"Exception caught in handleCmdVel:\n%s", e)
   151             rospy.signal_shutdown(
"No NaoQI available anymore")
   157         return CmdVelServiceResponse()
   160         """handles cmd_pose requests, walks to (x,y,theta) in robot coordinate system"""   162         rospy.logdebug(
"Walk target_pose: %f %f %f", data.x,
   169                 self.motionProxy.post.walkTo(data.x, data.y, data.theta, self.
footGaitConfig)
   171                 self.motionProxy.walkTo(data.x, data.y, data.theta, self.
footGaitConfig)
   173         except RuntimeError,e:
   174             rospy.logerr(
"Exception caught in handleTargetPose:\n%s", e)
   179         rospy.logdebug(
"Step leg: %d; target: %f %f %f", data.leg, data.pose.x,
   180                 data.pose.y, data.pose.theta)
   182             if data.leg == StepTarget.right:
   184             elif data.leg == StepTarget.left:
   187                 rospy.logerr(
"Received a wrong leg constant: %d, ignoring step command", data.leg)
   189             self.motionProxy.stepTo(leg, data.pose.x, data.pose.y, data.pose.theta)
   191         except RuntimeError, e:
   192             rospy.logerr(
"Exception caught in handleStep:\n%s", e)
   197             return StepTargetServiceResponse()
   202         """ do NOT use post"""   204             return CmdPoseServiceResponse()
   210             return EmptyResponse()
   221         return EmptyResponse()
   227             self.
footGaitConfig = rospy.get_param(
'~foot_gait_config', self.motionProxy.getFootGaitConfig(
"Default"))
   229             self.
footGaitConfig = self.motionProxy.getFootGaitConfig(
"Default")
   230         return EmptyResponse()
   233         self.motionProxy.setWalkArmsEnable(req.left_arm, req.right_arm)
   234         rospy.loginfo(
"Arms enabled during walk: left(%s) right(%s)" % (req.left_arm, req.right_arm))
   235         return SetArmsEnabledResponse()
   238 if __name__ == 
'__main__':
   240     rospy.loginfo(
"nao_walker running...")
   242     rospy.loginfo(
"nao_walker stopping...")
   245     rospy.loginfo(
"nao_walker stopped.")
 def handleSetArmsEnabledSrv(self, req)
def startWalkPose(motionProxy)
def handleTargetPoseService(self, req)
def handleStopWalkSrv(self, req)
def handleCmdVel(self, data)
def gotoStartWalkPose(self)
def handleNeedsStartWalkPoseSrv(self, data)
def handleStepSrv(self, req)
def handleTargetPose(self, data, post=True)
def handleCmdVelService(self, req)
def handleStep(self, data)
def get_proxy(self, name, warn=True)
def handleReadFootGaitConfigSrv(self, data)