- Installation
- Description
- Usage
- Roadmap
First go to the src file of your repository and download the package:
git clone https://github.com/RoboBreizh-RoboCup-Home/navigation_pepper
chmod +x ./install.sh && ./install.sh
This package perform a 3d map of the environment given a pointcloud. The 3D map can then be projected to get a 2D map and perform navigation. The package has a function to cut the floor but requires a horizontal plane which can't be acquired. To overcome this issue, we use another function that allows to cut the floor at a certain level from the robot feet.
Mapping
First you need to go at the root of your workspace, compile the package and source it : catkin_make && source devel/setup.bash
From there , there is 3 things to do :
- in one terminal (on the robot or your local machine) start the mapping node :
roslaunch octopep_mapping mapping_3d.launch z_min:=0.3 z_max:=1.6
- in one terminal on your local machine start a node to control the robot :
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
- in one terminal on your local machine start rviz to see what happens :
rviz rviz -d `rospack find octopep_mapping`/config/octo_mapping.rviz
Now you can navigate around the room to generate the map.
Once you are satisfied with the generated map you might want to save it.
Save octomap 3d projected map :
rosrun map_server map_saver -f octomap_projection map:=/projected_map
Save octomap 3d map :
rosrun octomap_server octomap_saver -f mapfile.bt
This map can be reused when starting the mapping node, look at the mapping.sh script in octopep_mapping package if you are interested.
Rviz startup with a config file but if you want to add any topic to visualize you can do : Add -> By topic -> Choose whatever suits your needs 👌
To use it, you need to click on the terminal window first.
Then you should scale down robot speed a little bit using z
Once the proper speed is set, you can start moving it using :
- i ⬆️
- j ↪️
- k (stop)
- l ↩️
Sometimes instructions doesn't work. If this happpens spam k
and another key. It will eventually work.
You can use the other keys prompt on the terminal as well.
Navigation
-
go at the root of your workspace, compile the package and source it :
catkin_make && source devel/setup.bash
-
Start navigation node :
roslaunch navigation_pep base_nav.launch
-
Then in another terminal open rviz :
rviz rviz -d `rospack find navigation`/config/rviz_config/nav.rviz
Now you are ready to navigate by using the 2D Nav Goal button. Click on the button then on the map in rviz to give a goal location.
-
go at the root of your workspace, compile the package and source it :
catkin_make && source devel/setup.bash
-
Start navigation node :
roslaunch navigation_pep teb_navigation.launch
-
Then in another terminal open rviz :
rviz rviz -d `rospack find navigation`/config/rviz_config/nav.rviz
now you can use rviz to navigate as seen in the section above or send the position via the service
First make sure teb_navigation node is running.
To enable sending a navigation goal to the robot you can use the navigation_pep/scripts/navigation_server.py
service file using :
rosrun navigation_pep navigation_server.py
Then you can send a message to the service with the type described under navigation_pep/srv/NavigationDestination.srv
To test it you can also run rosrun navigation_pep test_navigation_srv.py
✔️ Mapping using octomap
❌ Mapping using rtab
❌ Mapping using cartographer
✔️ Navigation using Base local planner
❌ Navigation using Dwa local planner and Navfn
✔️ Navigation using Teb local planner
If you use this project, please consider citing:
@incollection{buche2023robocup,
title={RoboCup@ Home SSPL Champion 2023: RoboBreizh, a Fully Embedded Approach},
author={Buche, C{\'e}dric and Neau, Ma{\"e}lic and Ung, Thomas and Li, Louis and Wang, Sinuo and Bono, C{\'e}dric Le},
booktitle={Robot World Cup},
pages={374--385},
year={2023},
publisher={Springer}
}