This repository contains our implementation of the algorithms presented in our research report. These algorithms are derivated from the following works:
-
M. Levihn, M. Stilman, and H. Christensen. “Locally optimal navigation among movable obstacles in unknown environments”. In: 2014 IEEE-RAS International Conference on Humanoid Robots. Nov. 2014, pp. 86–91. DOI: 10.1109/HUMANOIDS.2014.7041342.
-
Hai-Ning Wu, M. Levihn, and M. Stilman. “Navigation Among Movable Obstacles in unknown environments”. In: 2010 IEEE/RSJ International Conference on Intelligent Robots and Systems. Oct.2010, pp. 1433–1438. DOI:10.1109/IROS.2010.5649744.
You will need a ROS to run this simulation. For this you can either:
-
Use a local install by following installation instructions from the original ROS documentation.
-
Use a Docker container so that you can easily dispose of ROS later. For this, follow instructions in our repository to launch a container with all required ROS dependencies (stop before the "Getting started with Pepper" section).
Open 4 separate bash sessions. If you use the Docker approach, do this by executing (of course after starting the container):
sudo docker exec -it <CONTAINER_NAME> bash
- Clone the present repository in the ~/catkin_ws/src directory
git clone https://github.com/Xia0ben/namo_navigation.git
- Install python dependencies by executing:
pip install --user -r ~/catkin_ws/src/namo_navigation/requirements.txt
- Build the ROS package:
cd ~/catkin_ws
catkin build
- Execute the following command in the 4 separate bash sessions to get the ROS autocompletion and library linking to work:
source devel/setup.bash
- Launch a roscore server in one bash session:
roscore
- Launch the map server:
roslaunch namo_navigation map_server.launch
- Launch the rviz visualization in another bash session:
rviz rviz -d $HOME/catkin_ws/src/namo_navigation/basic_simulator_rviz_config.rviz
- Finally, start the simulator code either by executing the "basic_simulator.py" file in your favorite IDE, or by executing the command:
python ~/catkin_ws/src/namo_navigation/src/basic_simulator.py
You can change the positions of obstacle by editing the main method of the same file.