Skip to content
Osita16Public

About

A medicine delivery bot simulating real- world hospital delivery tasks

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

Medibot – Autonomous Hospital Delivery Robot

πŸš€ An end-to-end ROS2 autonomous mobile robot for hospital logistics

Medibot is designed to simulate real-world hospital delivery tasks where a robot can autonomously navigate from a pharmacy to patient rooms using modern robotics algorithms.

πŸ”₯ Complete Robotics Pipeline: Simulation β†’ SLAM Mapping β†’ Localization β†’ Autonomous Navigation


image

πŸ”„ System Pipeline

Gazebo β†’ SLAM β†’ Map β†’ AMCL β†’ Nav2 β†’ Goal Navigation
Stage Description
🧠 Simulation Robot spawned in Gazebo hospital environment
πŸ—ΊοΈ SLAM Builds map of unknown environment
πŸ’Ύ Map Saving Stores occupancy grid
πŸ“ Localization AMCL estimates robot pose
🧭 Planning Nav2 computes optimal path
πŸš€ Execution Robot navigates autonomously

πŸš€ Features

  • πŸ€– Custom differential drive robot (URDF/Xacro)
  • πŸ₯ Hospital simulation environment (Gazebo)
  • 🧭 Autonomous navigation using Nav2
  • πŸ—ΊοΈ SLAM-based mapping (SLAM Toolbox)
  • πŸ“ AMCL-based localization
  • 🎯 Goal-based navigation (RViz + CLI)

πŸ› οΈ Tech Stack

Category Tools
Framework ROS2 Humble
Simulation Gazebo
Navigation Nav2
Mapping SLAM Toolbox
Language Python

πŸ“ Project Structure

medibot_ws/
└── src/
    β”œβ”€β”€ medibot_description/
    β”œβ”€β”€ medibot_gazebo/
    β”œβ”€β”€ medibot_navigation/
    └── aws-robomaker-hospital-world/

βš™οΈ Installation

sudo apt update
sudo apt install \
  ros-humble-gazebo-ros-pkgs \
  ros-humble-navigation2 \
  ros-humble-nav2-bringup \
  ros-humble-slam-toolbox

▢️ How to Run (Copy-Paste Ready)

⚠️ Open 5 terminals and run commands in order.


🟒 Terminal 1 β€” Launch Simulation

source /opt/ros/humble/setup.bash
source ~/medibot_ws/install/setup.bash

export GAZEBO_MODEL_PATH=~/medibot_ws/src/aws-robomaker-hospital-world/models

ros2 launch medibot_gazebo sim.launch.py

🟒 Terminal 2 β€” Launch SLAM

source /opt/ros/humble/setup.bash
source ~/medibot_ws/install/setup.bash

ros2 launch nav2_bringup slam_launch.py use_sim_time:=true

🟒 Terminal 3 β€” Open RViz

source /opt/ros/humble/setup.bash

rviz2

🟒 RViz Setup

Set:

Fixed Frame β†’ map

Add:

  • TF
  • LaserScan β†’ /scan
  • Map β†’ /map

🟒 Terminal 4 β€” Teleop Robot

source /opt/ros/humble/setup.bash
source ~/medibot_ws/install/setup.bash

ros2 run teleop_twist_keyboard teleop_twist_keyboard

Control Keys:

i β†’ forward
k β†’ stop
j β†’ left
l β†’ right

🟒 Save Map

After exploring environment:

ros2 run nav2_map_server map_saver_cli -f ~/medibot_map

🟒 Terminal 5 β€” Autonomous Navigation

Stop SLAM first, then run:

source /opt/ros/humble/setup.bash
source ~/medibot_ws/install/setup.bash

ros2 launch nav2_bringup navigation_launch.py \
use_sim_time:=true \
map:=~/medibot_map.yaml

🎯 Navigation in RViz

  1. Click 2D Pose Estimate
  2. Set robot pose
  3. Click Nav2 Goal
  4. Select destination

Robot will autonomously navigate to target location.


πŸ” Debugging Commands

Check LaserScan

ros2 topic echo /scan

Check Odometry

ros2 topic echo /odom

Check TF Tree

ros2 run tf2_tools view_frames

βœ… Expected Working Topics

/scan
/odom
/map
/tf
/cmd_vel

πŸ” SLAM Mode (Optional – First Time Mapping)

ros2 launch nav2_bringup slam_launch.py use_sim_time:=true

Save map:

ros2 run nav2_map_server map_saver_cli -f ~/medibot_map

🎯 Set Navigation Goals (CLI)

ros2 topic pub --once /goal_pose geometry_msgs/msg/PoseStamped "
header:
  frame_id: 'map'
pose:
  position:
    x: 7.0
    y: -7.0
  orientation:
    w: 1.0"

πŸ₯ Example Tasks

Task From To
πŸ’Š Pharmacy β†’ Room 1 (-7, -7) (7, -7)
πŸ’Š Pharmacy β†’ Room 2 (-7, -7) (7, 7)

πŸ€– Robot Specifications

  • Differential drive mobile robot
  • 360Β° LiDAR (0.1m – 12m range)
  • Max speed: 0.26 m/s
  • Angular velocity: 1.0 rad/s

🧭 Navigation Stack

  • Global Planner β†’ NavFn
  • Local Planner β†’ DWB Controller
  • Localization β†’ AMCL
  • Recovery β†’ Spin, Backup

πŸ’‘ Why This Project?

  • Demonstrates full robotics autonomy pipeline
  • Combines perception, localization, and planning
  • Real-world hospital automation use-case
  • Strong portfolio project for robotics roles

🚧 Future Improvements

  • Camera + YOLO integration πŸ€–
  • Multi-goal scheduling
  • Multi-robot coordination
  • Dynamic obstacle handling
  • Real robot deployment

⭐ If you like this project

Give it a ⭐ on GitHub β€” it helps a lot!


πŸ“œ License

Apache License 2.0


πŸ™ Acknowledgments

  • ROS2 Nav2
  • SLAM Toolbox
  • Gazebo

About

A medicine delivery bot simulating real- world hospital delivery tasks

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages