Skip to content

Commit 3fbc4f7

Browse files
author
Helena Jäger
committed
changed best-effort strategy
1 parent 26b99cc commit 3fbc4f7

File tree

3 files changed

+16
-14
lines changed

3 files changed

+16
-14
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "bitbots_pathplanning_rust"
3-
version = "0.1.0"
3+
version = "0.1.1"
44
edition = "2021"
55

66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

src/planner.rs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ pub struct PathPlanner {
1818
from: HashMap<usize, usize>,
1919
}
2020

21+
const MULTIPLIER: f64 = 10.0;
22+
23+
2124
impl PathPlanner {
2225
pub fn new(map: &ObstacleMap, start: (f64, f64), goal: (f64, f64)) -> Self {
2326
let mut vertices = map.as_vertices();
@@ -78,11 +81,17 @@ impl PathPlanner {
7881
.unwrap_or(&OrderedFloat(std::f64::INFINITY))
7982
.clone();
8083
for successor in self.successors.iter().cloned() {
81-
if self.obstacle.intersects(&Line::new(self.vertices[vertex], self.vertices[successor])) {
82-
continue;
83-
}
84+
let multiplier = if self.obstacle.intersects(&Line::new(self.vertices[vertex], self.vertices[successor])) {
85+
if self.goal == successor || self.start == vertex {
86+
OrderedFloat(MULTIPLIER)
87+
} else {
88+
continue;
89+
}
90+
} else {
91+
OrderedFloat(1.0)
92+
};
8493
let g_successor = self.g_score.get(&successor).unwrap_or(&OrderedFloat(std::f64::INFINITY)).clone();
85-
let g_tentative = g_vertex + self.distance(vertex, successor);
94+
let g_tentative = g_vertex + multiplier * self.distance(vertex, successor);
8695
if g_tentative < g_successor {
8796
self.from.insert(successor, vertex);
8897
self.g_score.insert(successor, g_tentative);
@@ -100,20 +109,13 @@ impl PathPlanner {
100109
}
101110

102111
pub fn shortest_path(mut self) -> Vec<(f64, f64)> {
103-
let mut closest_vertex = self.start;
104-
let mut closest_distance = OrderedFloat(std::f64::INFINITY);
105112
while let Some((vertex, _)) = self.open.pop() {
106-
if self.heuristic(vertex) < closest_distance - EPSILON {
107-
closest_vertex = vertex;
108-
closest_distance = self.heuristic(vertex);
109-
}
110113
if vertex == self.goal {
111114
return self.reconstruct_path(vertex);
112115
}
113116
self.successors.remove(&vertex);
114117
self.expand_node(vertex);
115118
}
116-
self.from.insert(self.goal, closest_vertex);
117-
self.reconstruct_path(self.goal)
119+
unreachable!()
118120
}
119121
}

0 commit comments

Comments
 (0)