Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[lane_planner]traffic_waypoint_arrayトピックの重複解消 #12

Closed
nyxrobotics opened this issue Mar 20, 2023 · 4 comments · Fixed by #14 or #20
Closed

[lane_planner]traffic_waypoint_arrayトピックの重複解消 #12

nyxrobotics opened this issue Mar 20, 2023 · 4 comments · Fixed by #14 or #20

Comments

@nyxrobotics
Copy link

nyxrobotics commented Mar 20, 2023

下記コールバックがほぼ毎回呼ばれており、previous_number == -1になる→これまでに通った経路を無視して常に一番近い点を出力する

void LaneSelectNode::callbackFromLaneArray(const autoware_msgs::LaneArrayConstPtr &msg)
{
tuple_vec_.clear();
tuple_vec_.shrink_to_fit();
tuple_vec_.reserve(msg->lanes.size());
for (const auto &el : msg->lanes)
{
auto t = std::make_tuple(el, -1, ChangeFlag::unknown);
tuple_vec_.push_back(t);
}
lane_array_id_ = msg->id;
current_lane_idx_ = -1;
right_lane_idx_ = -1;
left_lane_idx_ = -1;
is_new_lane_array_ = true;
is_lane_array_subscribed_ = true;
}

/traffic_waypoints_array/lane_ruleが最初に一回、/lane_stopが10Hzでパブリッシュしている
Screenshot from 2023-03-17 12-03-29

実装を見る限り「レーンが変化したらprevious_numberを-1にして初期化」したそう。
/lane_ruleノードからトピックを受け取る想定と思われる。
/traffic_waypoint_arrayでトピック名が重複して誤動作している可能性あり。

Originally posted by @nyxrobotics in #10 (comment)

@nyxrobotics
Copy link
Author

提案内容

下記のように、/lane_stopがパブリッシュするトピック名を変更する

before
Screenshot from 2023-03-17 12-03-29

after
Screenshot from 2023-03-17 18-17-55

@nyxrobotics
Copy link
Author

nyxrobotics commented Mar 20, 2023

lane_plannerのREADMEで、/traffic_waypoints_arrayは変化しないと書かれており、
lane_select_coreのコールバックでは/traffic_waypoints_arrayを受け取ると初期化するような処理になっている。

void LaneSelectNode::callbackFromLaneArray(const autoware_msgs::LaneArrayConstPtr &msg)
{
tuple_vec_.clear();
tuple_vec_.shrink_to_fit();
tuple_vec_.reserve(msg->lanes.size());
for (const auto &el : msg->lanes)
{
auto t = std::make_tuple(el, -1, ChangeFlag::unknown);
tuple_vec_.push_back(t);
}
lane_array_id_ = msg->id;
current_lane_idx_ = -1;
right_lane_idx_ = -1;
left_lane_idx_ = -1;
is_new_lane_array_ = true;
is_lane_array_subscribed_ = true;
}

一方で、lane_stopは信号機が赤のときに速度がゼロになるようにウェイポイントを変換して/traffic_waypoints_arrayとして一定周期でパブリッシュしている。これが本来の仕様にあっていないものと予想される。

想定している原因は以下

  1. /traffic_waypoints_arrayを流用して実装したことにより機能が噛み合っていない
  2. 何か使い方が違う

上記の1であると仮定しての提案です

@nyxrobotics
Copy link
Author

lane_selecttraffic_waypoints_arrayは不要と見られるためstop_waypoints_arrayのみサブスクライブするように変更します

@nyxrobotics
Copy link
Author

トピック名の変更はremapで対応可能なためoutdoor_navigation_toolsで対応します

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant