traj_playback_backend.py
Go to the documentation of this file.
00001 #! /usr/bin/python
00002 
00003 import numpy as np
00004 
00005 import roslib
00006 roslib.load_manifest("hrl_pr2_traj_playback")
00007 import rospy
00008 import rosparam
00009 from std_msgs.msg import Bool
00010 
00011 from traj_playback import TrajPlayback
00012 from traj_playback import CTRL_NAME_LOW, CTRL_NAME_NONE, PARAMS_FILE_LOW, PARAMS_FILE_NONE
00013 from msg import TrajPlaybackCmd
00014 
00015 HEARTBEAT_TOPIC = '/arm_pose_move_gui/heartbeat'
00016 COMMAND_TOPIC = '/arm_pose_move_gui/command'
00017 MONITOR_RATE = 20
00018 POSE_TRAJ_PARAM_FILE = 'pose_traj_dir.yaml'
00019 POSE_TRAJ_PARAM_PREFIX = '$(find kelsey_sandbox)/params/'
00020 
00021 class ArmPoseMoveGuiBackend(object):
00022     def __init__(self):
00023         params = rosparam.get_param("/arm_pose_move")
00024         self.pose_dict = params['poses']
00025         self.traj_dict = params['trajectories']
00026         self.apm_ctrl = TrajPlayback(CTRL_NAME_LOW, PARAMS_FILE_LOW)
00027         rospy.Subscriber(HEARTBEAT_TOPIC, Bool, self.heartbeat_cb)
00028         rospy.Subscriber(COMMAND_TOPIC, ArmPoseMoveCmd, self.cmd_cb)
00029 
00030     def heartbeat_cb(self, msg):
00031         pass
00032 
00033     def cmd_cb(self, msg):
00034         if msg.type == msg.START:
00035             if not self.apm_ctrl.is_moving():
00036                 if msg.is_trajectory:
00037                     filename = self.traj_dict[msg.traj_name]['file']
00038                     filepath = roslaunch.substitution_args.resolve_args(POSE_TRAJ_PARAM_PREFIX + filename)
00039                     if msg.is_setup:
00040                         result = self.apm_ctrl.move_to_setup_from_file(filepath, 
00041                                                      reverse=not msg.is_forward, blocking=False)
00042                     else:
00043                         result = self.apm_ctrl.exec_traj_from_file(filepath, 
00044                                                      reverse=not msg.is_forward, blocking=False)
00045                 else:
00046                     filename = self.pose_dict[msg.traj_name]['file']
00047                     filepath = roslaunch.substitution_args.resolve_args(POSE_TRAJ_PARAM_PREFIX + filename)
00048         elif msg.type == msg.STOP:
00049             self.apm_ctrl.pause_moving()
00050         elif msg.type == msg.RESET:
00051             self.apm_ctrl.stop_moving()
00052         else:
00053             rospy.logerror("[arm_pose_move_backend] Bad command.")
00054 
00055 def main():
00056     rospy.init_node("arm_pose_move_backend")
00057     apm_backend = ArmPoseMoveGuiBackend()
00058     rospy.spin()
00059     
00060 
00061 if __name__ == "__main__":
00062     main()


hrl_pr2_traj_playback
Author(s): Kelsey Hawkins
autogenerated on Wed Nov 27 2013 11:43:06