Coder Social home page Coder Social logo

dhled / ros_bt_py Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fzi-forschungszentrum-informatik/ros_bt_py

0.0 0.0 0.0 23.62 MB

This is a Behavior Tree library meant to be an alternative to SMACH, FlexBE and the like. It includes a ReactJS-based web GUI and all the building blocks you need to build moderately advanced mission control Behavior Trees without writing a single line of code! Its claim to fame is the ability to shove, or transparently remote-execute, parts of a Behavior Tree. This implementation of Behavior trees was primarily done by Nils Berg in his thesis Distributed Execution of Behavior Trees using Heterogeneous Robot Teams. It was then improved and heavily upgraded by Kai-Uwe Hermann first with his thesis On-Line task allocation in an ad-hoc network of complex robots, currently as part of his research work. These works and the capability concept are part of Georg Heppners ongoing PhD Thesis Fähigkeitsbasierte Kooperation von Heterogenen Robotersystemen.

License: BSD 3-Clause "New" or "Revised" License

CMake 0.72% Makefile 0.45% Python 75.75% JavaScript 22.48% HTML 0.31% CSS 0.29%

ros_bt_py's Introduction

Welcome to ros_bt_py!

This is a Behavior Tree library meant to be an alternative to SMACH, FlexBE and the like.

It includes a ReactJS-based web GUI and all the building blocks you need to build moderately advanced mission control Behavior Trees without writing a single line of code!

Its claim to fame is the ability to shove, or transparently remote-execute, parts of a Behavior Tree.

Documentation

The main documentation effort nowadays is found in the repositories wiki.

In depth background documentation can be found in the Master Thesis "Distributed Execution of Behavior Trees using Heterogeneous Robot Teams" by Nils Berg (link coming soon).

There is also a growing amount of Sphinx documentation in the doc folder - simply execute the following commands in your shell to get browsable HTML documentation, including some tutorials:

$ cd ros_bt_py/doc
$ make html
$ cd build
$ python -m SimpleHTTPServer & xdg-open http://localhost:8000/html

Installation

To actually start using ros_bt_py, you need to install its dependencies first:

$ cd catkin_workspace
$ rosdep install --from-paths src --ignore-src -r -y

In earlier installations a separate packge was used named ros_webserver. The Webserver is now part of the package as ros_bt_py_webserver and you do not need a standalone version anymore.

Warning rosapi <=0.11.9 has issues with service calls with non empty requests on python3 (ROS >= noetic). The following error in the terminal window where your started ros_bt_py is a indication of this issue: Error processing request: field services must be a list or tuple type As of August 2020, mitigating this means using the latest git version of the rosbridge_suite, of which rosapi is a part of.

git clone https://github.com/RobotWebTools/rosbridge_suite.git

Warning If pip install tornado returns anything higher than tornado-5.1.1 you need to uninstall the conflicting tornado package, otherwise you might run into a nasty bug due to rosbridge silently closing websocket connections, making the web editor unusable. On Ubuntu 16.04 do this by (assuming it is installed in /usr/local and need to be removed with sudo):

sudo apt remove ros-kinetic-rosbridge-suite
sudo -i
pip uninstall tornado
exit
sudo apt install ros-kinetic-rosbridge-suite

Then you can just build the package with your prefered method i.e. catkin_make

Running

Running

After installing the dependencies, simply run catkin_make and you're good to go! The command

$ roslaunch ros_bt_py ros_bt_py.launch

will start a BT server and the rosbridge and webserver needed for the GUI. Afterwards, you can open http://localhost:8085/ros_bt_py/editor.html to use the editor.

Multiple editor windows

If you want to run two editors (which is sometimes useful when working in paralel) run:

$ roslaunch ros_bt_py ros_bt_py.launch dual:=true

The BT GUI will be available in the same address, but you'll have two namespaces -- tree_node and tree_node_dual. Just open two tabs, and select a different namespace on each one.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.