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

Roadmap #15

Open
5 of 20 tasks
captain-yoshi opened this issue Jun 7, 2024 · 0 comments
Open
5 of 20 tasks

Roadmap #15

captain-yoshi opened this issue Jun 7, 2024 · 0 comments

Comments

@captain-yoshi
Copy link
Owner

captain-yoshi commented Jun 7, 2024

A reminder of things to do before releasing a 1.0.0 release.

TODO:

  • Finish implementing MTC stages
  • Make stage properties configurable (set + configureInitFrom + exposeTo)
  • Implement pick and place demo
  • Implement other demo's
  • Add usefull callbacks
  • Remove constexpr port names. It is more verbose to directly use the string.
  • No need to enforce every blackboard variables with a shared_ptr.
  • Refactor namespace
  • Refactor some classes with templates
  • Properly set BT Ports
  • Convert TreeNodes into plugins. See plugin example.
  • Connect Stage: add multiple GroupPlannerVector in the BT. Or create a new class.
  • Add Gtests, convert current examples to tests. Keep the demo's in example folder.
  • Add CI
  • Test: make sure that the shared pointer is removed from the blackboard.
  • Reorganize/Modify the API.
  • Add all complex blackboard params thread-safe. Documentation.
  • Find a way to halt the BT PlanMTCTask by checking the isHaltRequested. Documentation. Probably needs a PR in MTC to add a callback in the plan method.
  • Ask BehaviorTree.CPP if we can minimize specific node parameters in Groot2
  • Add documentation

Namespace

I would propose these changes to better align with BehaviorTree.CPP:

namespace BT {
namespace MTC {

template <typename T = Any>
class SetMTCProperties : public SyncActionNode
{
public:
  SetMTCProperties(const std::string& name, const NodeConfig& config)
    : SyncActionNode(name, config) {}

  NodeStatus tick() override {}

  static PortsList providedPorts() {}
};
} // namespace MTC

template <>
inline MTC::SharedProperty<int> convertFromString<MTC::SharedProperty<int>>(StringView str)
{
  MTC::SharedProperty<int> output = std::make_shared<int>(convertFromString<int>(str));

  return output;
}


} // namespace BT

BT Ports

When moving a stage is it an Input or a Bidirectional Port ? Because the blackboard value is set to nullptr we should set the port to Bidirectional.

Halting an MTC Task::plan()

This PlanMTCTask BT node is derived from the ThreadedAction which makes planning in another thread. To be reactive, the plan must hbe preemptable. To this end, 2 PR's where submitted/merged to reduce the time it takes to preempt a task. But there are still some cases where an MTC stage is planning something long where it cannot be preempted.

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

No branches or pull requests

1 participant