-
Notifications
You must be signed in to change notification settings - Fork 818
Description
Hi,
We're having a really bizarre issue with BT.CPP that we could use some help with. We've added a few BT nodes recently and some are failing to be usable in behavior tree XML files.
The BT nodes are compiling but we're finding that the builder in the BT registration macro isn't being called in these unique situations. So even though the BT node exists, they're not being registered as plugins to be able to be run-time loadable. This is affecting a number of recently added BT nodes to Nav2, with one example below. At run-time, the BT creation call hangs indefinitely without returning any warning or throwing any error, which is strange as well.
Do you have any idea why this is happening or what's gone wrong? I've looked over these files many times and compared them to other BT nodes we have in Nav2 using the same base classes that are working perfectly fine. We've tried removing caches and similar techniques in case its a bad compiler state, but it happens to these particular nodes, every time.
One example:
- DriveOnHeading https://github.com/ros-planning/navigation2/blob/main/nav2_behavior_tree/plugins/action/drive_on_heading_action.cpp
- Registered https://github.com/ros-planning/navigation2/blob/main/nav2_behavior_tree/plugins/action/drive_on_heading_action.cpp#L46-L57
- Properly CMake-ed like all others https://github.com/ros-planning/navigation2/blob/main/nav2_behavior_tree/CMakeLists.txt#L84-L85
- Stranger yet, this is identical to the backup BT node https://github.com/ros-planning/navigation2/blob/main/nav2_behavior_tree/plugins/action/back_up_action.cpp which calls the same server on a different interface and was copy-pasted over
Another example is the BackUpCancel node, so you have 2 examples using completely different base libraries.
CC @jwallace42 @padhupradheep both of which have BT nodes that are in this limbo. More discussion ros-navigation/navigation2#2934