This package enables the Clearpath Jackal robot to autonomously navigate through a multi-floor environment using an elevator. It utilizes Robot Operating System (ROS) and Gazebo simulation for development and testing.
- Navigation to goal points
- Getting in and out of elevator
- Switching maps for appropriate floors automatically
- Localize after map switching
Navigate Clearpath Jackal autonomously through a series of waypoints to starting from floor 0 and ending at floor 1, by navigating through obstacles and using the elevator in the provided simulation world.
Here, the numbers denote the waypoints as follows:
- Near fire hydrant floor 0:
(4.0,-5.0,0.5)
- In front of elevator floor 0:
(3.0,-0.5,0.5)
- Inside elevator floor 0:
(0.0,-0.5,0.5)
- Inside elevator floor 1:
(0.0,-0.5,3.2)
- In front of elevator floor 1:
(3.0,-0.5,3.2)
- Near fire hydrant floor 1:
(4.0,5.0,3.2)
Ensure you have the following ROS packages installed:
Jackal Gazebo Dependencies:
If using ROS melodic, run:
$ sudo apt-get install ros-melodic-jackal-*
- Create a ROS workspace:
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
- Clone this repository and the jackal elevator world repository:
$ git clone https://github.com/weijieyong/robot-multi-floor-navigation.git # for multi floor navigation
$ git clone https://bitbucket.org/swaroophs/jackal_elevator.git # for gazebo world
- Build the workspace:
$ cd ~/catkin_ws/
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash
This package utilizes the gmapping
package for generating maps within the simulation.
- Launch the gmapping node.
roslaunch multi_floor_navigation jackal_elevator_gmapping.launch
-
Use the
Interaction Marker
in RViz to move the robot and generate a map. -
Save the map for floor 0 using:
$ rosrun map_server map_saver -f <map_filename>.yaml
- Edit the z_pos parameter in jackal_elevator_gmapping.launch and repeat steps 1-3 to save a map for floor 1.
Note: Pre-generated maps for both floors are already available in the maps folder.
- Start the navigation nodes.
roslaunch multi_floor_navigation jackal_elevator_nav.launch
- Once the simulation is launched, run the following node to start navigating.
rosrun multi_floor_navigation multi_floor_navigation_node
The robot will then begin navigating between floors according to the defined waypoints.