The bir_bbot feature simulation, provides a simulation for the Bbot balancing robot with the Gazebo simulator - ROS.
Keywords: balancing robot, Gazebo, ROS
Author: Matheus França and Lucas Souza
Advisor: Marco Reis
Affiliation: BIR - Brazilian Institute of Robotics
Bbot, or Balancing Robot, is a self-balancing autonomous robot project. Our goal is to build a mobile robot operated via ROS Noetic capable of balancing and moving on two wheels. Furthermore, he must be able to read a TAG (fiducial framework). The TAG will send the robot a destination position to which it must autonomously navigate. To carry out navigation, this robot must be able to create a map of where it is and locate itself in it, allowing it to update its position throughout the mission and avoid obstacles while navigating to its objective. For more about this project see our web page, containing the steps for build this project, LINK.
- Noetic: Built and tested under ROS Noetic and Ubuntu 20.04
- ROS : An open-source robot framework. (Version == Noetic)
- ros_control : ROS control interface.
- Twist mux : Twist multiplexer, which multiplex several velocity commands (topics) and allows to priorize or disable them (locks).
- Teleop twist keyboard : Generic keyboard teleop for twist robots.
- BIR Marker Localization : This package was made to help you find your robot with a marker. (Clone into your src folder)
- Py trees : PyTrees is a python implementation of behaviour trees designed to facilitate the rapid development of medium sized decision making engines for use in fields like robotics.
- Robot localization : Provides nonlinear state estimation through sensor fusion of an abritrary number of sensors.
- Navigation : ROS Navigation-Stack
- Gmapping : SLAM Gmapping for ROS
- Move_base_flex : Move Base Flex (MBF) is a backwards-compatible replacement for move_base.
- Moveback Recovery : Recovery behavior for navigation that moves the robot backwards.
Install dependencies by running:
$ sudo apt install ros-noetic-py-trees* ros-noetic-navigation ros-noetic-gmapping ros-noetic-robot-localization
$ git clone https://github.com/magazino/move_base_flex.git
$ git clone https://github.com/uos/mbf_recovery_behaviors.git
$ git clone https://github.com/Brazilian-Institute-of-Robotics/bir_marker_localization.git
- bir_bbot - BIR Balancing Robot
- Purpose of the Project
- Table of Contents
- File System
- Installation
- License
- Bugs & Feature Requests
- doc_resources : Support files, including Jupyter about the control systems of Bbot and images to support the readme.
- bbot_control : Contains the controllers parameters to the robot.
- lqr_controller : The support package for bbot_control. Contains our ROS LQR controller.
- bbot_description : Defines the Bbot URDF, Rviz and meshes.
- bbot_gazebo : Is the gazebo package for simulate the robot, sensors and the world objects.
- bbot_perception : The package for visual process.
- bbot_navigation : Launches gmapping and robot_localization for odometry and move_base_flex with a behavior tree for autonomous navigation.
Attention, if you haven't installed ROS yet, please check Ubuntu install of ROS Noetic. Desktop-Full Install is the recommended one in order to work with this repository.
Building:
First, lets create a catkin workspace.
$ mkdir -p ~/catkin_ws/src
Then, clone bir_bbot inside your workspace source. For simulation, use the branch 'feature/perception_simulation'
$ git clone [email protected]:Brazilian-Institute-of-Robotics/bir_bbot.git -b simulation
Now, just build your catkin workspace.
$ cd ~/catkin_ws
$ catkin_make
Don't forget to source your workspace before using it.
$ source devel/setup.bash
Just Run
$ roslaunch bbot_gazebo bbot_gazebo.launch rviz:=true
In order to move Bbot with a keyboard, use:
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py cmd_vel:=bbot/mobile_base_controller/cmd_vel
- Example using RQT to move the robot (to be more visual).
For Bbot navigation, use:
$ roslaunch bbot_navigation navigation.launch
- Behaviour tree
Please report bugs and request features using the Issue Tracker.