Skip to content
Snippets Groups Projects
Commit 0065ad8c authored by Stuart Glaser's avatar Stuart Glaser
Browse files

Supports interruting in-progress trajectories

parent 499bbab3
Branches
Tags
No related merge requests found
...@@ -214,9 +214,10 @@ class UR5TrajectoryFollower(object): ...@@ -214,9 +214,10 @@ class UR5TrajectoryFollower(object):
with self.following_lock: with self.following_lock:
if self.goal_handle: if self.goal_handle:
rospy.logerr("Already have a goal in progress! Rejecting. (TODO)") # Cancels the existing goal
goal_handle.set_rejected() self.goal_handle.set_canceled()
return self.first_waypoint_id += len(self.goal_handle.get_goal().trajectory.points)
self.goal_handle = None
self.goal_handle = goal_handle self.goal_handle = goal_handle
self.tracking_i = 0 self.tracking_i = 0
...@@ -251,6 +252,8 @@ class UR5TrajectoryFollower(object): ...@@ -251,6 +252,8 @@ class UR5TrajectoryFollower(object):
log("Waypoint finished: %i" % waypoint_id) log("Waypoint finished: %i" % waypoint_id)
if not self.goal_handle: if not self.goal_handle:
return return
if waypoint_id < self.first_waypoint_id:
return
index = waypoint_id - self.first_waypoint_id index = waypoint_id - self.first_waypoint_id
if index != self.tracking_i: if index != self.tracking_i:
......
#!/usr/bin/env python #!/usr/bin/env python
import time
import roslib; roslib.load_manifest('ur5_driver') import roslib; roslib.load_manifest('ur5_driver')
import rospy import rospy
import actionlib import actionlib
...@@ -67,6 +68,24 @@ def move_repeated(): ...@@ -67,6 +68,24 @@ def move_repeated():
client.cancel_goal() client.cancel_goal()
raise raise
def move_interrupt():
g = FollowJointTrajectoryGoal()
g.trajectory = JointTrajectory()
g.trajectory.joint_names = JOINT_NAMES
g.trajectory.points = [
JointTrajectoryPoint(positions=Q1, velocities=[0]*6, time_from_start=rospy.Duration(2.0)),
JointTrajectoryPoint(positions=Q2, velocities=[0]*6, time_from_start=rospy.Duration(3.0)),
JointTrajectoryPoint(positions=Q3, velocities=[0]*6, time_from_start=rospy.Duration(4.0))]
client.send_goal(g)
time.sleep(2.0)
print "Interrupting"
client.send_goal(g)
try:
client.wait_for_result()
except KeyboardInterrupt:
client.cancel_goal()
raise
def main(): def main():
global client global client
...@@ -76,8 +95,10 @@ def main(): ...@@ -76,8 +95,10 @@ def main():
print "Waiting for server..." print "Waiting for server..."
client.wait_for_server() client.wait_for_server()
print "Connected to server" print "Connected to server"
move_repeated() #move1()
#move_repeated()
#move_disordered() #move_disordered()
move_interrupt()
except KeyboardInterrupt: except KeyboardInterrupt:
rospy.signal_shutdown("KeyboardInterrupt") rospy.signal_shutdown("KeyboardInterrupt")
raise raise
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment