Program a home service robot that can autonomously map an environment and navigate to pickup and deliver objects.
Github repo https://github.com/gwwang16/Home-Service-Robot
Home Service Robot
Ubuntu 16.04 + ROS Kinetic
- Design a simple environment with the Building Editor in Gazebo.
- Teleoperate robot and manually test SLAM.
- Create a wall_follower node that autonomously drives robot to map environment.
- Use the ROS navigation stack and manually commands robot using the 2D Nav Goal arrow in rviz to move to 2 different desired positions and orientations.
- Write a pick_objects node that commands robot to move to the desired pickup and drop off zones.
- Write an add_markers node that subscribes to robot odometry, keeps track of robot pose, and publishes markers to rviz.
If you do not have an active ROS workspace, you can create one by:
$ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/ $ catkin_make
Clone this repo into the src directory of your workspace:
$ cd ~/catkin_ws/src $ git clone https://github.com/gwwang16/Home-Service-Robot.git
$ cd ~/catkin_ws $ sudo apt-get update $ rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y $ cd ~/catkin_ws/src/Home-Service-Robot/shellscripts $ chmod +x test_slam.sh $ chmod +x add_marker.sh $ chmod +x pick_objects.sh $ chmod +x wall_follower.sh $ chmod +x home_service.sh
Build the project:
$ cd ~/catkin_ws $ catkin_make
Manually test SLAM.
$ cd ~/catkin_ws/src/Home-Service-Robot/shellscripts $ ./test_slam.sh
Map the environment with wall following algorithm
$ cd ~/catkin_ws/src/Home-Service-Robot/shellscripts $ ./wall_follower.sh
Save the map to file
rosrun map_server map_saver -f ~/catkin_ws/src/Home-Service-Robot/homebot/world/my_map
Select the start and end positions using
rostopic echo /amcl_pose
It will display the pose info while you clicking any points on the map in rviz with
2D Pose Estimate button.
Map navigation based on the built map
$ cd ~/catkin_ws/src/Home-Service-Robot/shellscripts $ ./home_service.sh
Select the mode
0 - Auto mode, which would go to the start point and then to drop off position autonomously.
1 - Manual mode, you can select the predefined position as goal position for this robot.