Skip to content

Commit a1a229f

Browse files
committed
use enemy pos to now where to go
1 parent 272294b commit a1a229f

2 files changed

Lines changed: 11 additions & 0 deletions

File tree

src/modelec_strat/include/modelec_strat/navigation_helper.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ namespace Modelec
166166
rclcpp::Publisher<std_msgs::msg::Bool>::SharedPtr start_odo_pub_;
167167

168168
modelec_interfaces::msg::OdometryPos last_enemy_pos_;
169+
bool has_enemy_ = false;
169170

170171
bool await_rotate_ = false;
171172
std::vector<Waypoint> send_back_waypoints_;
@@ -182,6 +183,7 @@ namespace Modelec
182183
{
183184
std::shared_ptr<T> closest_obstacle = nullptr;
184185
auto robotPos = Point(pos->x, pos->y, pos->theta);
186+
auto enemyPos = Point(last_enemy_pos_.x, last_enemy_pos_.y, last_enemy_pos_.theta);
185187
float distance = std::numeric_limits<float>::max();
186188

187189
for (const auto& obstacle : GetPathfinding()->GetObstacles())
@@ -191,6 +193,13 @@ namespace Modelec
191193
if (!obs->IsAtObjective())
192194
{
193195
auto dist = Point::distance(robotPos, obs->GetPosition());
196+
197+
if (has_enemy_)
198+
{
199+
auto enemyDist = Point::distance(enemyPos, obs->GetPosition());
200+
dist *= (1.0f + factor_close_enemy_ * std::exp(-enemyDist / enemy_emergency_distance_));
201+
}
202+
194203
if (dist < distance)
195204
{
196205
distance = dist;

src/modelec_strat/src/navigation_helper.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,8 @@ namespace Modelec
552552

553553
void NavigationHelper::OnEnemyPosition(const modelec_interfaces::msg::OdometryPos::SharedPtr msg)
554554
{
555+
if (!has_enemy_) has_enemy_ = true;
556+
555557
pathfinding_->OnEnemyPosition(msg);
556558
last_enemy_pos_ = *msg;
557559

0 commit comments

Comments
 (0)