Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

初始化扫描阶段 start_yaw_ 是否可能未及时更新,导致 frontier 状态异常?

Đang mở
#47 3 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
45/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
cpp
Lĩnh vực
robotics

Hướng nghiên cứu

Start in src/planner/exploration_manager/src/exploration_fsm.cpp, especially ExplorationFSM::FSMCallback() and its initialization-scan calls to updateFrontierAndObject(). Trace how dormantSeenFrontiers() uses start_pt_ and start_yaw_ during each turn, then compare the observed frontier transitions with the saved videos or BEV visualizations and HM3D ObjectNav v2 runs. Done means the expected initialization behavior and the relationship between release and evaluation code are documented or confirmed.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

你好,感谢开源 ApexNav。我们在复现 HM3D ObjectNav v2 评测时观察到一个可能的问题,想确认这是否是预期行为,或者是否与论文内部评测代码有所不同。
我们使用公开仓库当前 release 代码运行 HM3D v2 val split 时,发现不少 episode 会在初始化扫描后很早进入 no frontier,但从保存的视频/BEV 可视化看,环境中似乎仍然存在明显可探索的 frontier。
我们检查到一个可能相关的时序问题:
在 src/planner/exploration_manager/src/exploration_fsm.cpp 中,ExplorationFSM::FSMCallback() 的初始化扫描阶段会执行:

if (fd_->init_action_count_ < 1 + 12 + 1 + 12) {
  ...
  fd_->init_action_count_++;
  transitState(ROS_STATE::PUB_ACTION, "FSM");
  updateFrontierAndObject();
}

而 updateFrontierAndObject() 内部会调用:
frt_map->dormantSeenFrontiers(start_pos2d, fd_->start_yaw_(0));
fd_->start_yaw_ 初始化为 zero,并且在原代码里似乎直到初始化扫描结束后的 main planning branch 才会被设置为当前 fd_->odom_yaw_。但是初始化扫描过程中机器人会原地旋转,每次 turn 后 odom yaw 都已经改变。这样 dormantSeenFrontiers() 在初始化过程中可能会一直使用 stale yaw=0 来做 FOV 判断,从而把一些实际上不在当前视野内的 active frontiers 提前移动到 dormant frontiers。

我们做了一个小修改:在初始化扫描阶段调用 updateFrontierAndObject() 之前,同步当前 pose/yaw:

fd_->start_pt_ = fd_->odom_pos_;
fd_->start_yaw_(0) = fd_->odom_yaw_;

这个修改后,我们之前观察到的几个早期 no frontier case 不再复现,全量复测中,no frontier 失败数量也明显下降。
想请教:
初始化扫描阶段调用 updateFrontierAndObject() 时,是否本来就应该使用当前 odom yaw?
公开 release 代码是否和论文中 HM3D v2 评测使用的代码完全一致?
这个 start_yaw_ 在初始化扫描阶段保持默认值 0 是否是预期设计?

Ngôn ngữ chính
C
Star
456
Fork
38
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Chúng tôi chưa kiểm tra các tệp thiết lập môi trường của dự án này. Hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của Robotics-STAR-Lab/ApexNav

Tất cả issue của Robotics-STAR-Lab/ApexNav

Issue tương tự

Thêm issue về C

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.