Go to file
David 61692c029e fix typo in readme 2018-12-04 14:29:46 -05:00
buzz_scripts new zooids node, zooids WP control and Pangeae cleanup (launch and geofence) 2018-12-03 00:35:32 -05:00
include beautified and style fixes 2018-12-04 10:34:07 -05:00
launch added groundstation launch file and readme details bout it 2018-12-04 14:24:31 -05:00
misc Add spiri case to cmdlinectr.sh 2018-09-26 15:11:29 -04:00
msg Neighbours pos publisher addition 2017-01-09 17:15:33 -05:00
src beautified and style fixes 2018-12-04 10:34:07 -05:00
.gitignore logger addition 2017-08-30 21:02:37 -04:00
CMakeLists.txt implemented Voronoi Centroid tessellation - still need works 2018-11-07 10:24:06 -05:00
package.xml generalized some parts of RRT and complete export occ_grid 2017-12-20 12:20:43 -05:00
readme.md fix typo in readme 2018-12-04 14:29:46 -05:00

readme.md

ROSBuzz

Description:

ROSBuzz is a ROS node encompassing Buzz Virtual Machine (BVM) and interfacing with ROS ecosystem for mobile robots. The only node of the package is rosbuzz_node. It can be used in simulation-in-the-loop using Gazebo and was tested over many platforms (Clearpath Husky, DJI M100, Intel Aero, 3DR Solos, Pleidis Spiris, etc.). More information about ROSBuzz peripheral nodes is available in [1].

What is Buzz?

Buzz is a novel programming language for heterogeneous robots swarms. Buzz advocates a compositional approach, by offering primitives to define swarm behaviors both in a bottom-up and in a top-down fashion. Its official documentation and code are available Buzz.

Requirements

  • Buzz:

Follow the required steps in Buzz.

  • ROS base binary distribution (Indigo or higher):

Follow the required steps in ROS Kinetic. Note that the guidance and camera node of DJI for the M100 require to use the Indigo distribution.

  • ROS additionnal dependencies:
$ sudo apt-get install ros-<distro>-mavros ros-<distro>-mavros-extras

Compilation

mkdir -p ROS_WS/src
cd ROS_WS/src
git clone https://github.com/MISTLab/ROSBuzz rosbuzz
cd ..
catkin_make

Run

To run the ROSBuzz package using the launch file, execute the following:

$ roslaunch rosbuzz rosbuzz.launch

Have a look at the launch file to understand what parameters are available to suit your usage. All topics and services names are listed in launch_config/topics.yaml. Note : Before launching the ROSBuzz node, verify all the parameters in the launch file. A launch file using gdb is available too (rosbuzzd.launch).

A launch file for a groundstation is also available launch/groundstation.launch. It uses the robot ID = 0, which is detected as a groundstation by our Buzz scripts. It also has hardcoded GPS coordinates to avoid the need of a GPS sensor on the groundstation. While a groundstation is never required to deploy a swarm with ROSBuzz, it opens a websocket on ROS, useful to monitor the swarm and it creates a rosbag of the flight.

  • Buzz scripts: Several behavioral scripts are included in the "buzz_Scripts" folder, such as "graphformGPS.bzz" uses in [1] and the "testaloneWP.bzz" to control a single drone with a ".csv" list of waypoints. The script "empty.bzz" is a template script.

Publishers

  • Messages from Buzz (BVM): The node publishes mavros_msgs/Mavlink message "outMavlink".

  • Command to the flight controller: The node publishes geometry_msgs/PoseStamped message "setpoint_position/local".

  • Other information from the swarw: The node publishes:

    • "bvmstate" (std_msgs/String)
    • "neighbours_pos" (rosbuzz_msgs/neigh_pos)
    • "fleet_status" (mavros_msgs/Mavlink)

Subscribers

  • Information from the Robot controller (mavros compliant): The node subscribes to:

    • "global_position/global" (sensor_msgs/NavSatFix message)
    • "global_position/rel_alt" (std_msgs/Float64)
    • "local_position/pose" (geometry_msgs/PoseStamped)
    • "battery" (sensor_msgs/BatteryState)
    • either "extended_state" (mavros_msgs/ExtendedState) or "state" (mavros_msgs/State)
  • Messages to Buzz (BVM): The node subscribes to mavros_msgs/Mavlink incoming message with name "inMavlink".

Services

  • Remote Controller: The package offers a service "buzzcmd" (mavros_msgs/CommandLong) to control it. In the "misc" folder, a bash script shows how to control the swarm state from the command line.

References

  • [1] ROS and Buzz : consensus-based behaviors for heterogeneous teams. St-Onge, D., Shankar Varadharajan, V., Li, G., Svogor, I. and Beltrame, G. arXiv : https://arxiv.org/abs/1710.08843

  • [2] Over-The-Air Updates for Robotic Swarms. Submitted to IEEE Software (August 2017). 8pgs. Shankar Varadharajan, V., St-Onge, D., Guß, C. and Beltrame, G.

Visual Studio Code

To activate highlights of the code in Visual Studio Code or Roboware add the following to settings.json:

    "files.associations": {
        "*.bzz":"python"
    }