navigation2
navigation2 copied to clipboard
Fix Costmap Filters system tests
This PR fixes failing in CI test_keepout_filter
, test_speed_filter_global
, test_speed_filter_local
tests.
Basic Info
Info | Please fill out this column |
---|---|
Ticket(s) this addresses | N/A |
Primary OS tested on | Docker container from ghcr.io/ros-planning/navigation2:main (Ubuntu 22.04, ros2 rolling), local testing at Ubuntu 20.04 |
Robotic platform tested on | TB3 simulation |
Description of contribution in a few bullet points
The following problems were detected on CircleCI testing with Costmap Filters system tests:
Problem1 During all Costmap Filters testcases run the following problem appear:
...
[lifecycle_manager-4] [INFO] [1658849612.200747157] [lifecycle_manager_filters]: Server filter_mask_server connected with bond.
[lifecycle_manager-4] [INFO] [1658849612.200798773] [lifecycle_manager_filters]: Activating costmap_filter_info_server
[costmap_filter_info_server-6] [INFO] [1658849612.201114481] [costmap_filter_info_server]: Activating
[costmap_filter_info_server-6] [INFO] [1658849612.201221979] [costmap_filter_info_server]: Creating bond (costmap_filter_info_server) to lifecycle manager.
[component_container_isolated-7] [INFO] [1658849612.207924607] [behavior_server]: Creating behavior plugin wait of type nav2_behaviors/Wait
[component_container_isolated-7] [INFO] [1658849612.209603098] [behavior_server]: Configuring wait
[component_container_isolated-7] [INFO] [1658849612.217752899] [lifecycle_manager_navigation]: Configuring bt_navigator
[component_container_isolated-7] [WARN] [1658849612.217944090] [rcl_lifecycle]: No transition matching 1 found for current state inactive
[component_container_isolated-7] [ERROR] [1658849612.217964847] []: Unable to start transition 1 from current state inactive: Transition is not registered., at ./src/rcl_lifecycle.c:355
This appears due to double-attempt to configure already configured (by navigation_launch.py
script) bt_navigator
node. Appeared since 35561ba7088f5de1f702fb1df816cf815dc60740. Removal of bt_navigator
from the list of lifecycle nodes in testing scripts resolves the problem.
Problem2
Adding the keepout zone to the global/local costmap for the test_keepout_filter
test forces robot to plan on non-straight line around this zone. However, instead of bypassing of the obstacle on costmap, robot became to turn left/right in place as shown at the picture below:
This behavior change is concerned with DWB part of 7872c73362985a95cdacf2df3ef15526fcd7f260 commit, that increased default prune_distance
parameter from 1.0
to 2.0
meters. It seems that robot tries to cut-down for the shortened distance between its actual start and pruned end point on the prepared local plan and is being getting stuck. Decreasing the prune_distance
back to the 1.0
value restores robot normal behavior in keepout test (checked locally and on Docker container).
Problem3
The problem appeared only on FastRTPS
implementation for test_keepout_filter
test . It concerned with that Keepout Filter fails to set the constmap filter info subscriber, does not receive the costmap filter info message, then misses filter mask and thus passes through keepout area. This is being indicating by following errors:
[component_container_isolated-7] [WARN] [1658897733.717745904] [global_costmap.global_costmap]: KeepoutFilter: Filter mask was not received
...
[tester_node-9] [ERROR] [1658897734.353552345] [nav2_tester]: Pose (-1.2776365887766588, -0.5532248043004415) belongs to keepout zone
[tester_node-9] [ERROR] [1658897734.354292778] [nav2_tester]: Path plan intersects with keepout zone
This problem is most probably related to the https://github.com/ros-planning/navigation2/issues/3014, which is yet to be resolved.
One CycloneDDS
this issue was never detected.
For Maintainers:
- [ ] Check that any new parameters added are updated in navigation.ros.org
- [ ] Check that any significant change is added to the migration guide
- [ ] Check that any new features OR changes to existing behaviors are reflected in the tuning guide
- [ ] Check that any new functions have Doxygen added
- [ ] Check that any new features have test coverage
- [ ] Check that any new plugins is added to the plugins page
- [ ] If BT Node, Additionally: add to BT's XML index of nodes for groot, BT package's readme table, and BT library lists
@AlexeyMerzlyakov, please properly fill in PR template in the future. @stevemacenski, use this instead.
- [ ] Check that any new parameters added are updated in navigation.ros.org
- [ ] Check that any significant change is added to the migration guide
- [ ] Check that any new features OR changes to existing behaviors are reflected in the tuning guide
- [ ] Check that any new functions have Doxygen added
- [ ] Check that any new features have test coverage
- [ ] Check that any new plugins is added to the plugins page
- [ ] If BT Node, Additionally: add to BT's XML index of nodes for groot, BT package's readme table, and BT library lists
Also, added save_map_timeout
parameter fixes (this is not related to any issue, but making the parameter value to be correct).
Try pushing this branch to the master repo instead of your fork and resubmitting the PR and see if having this come from the source repo itself gets around it. I'm curious how Circle is doing this (based on fork, user commit, branch owner, etc), it might be trivial to get around since you have write access to the main repository.
https://github.com/ros-planning/navigation2/pull/3120 seems to work! I made the branch and cherry picked your commit, so you're still the author of the commit but I "committed" it (?). I'm not sure if the fix is that I need to make the branch or that there needs to be someone else associated with the commit.
I made you a new branch on the repo alexey_playground
, try doing something small on it and open a PR and see if that works. If it does, then I can just make you a bunch of branches to use. If it doesn't, then we can work out a process to have a non-Russia-based account 'associated' with the commits to make it run.
Unfortunately, after experiments with alexey_playground
and other local branches it seems to happen due to my associated account was banned in CircleCI. Therefore, we have to chose the second option.