I have been involved in the development of py_trees over the years:
Before it was released as open source, it was originally developed at Yujin Robot to handle the application layer of the fleet robots that they were developing. Among the original goals were:
- Simple enough for an intern to take care of the application layer (req: python programming skills)
- Apply to the robots we were deploying at various field tests around the world
- Provide sufficient tooling for monitoring, logging, replay - basically allow us to root cause problems at the application level
- Work easily with other tools that mock the robot so we could put the application layer under CI
It took a few iterations to get there, but ultimately we met all of our goals. We even found that the control engineers started moving their decision making logic to the behaviour trees when it didn't have low-latency requirements (e.g. docking) simply because it got their components into a framework which was monitored, logged, mocked and allowed them to interact with other parts of the robot (e.g. the notifications subsystem) without having to drag that subsystem in as a dependency for the control module (e.g. docking LED or sound notifications as it passed through different states in the docking process).
These days it has been picked up by CARLA for their scenario layer in autonomous driving simulations and Toyota Research Institute is doing the same internally. Blue Ocean Robotics has been using it for a while and I have been notified of a few other robotics companies in the valley area taking advantage of it, but I do not know to what extent.
Not an answer but there are some discussions that might help. I just listed on py_tree_ros's page.
yes, I saw this theoretical discussions and I read all the related docs. What about practice ? Pros and cons at real life projects ?