Week 15 - The 'breadcrumb' strategy
The 'breadcrumb' strategy demo:
Imagine a scenario where a swarm of robots is tasked with exploring an unknown environment and returning to a designated base. In this demonstration video, I showcase the mesmerizing pattern of these robots as they navigate through obstacles, communicate with each other, and seamlessly follow a memorized path back to their home base. Let's take a closer look at how this bio-inspired behavior unfolds.
Explanation:
The Follow Memorized Path behavior, also known as the breadcrumb strategy, is a fundamental technique employed by robots to retrace their steps and navigate back to a previously visited location. Here's a breakdown of the process:
Path Memorization:
As the robot traverses its environment, it continuously stores its previous positions along the path it has taken. These positions serve as virtual breadcrumbs, creating a trail that the robot can follow later.
Navigation:
When the robot needs to return to a specific location, it consults its memorized path. By sequentially moving towards each recorded position, the robot retraces its steps back to the target location.
Adaptation:
The Follow Memorized Path behavior is not static; it adapts to changes in the environment and the robot's surroundings. If obstacles obstruct the original path, the robot dynamically adjusts its route, either by circumventing obstacles or finding alternative paths suggested by the Queen of the swarm.
Code:
HTML
def follow_memorized_path(self):
pos, _ = self.getPose()
if operator.lt(self.distance(pos, self.memorized_path[self.memorized_path_index]), 0.05):
if operator.lt(self.memorized_path_index + 1, len(self.memorized_path)):
self.memorized_path_index += 1
else:
self.isTargetReached = False
self.memorized_path_index = 0
if self.victim_found == True:
self.path_library.append([len(self.memorized_path), self.getConsecutivePathDist(self.memorized_path), self.memorized_path, "found", "not_investigated"])
else:
self.path_library.append([len(self.memorized_path), self.getConsecutivePathDist(self.memorized_path), self.memorized_path, "failed", "not_investigated"])
self.victim_found = False
self.memorized_path = []
#self.path_library = []
self.memorized_path.append(BASE)
self.stop()
try:
self.move_to_point(self.memorized_path[self.memorized_path_index], 0.05)
except:
pass
Conclusion of the Blog Post:
In conclusion, the Follow Memorized Path behavior exemplifies the ingenuity and adaptability of swarm robotics systems. By leveraging the breadcrumb strategy, robots can autonomously navigate through dynamic environments, overcome obstacles, and accomplish their objectives with remarkable efficiency. As we continue to explore the realms of robotics, behaviors like these pave the way for innovative applications in fields such as search and rescue.
.png)
Comments
Post a Comment