Skip to content

Ahmed-M0ataz/waiter_robot_stvl_octomap_navigation

Repository files navigation

Waiter Robot Graduation Project

First: Robot Description Package

  1. Write a URDF for the robot using XML and use xacro to make the code in separate files for readability.

    • Image: Robot
  2. Git Gazebo environment with real-world problems to ensure accurate navigation.

    • World includes:
      • Tables (challenge in 2D mapping and navigation with a tall robot)
      • People walking in the environment (dynamic environment challenge in navigation stack)
      • Glass (laser scan can't detect glasses)
  3. Write a launch file to launch Gazebo and spawn the robot.

    roslaunch waiter_robot_description_pkg robot_description.launch
  • Image: Gazebo

Second: Build Map

  1. Implement Gmapping to build a 2D map. Robot Mapping
  • Problems with 2D map:
    • Laser can't detect glasses or edges for tables.

      Robot navigation

  1. Explore 3D mapping options like Octo-map

Frist: Octomap

-links help for make octomap 1- octomapping tutorial 2- octomap with navigation 3- install for grid map 4- install octomap

  • Octomap installation and mapping instructions.
    sudo apt-get install ros-noetic-octomap    
    sudo apt-get install ros-noetic-octomap-mapping
    sudo apt-get install ros-noetic-octomap-msgs

Mapping with Octomap

  1. First, run the robot description package:
    roslaunch waiter_robot_description_pkg robot_description.launch
  1. Next, run navigation with a 2D map to make the robot move and build the map:
    roslaunch waiter_robot_navigation_pkg waiter_navigation.launch --screen 2> >(grep -Ev 'TF_REPEATED_DATA|buffer_core.cpp' | grep -v '^$')
  1. Run Octomap mapping:
    roslaunch waiter_robot_octomap_pkg octomap_mapping.launch --screen 2> >(grep -Ev 'TF_REPEATED_DATA|buffer_core.cpp' | grep -v '^$')

octo mapping

  1. After mapping with Octomap, save the generated map:
    rosrun octomap_server octomap_saver -f name_of_map.bt

You can save it as a binary (.bt) or probabilistic (.ot) map.

  1. To integrate this map into the navigation stack like a global planner, convert it to a PGM map:
    1. Run the node to convert the map to PGM:
        roslaunch waiter_robot_octomap_pkg octomap_to_gridmap.launch
2. Run the map server to save the grid map:
        rosrun map_server map_saver --occ 60 --free 5 -f my_map_3 map:=/grid_map_visualization/elevation_grid

After experimentation, the optimal threshold for occupied and free cells is 60.

map 3D

web based navigation

Navigation

Navigation Based on Octomap and STVL

1- Navigation is robust in tables or the kitchen but may fail when people come or when the map changes.

2- Spatio Temporal Voxel Layer (STVL) Algorithm

An algorithm for real-time 3D obstacle avoidance.

  • Operates at nearly 400% less CPU load compared to voxel layer.
  • Used in various environments globally.
  • Suited for real-time collision avoidance.

3- Octomap

Powerful octree implementation for 3D mapping. Can build navigation and collision avoidance on top of Octomap’s octree.

  • Memory-efficient solution for real-time collision avoidance applications.

  • Navigation with stvl and octomap

navigation octomap

Web based Navigation

  • use React To build the website

  • Use Ros bridge to link web site with ROS

sudo apt-get install ros-<rosdistro>-rosbridge-server

web based navigation

Video explain :

waiter robot navigation video

About

hospitality robot navigation with stvl and octomap

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages