update
1 parent 84068e7 commit fde79beaa6c4d44b99040fa47479ef1c3604ca77
@koki koki authored on 10 Nov 2022
Showing 1 changed file
View
10
waypoint_nav/scripts/tandem_run_manager.py
## Dynamic reconfigure clients
self.costmap_client1 = dynamic_reconfigure.client.Client("/move_base/global_costmap/obstacle_layer1")
self.costmap_client2 = dynamic_reconfigure.client.Client("/move_base/global_costmap/obstacle_layer2")
## Variable
self.front_angle = 40 # degree
self.danger_dist = 1.0 # meter
self.waypoint_num = 0
self.front_range = None
self.danger_dist = 1.0
self.in_tandem_area = False
self.stop = False
return
 
def laserscan_callback(self, msg):
try:
if self.front_range is None:
front = round(-msg.angle_min / msg.angle_increment)
ran = int(round(np.deg2rad(20) / msg.angle_increment))
ran = int(round(np.deg2rad(self.front_angle/2) / msg.angle_increment))
self.front_range = [front-ran, front+ran]
return
if not self.in_tandem_area: return
ranges = np.array(msg.ranges[self.front_range[0]:self.front_range[1]])
## Use simply minimum
ranges[ranges <= msg.range_min] = msg.range_max
min_range = min(ranges)
#sort_ranges = np.sort(msg.ranges[self.front_range[0]:self.front_range[1]])
## or use sort
#sort_ranges = np.sort(ranges)
#min_range = np.mean(sort_ranges[:5])
if (not self.stop) and (min_range < self.danger_dist):
self.stop_nav()
self.stop = True