Giter Club home page Giter Club logo

butlerbot's Introduction

Butler Robot

alt text

Overview

The Butlerbot project aims to develop a robotic butler designed to operate in a café environment. The robot will autonomously deliver food from the kitchen to customers at their tables, optimizing efficiency and reducing the need for human staff during busy hours.

Development Environment

This project uses a Dockerized VSCode devcontainer environment for development, based on the devcontainer_for_ros template. This setup ensures a consistent development environment across different systems and simplifies the setup process.

You can also choose to develop using a normal ROS host machine with ROS 2 Humble installed if you prefer. However, the Dockerized environment provides additional convenience and consistency for development across various platforms.

How to Build

In above mention devcontainer environment

  1. use vscode tasks shortcut and choose: Install Dependencies
  2. use vscode tasks shortcut and choose: Build RelWithDebInfo

In normal ros humble installed in host machine

  1. create a workspace
mkdir -p butlerbot_ws/src
  1. Clone this repo in src
cd butlerbot_ws
git clone https://github.com/manojm-dev/butlerbot.git src
  1. Install Dependencies
rosdep install --from-path src --ignore-src
  1. Building
 colon build --sysmlink-install

Usage

Building

  1. Download gazebo models
git clone https://github.com/osrf/gazebo_models.git /home/$USERNAME/.gazebo/models
  1. Sourcing the workspace

    a) In normal ros installation

    cd workspace
    source install/setup.bash
    

    b) In above devcontianer installtion

    • type sourcews in terminal for sourcing the workspace or close the terminal and open a new terminal(sourced in .bashrc)

Launching

alt text

alt text

alt text

Project Structure

The project is organized into several ROS2 packages, each handling different aspects of the robot's functionality:

  1. butlerbot_description: Contains the robot's URDF/XACRO files and launch files, enabling visualization and simulation of Butlerbot in various environments.
  2. butlerbot_gazebo: Includes configurations and launch files for simulating Butlerbot in the Gazebo environment, allowing for realistic physics and sensor simulation.
  3. butlerbot_localization: Manages the robot's localization using SLAM or other localization techniques, ensuring accurate positioning within the café environment.
  4. butlerbot_navigation: Implements the ROS2 Navigation stack (Nav2) for path planning, obstacle avoidance, and autonomous movement of Butlerbot throughout the café.

Packages Description

1) butlerbot_description

The butlerbot_description package provides the URDF/XACRO files and launch configurations for visualizing Butlerbot robot. It includes files to manage robot state publishing, visualization in RViz, and other related tools.

Launch files

  1. display.launch.py: Launches the robot state publisher, joint state publisher, joint state publisher GUI, RViz, and Rqt. The default parameters are : use_sim_time:=true, use_jsp:=true ,jsp_gui:=false, urdf_model:=defalt_location, use_rviz:=true and use_rqt:=false.

  2. rsp.launch.py: Launches the robot state publisher node with configuration parameters. The default parameters are: urdf_model:=default_location, use_sim_time:=true and future scope parameters use_gazebo:=true, use_gzsim:=false.

  3. visualize.launch.py: Launches RViz and Rqt visualization tools with configurable parameters. The default parameters are: use_sim_time:=true, use_rviz:=true and use_rqt:=false

2) butlerbot_gazebo

The butlerbot_gazebo package is responsible for simulating the Butlerbot robot in a Gazebo environment. It includes the necessary configurations to launch the robot within a simulated cafe environment.

Launch files

  1. gazebo.launch.py: Launches the Gazebo simulator with the cafe environment and spawns the Butlerbot robot at its home position

3) butlerbot_localization

The butlerbot_localization package is responsible for managing the robot's localization using techniques such as SLAM (Simultaneous Localization and Mapping) and EKF (Extended Kalman Filter). This package ensures accurate positioning of Butlerbot within the café environment, enabling it to navigate and perform tasks reliably.

Configuration Files

  1. ekf.yaml: Configuration for the EKF node, which fuses sensor data to estimate the robot's pose in the environment.

  2. localization.yaml: General localization parameters for Butlerbot.

  3. mapper_params_online_async.yaml: Configuration parameters for the asynchronous SLAM algorithm

  4. mapper_params_online_sync.yaml: Configuration parameters for the synchronous SLAM algorithm.

Launch Files

  1. ekf.launch.py**: Launches the EKF node using the parameters defined in ekf.yaml.

  2. slam_online_async.launch.py****: Launches the asynchronous SLAM algorithm using parameters from mapper_params_online_async.yaml.

  3. slam_online_sync.launch.py: Launches the synchronous SLAM algorithm using parameters from mapper_params_online_sync.yaml.

  4. amcl.launch.py: Launches the Adaptive Monte Carlo Localization (AMCL) node for probabilistic localization of Butlerbot within a known map.

4) butlerbot_navigation

The butlerbot_navigation package implements the Navigation2 stack for Butlerbot, providing capabilities such as path planning, obstacle avoidance, and autonomous movement within the café environment. This package is critical for enabling Butlerbot to navigate from its starting position to specific locations like tables and back to the home position.

Configuration Files

  1. **nav2_params.yaml: Configuration file for the Navigation2 stack, defining parameters for the planner, controller, recovery behaviors, and other navigation components.

Launch Files

  1. navigation.launch.py: Launches the Navigation2 stack using the parameters defined in nav2_params.yaml.

butlerbot's People

Contributors

manojm-dev avatar

Watchers

 avatar

butlerbot's Issues

Consistent Error logs produces while launching gazebo in verbose mode

Consistent Error logs produces while launching gazebo in verbose mode

Problem

  • Gazebo was unable to find the model.config files for several directories because they were not correctly included in the GAZEBO_MODEL_PATH. This caused errors when trying to load models in the Gazebo client.

Log

[gzclient-2] [Err] [InsertModelWidget.cc:403] Missing model.config for model "/home/develop/workspace/install/share/ament_index"
[gzclient-2] [Err] [InsertModelWidget.cc:403] Missing model.config for model "/home/develop/workspace/install/share/butlerbot_description"
[gzclient-2] [Err] [InsertModelWidget.cc:403] Missing model.config for model "/home/develop/workspace/install/share/butlerbot_gazebo"
[gzclient-2] [Err] [InsertModelWidget.cc:403] Missing model.config for model "/home/develop/workspace/install/share/butlerbot_localization"
[gzclient-2] [Err] [InsertModelWidget.cc:403] Missing model.config for model "/home/develop/workspace/install/share/butlerbot_navigation"
[gzclient-2] [Err] [InsertModelWidget.cc:403] Missing model.config for model "/home/develop/workspace/install/share/butlerbot_rmf"
[gzclient-2] [Err] [InsertModelWidget.cc:403] Missing model.config for model "/home/develop/workspace/install/share/butlerbot_rmf_fleet_adapter"
[gzclient-2] [Err] [InsertModelWidget.cc:403] Missing model.config for model "/home/develop/workspace/install/share/butlerbot_rmf_gazebo"
[gzclient-2] [Err] [InsertModelWidget.cc:403] Missing model.config for model "/home/develop/workspace/install/share/colcon-core"

Cause

  • The default GAZEBO_MODEL_PATH have included directories that do not contain valid model files or configurations, causing Gazebo to throw errors.

  • default $GAZEBO_MODEL_PATH variable value

echo $GAZEBO_MODEL_PATH 
/home/develop/workspace/install/share

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.