diff --git a/stretch_demos/launch/hello_world.launch b/stretch_demos/launch/hello_world.launch
index 64d6dd6..b2e8e9f 100644
--- a/stretch_demos/launch/hello_world.launch
+++ b/stretch_demos/launch/hello_world.launch
@@ -47,7 +47,7 @@
-
+
diff --git a/stretch_demos/nodes/hello_world b/stretch_demos/nodes/hello_world
index 6a68f7f..7b6ee9f 100755
--- a/stretch_demos/nodes/hello_world
+++ b/stretch_demos/nodes/hello_world
@@ -37,7 +37,7 @@ class HelloWorldNode(hm.HelloNode):
self.joint_states_lock = threading.Lock()
self.move_base = nv.MoveBase(self)
self.letter_height_m = 0.2
- self.letter_top_lift_m = 1.05
+ self.letter_top_lift_m = 1.08 #1.05
def joint_states_callback(self, joint_states):
with self.joint_states_lock:
@@ -48,29 +48,48 @@ class HelloWorldNode(hm.HelloNode):
trigger_request = TriggerRequest()
trigger_result = self.trigger_align_with_nearest_cliff_service(trigger_request)
rospy.loginfo('trigger_result = {0}'.format(trigger_result))
+
+
+ def backoff_after_contact(self):
+ rospy.loginfo('backoff after contact')
+ with self.joint_states_lock:
+ wrist_position, wrist_velocity, wrist_effort = hm.get_wrist_state(self.joint_states)
+ if wrist_position is not None:
+ wrist_target_m = wrist_position - 0.005
+ pose = {'wrist_extension': wrist_target_m}
+ self.move_to_pose(pose)
+ return True
+ else:
+ rospy.logerr('backoff_from_surface: self.wrist_position is None!')
+ return False
def pen_down(self):
rospy.loginfo('pen_down')
- trigger_request = TriggerRequest()
- trigger_result = self.trigger_reach_until_contact_service(trigger_request)
- rospy.loginfo('trigger_result = {0}'.format(trigger_result))
-
- # def turn_off_contact_regulation(self):
- # rospy.loginfo('turn_off_contact_regulation')
- # trigger_request = TriggerRequest()
- # trigger_result = self.trigger_turn_off_contact_regulation_service(trigger_request)
- # rospy.loginfo('trigger_result = {0}'.format(trigger_result))
+ max_extension_m = 0.5
+ max_reach_m = 0.4
+ with self.joint_states_lock:
+ wrist_position, wrist_velocity, wrist_effort = hm.get_wrist_state(self.joint_states)
+ extension_m = wrist_position + max_reach_m
+ extension_m = min(extension_m, max_extension_m)
+ extension_contact_effort = 42.0 #42.0 #40.0 from funmap
+ pose = {'wrist_extension': (extension_m, extension_contact_effort)}
+ self.move_to_pose(pose, custom_contact_thresholds=True)
def pen_up(self):
rospy.loginfo('pen_up')
- #self.turn_off_contact_regulation()
with self.joint_states_lock:
wrist_position, wrist_velocity, wrist_effort = hm.get_wrist_state(self.joint_states)
- #backoff_m = 0.03 # back away 3cm from the surface
- backoff_m = 0.1 # back away 10cm from the surface
- new_wrist_position = wrist_position - backoff_m
- pose = {'wrist_extension': new_wrist_position}
- self.move_to_pose(pose)
+ max_extension_m = 0.5
+ min_extension_m = 0.01
+ backoff_m = 0.1 #0.07 # back away 7cm from the surface
+ extension_m = wrist_position - backoff_m
+ extension_m = min(extension_m, max_extension_m)
+ extension_m = max(min_extension_m, extension_m)
+ extension_contact_effort = 80.0 #40.0 from funmap # to avoid stopping due to contact
+ pose = {'wrist_extension': (extension_m, extension_contact_effort)}
+ self.move_to_pose(pose, custom_contact_thresholds=True)
+ rospy.sleep(1.0) # Give it time to backoff before the next move. Otherwise it may not backoff.
+
def vertical_line(self, move_down, half=False):
if move_down:
@@ -111,6 +130,7 @@ class HelloWorldNode(hm.HelloNode):
at_goal = self.move_base.forward(length_m, detect_obstacles=False)
else:
at_goal = self.move_base.backward(length_m, detect_obstacles=False)
+ rospy.sleep(1.0) # Give it time to finish the base move before the next move.
def space(self):
rospy.loginfo('space')
@@ -137,7 +157,7 @@ class HelloWorldNode(hm.HelloNode):
def letter_h(self):
rospy.loginfo('Letter H')
- #write an letter "H" down and to the right
+ #write a letter "H" down and to the right
self.align_to_surface()
self.pen_down()
self.vertical_line(move_down=True)
@@ -154,10 +174,11 @@ class HelloWorldNode(hm.HelloNode):
def letter_e(self):
rospy.loginfo('Letter E')
- # write an letter "E" down and to the right
+ # write a letter "E" down and to the right
self.align_to_surface()
self.pen_down()
self.vertical_line(move_down=True)
+ self.pen_up()
self.pen_down()
self.horizontal_line(move_right=True)
self.pen_up()
@@ -173,10 +194,11 @@ class HelloWorldNode(hm.HelloNode):
def letter_l(self):
rospy.loginfo('Letter L')
- # write an letter "L" down and to the right
+ # write a letter "L" down and to the right
self.align_to_surface()
self.pen_down()
self.vertical_line(move_down=True)
+ self.pen_up()
self.pen_down()
self.horizontal_line(move_right=True)
self.pen_up()
@@ -184,14 +206,17 @@ class HelloWorldNode(hm.HelloNode):
def letter_o(self):
rospy.loginfo('Letter O')
- # write an letter "O" down and to the right
+ # write a letter "O" down and to the right
self.align_to_surface()
self.pen_down()
self.vertical_line(move_down=True)
+ self.pen_up()
self.pen_down()
self.horizontal_line(move_right=True)
+ self.pen_up()
self.pen_down()
self.vertical_line(move_down=False)
+ self.pen_up()
self.pen_down()
self.horizontal_line(move_right=False)
self.pen_up()