A ROS-based project demonstrating an autonomous floor-cleaning robot that maps its environment, plans coverage paths, and detects/relocates objects in its path using a TurtleBot3 Waffle Pi with an OpenManipulator-X arm. The robot is simulated in Gazebo, using SLAM to generate an occupancy grid map, and Python scripts to execute a boustrophedon coverage algorithm and a simple obstacle-handling routine.
This repository contains launch files, Python scripts, and configuration files to simulate a TurtleBot3 Waffle Pi equipped with an OpenManipulator-X. The robot autonomously navigates, maps the environment, and can pick or relocate objects detected via LiDAR.
- Gazebo Simulation of TurtleBot3 Waffle Pi + OpenManipulator-X
- 2D SLAM with the
map_serverfor occupancy grids - Boustrophedon Coverage algorithm for systematic floor cleaning
- Object Detection and Manipulation via simple Inverse Kinematics (IK)
- Integration with
roslaunchfor quick startup
- Ubuntu 20.04 or similar (ROS Noetic recommended)
- TurtleBot3 packages (
turtlebot3,turtlebot3_manipulation_*, etc.) - MoveIt! for motion planning
- Gazebo (version matching your ROS distribution)
- Python 3
- map_server for serving the occupancy grid map
Install typical dependencies (adjust for your ROS version/distro):
sudo apt-get update
sudo apt-get install ros-noetic-turtlebot3 ros-noetic-turtlebot3-manipulation \
ros-noetic-turtlebot3-manipulation-gazebo \
ros-noetic-map-server ros-noetic-moveit- Clone this repository into your ROS workspace:
cd ~/catkin_ws/src git clone https://github.com/anirudhgudi/FCleanBOT.git
2. **Build** the workspace:
```bash
cd ~/catkin_ws
catkin_make
source devel/setup.bash
- Verify that you have:
- A
home.pgmmap in your repository coverage.pyandobs_manipu.pyscripts- The
turtlebot3_manipulation_*packages installed
- A
Below is the typical sequence of commands to bring up the robot in Gazebo, load the map, start MoveIt! for motion planning, and run the coverage and obstacle-handling scripts.
- Launch the Gazebo simulation for TurtleBot3 + OpenManipulator:
roslaunch turtlebot3_manipulation_gazebo turtlebot3_manipulation_gazebo.launch
- Run the map server to provide the occupancy grid:
rosrun map_server map_server home.pgm
- Bring up the robot manipulation layers:
roslaunch turtlebot3_manipulation_bringup turtlebot3_manipulation_bringup.launch
- Start MoveIt! for arm motion planning:
roslaunch turtlebot3_manipulation_moveit_config move_group.launch
- Execute the coverage script (boustrophedon path planning):
python coverage.py
- Run the obstacle-handling script (pick-and-place routine):
python obs_manipu.py
Tip: These commands typically require separate terminals, or use a tool like
tmuxto organize your sessions. Make sure each terminal has sourced your workspace (source ~/catkin_ws/devel/setup.bash).
A simplified directory layout:
fcleanbot/
├── launch/
│ ├── turtlebot3_manipulation_gazebo.launch
│ ├── turtlebot3_manipulation_bringup.launch
│ └── ...
├── maps/
│ └── home.pgm
├── scripts/
│ ├── coverage.py # Boustrophedon coverage
│ ├── obs_manipu.py # Obstacle detection & manipulation
├── README.md
└── ...
launch/: Contains the main ROS launch files.maps/: Holds the occupancy grid (.pgm) formap_server.scripts/: Python nodes for coverage path planning and object-handling.turtlebot3_manipulation_moveit_config/: MoveIt! config files.
Contributions are welcome! Feel free to open an issue or submit a pull request for:
- Bug fixes
- Additional features (e.g., advanced vision-based object recognition)
- Documentation improvements
Below are some snapshots of the robot in action:


