flexbe_behavior_engine
flexbe_behavior_engine copied to clipboard
Are there plans to port FlexBE to ROS2 ?
@pschillinger any word on this?
I think it makes a lot of sense and would not expect major problems.
However, I personally have not yet worked that much with ROS2 and there is no specific roadmap when a port would happen. If there is a need and people are interested in this, it would be great to coordinate and maybe we can do it together. Just let me know, best via email.
Since FlexBE depends on Smach, Smach would also need to be ported, unless there is a different state-machine library that is nicer to build on. Smach does not see much action nowadays, what's your stance on this @pschillinger?
Just as a quick update: I used some time during the last days to do a major rework and clean-up of the FlexBE core codebase. As part of this clean-up, I actually removed the smach dependency as the feature overlap was quite minimal (interfaces remain the same, so still compatible) and also reduced the rospy imports.
The goal of this so far only was to clean up and do some under-the-hood improvements, but a possible next step could include to wrap rospy in a dedicated ROS interface and add rclpy as an alternative, as well as doing the few package structure updates for ROS2 on a separate branch.
Still, I did not yet have a chance to really work with ROS2 in the projects I'm involved in, but I don't expect major difficulties anymore in a ROS2 update.
That’s great info. So what are people using now on ROS2 to get a similar state machine functionality?
Great!! I'd love to see FlexBE in ROS2. I am looking forward to test it and contribute to this migration :)
Hi guys, congratulations for FlexBE, it is a great tool. Any news about the ROS2 port? I would be glad to test or help in some way.
Hi guys, any update on porting FlexBE to ROS2? I will be happy to help.
Hey I love flexbe as well. Is there any updates on the migration of flexbe to ROS2 ? I saw the devel branch for ros2, is it functional ? @pschillinger
Thanks for the requests so far! The devel branch for ros2 is work in progress and not yet functional, but the migration is still planned. Progress depends mainly on availability and support.
Is there anything we could contribute to this effort? What is the current status and are there specific topics that I could help with?
I am currently doing a review to determine what is available in terms of behaviour engines for ROS2. I am absolutely gutted that SMACH is lost and unmaintained in ROS1 as that is what I had relied upon. I don't want to use behaviour trees as I would like the code to implement classes.
In my application I extended the SMACH class and created a child class that had class members I wanted. I implemented a cognition filter that made all the semantic axioms available to all states. Not sure if I would be able to do that same thing here with Flexbe. Beyond that I would prefer a state machine over decision trees assuming the state machine supports concurrency.
I really doubt I am capable of contributing here, but I thought I should at least add a comment that I would think there is great interest here even if people are remaining quiet. Given the lack of discussion I am finding in regard to behaviour engines, I am begging to suspect a lot of people haven't made the jump to jump to ROS2 yet and are not aware their existing implementations are not yet supported or never will be.
HI @albuckley , could you share what behaviour engines for ROS2 you have found ?
Hi @an99990
This is a current work in progress for me. This is what I have come up with so far:
FLEXBE - Python - work in progress as per this threads comments. associated tools: unknown SMACH - Python - orphaned in ROS1 with status: unmaintained. Did have a viewer. SMACC - C++ - ROS2 porting is in progress. Has a viewer. BehaviourTrees.CPP - C++ - has been ported to ROS2 and also the viewer (Groot) but I think that is all on Rolling. py_trees - Python - has been ported to ROS2. No runtime viewer, only static dot graph output.
If I am wrong about any of these findings. do let me know. Or any other frameworks I am not aware of.
My conclusion to date is that we do not yet have any behaviour framework ported up to ROS2 with all the bells and whistles included.
It is my guess that the FLEXBE/SMACH crowd would very much want to bring their existing behaviour modules forward without having to do a complete rewrite in a new framework.
We are working on a port and are coordinating with @pschillinger
We have issued an early alpha port that we are in the process of testing. Please take a look and test if you are able. We hope to complete testing and issue a pull request for an official release in early 2022.
https://github.com/CNURobotics/flexbe_app/tree/ros2-devel-alpha https://github.com/CNURobotics/flexbe_behavior_engine/tree/ros2-devel-alpha
Thanks, I'll have a go. Is https://github.com/CNURobotics/flexbe_app/tree/ros2-devel-alpha a web app to be used in a browser or have I misunderstood?
The original FlexBE UI was a chromium browser app, but this ROS 2 version like the latest ROS 1 version is a standalone JavaScript app. We've only converted the ROS 1 design, no major changes have been made at this point from the functionality available in the ROS 1 FlexBE system
I get this when trying to install with Colcon. I assumed the Catkin instructions were just legacy documentation? Or do I actually need to install Catkin on Ros2?
Foxy on 20.04
ubuntu@ubuntu:/dev_ws/src$ ls build flexbe_app flexbe_behavior_engine install log ubuntu@ubuntu:/dev_ws/src$ colcon build Starting >>> flexbe_msgs --- stderr: flexbe_msgs CMake Error at CMakeLists.txt:4 (find_package): By not providing "Findcatkin.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "catkin", but CMake did not find one.
Could not find a package configuration file provided by "catkin" with any of the following names: catkinConfig.cmake catkin-config.cmake
Add the installation prefix of "catkin" to CMAKE_PREFIX_PATH or set "catkin_DIR" to a directory containing one of the above files. If "catkin" provides a separate development package or SDK, be sure it has been installed.
Failed <<< flexbe_msgs [0.92s, exited with code 1]
Summary: 0 packages finished [2.32s] 1 package failed: flexbe_msgs 1 package had stderr output: flexbe_msgs 9 packages not processed
ubuntu@ubuntu:~/dev_ws$ sudo apt install ros-foxy-ament-cmake-python Reading package lists... Done Building dependency tree Reading state information... Done ros-foxy-ament-cmake-python is already the newest version (0.9.9-1focal.20210901.021729).
I suspect we already had Catkin installed and missed this in conversion. In future, please post issue reports on the Alpha version on the CNU robotics github so my students will see them.
No problem, an issue queue needs to be opened up there I think. At present, there's no way of opening a ticket there.
Good catch. I forgot it hit the check box. Issues now open on both ROS 2 development repos at https://github.com/CNURobotics/flexbe_app/tree/ros2-devel-alpha https://github.com/CNURobotics/flexbe_behavior_engine/tree/ros2-devel-alpha
Note: I left default branch to match the others, so make sure you switch into the ros2-devel-alpha branch and post any issues you have testing there.
is the issue with catkin fixed ? @samuk @dcconner thank you
@an99990 Yes. Look on the CNU robotics fork we are using for ROS 2 development right now. Post issues there
We have released our ros2-devel-alpha updates to flexbe_app and flexbe_behavior_engine. We are moving flexbe_behavior_engine to https://github.com/FlexBE/flexbe_behavior_engine for future work. The site https://github.com/FlexBE will now be the one-stop shop for FlexBE moving forward, including all ROS 2 work.