flexbe_behavior_engine icon indicating copy to clipboard operation
flexbe_behavior_engine copied to clipboard

Are there plans to port FlexBE to ROS2 ?

Open telemething opened this issue 6 years ago • 24 comments

telemething avatar Dec 19 '18 16:12 telemething

@pschillinger any word on this?

RhysMcK avatar Aug 15 '19 00:08 RhysMcK

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.

pschillinger avatar Aug 17 '19 12:08 pschillinger

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?

LoyVanBeek avatar Dec 03 '19 09:12 LoyVanBeek

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.

pschillinger avatar Apr 07 '20 17:04 pschillinger

That’s great info. So what are people using now on ROS2 to get a similar state machine functionality?

dzoberti avatar May 28 '20 05:05 dzoberti

Great!! I'd love to see FlexBE in ROS2. I am looking forward to test it and contribute to this migration :)

fmrico avatar Jun 04 '20 18:06 fmrico

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.

Schulze18 avatar Nov 24 '20 20:11 Schulze18

Hi guys, any update on porting FlexBE to ROS2? I will be happy to help.

Srikiranrao avatar May 17 '21 06:05 Srikiranrao

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

an99990 avatar Aug 30 '21 18:08 an99990

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.

pschillinger avatar Sep 11 '21 14:09 pschillinger

Is there anything we could contribute to this effort? What is the current status and are there specific topics that I could help with?

LoyVanBeek avatar Sep 16 '21 08:09 LoyVanBeek

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.

albuckley avatar Sep 16 '21 13:09 albuckley

HI @albuckley , could you share what behaviour engines for ROS2 you have found ?

an99990 avatar Sep 16 '21 14:09 an99990

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.

albuckley avatar Sep 16 '21 15:09 albuckley

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

dcconner avatar Oct 18 '21 12:10 dcconner

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?

samuk avatar Oct 18 '21 12:10 samuk

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

dcconner avatar Oct 18 '21 13:10 dcconner

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).

samuk avatar Oct 18 '21 14:10 samuk

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.

dcconner avatar Oct 19 '21 03:10 dcconner

No problem, an issue queue needs to be opened up there I think. At present, there's no way of opening a ticket there.

samuk avatar Oct 19 '21 09:10 samuk

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.

dcconner avatar Oct 19 '21 17:10 dcconner

is the issue with catkin fixed ? @samuk @dcconner thank you

an99990 avatar Oct 26 '21 12:10 an99990

@an99990 Yes. Look on the CNU robotics fork we are using for ROS 2 development right now. Post issues there

dcconner avatar Oct 26 '21 13:10 dcconner

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.

dcconner avatar Mar 09 '22 22:03 dcconner