- Notifications
You must be signed in to change notification settings - Fork1
norlab-ulaval/wiln
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
WILN is a teach-and-repeat framework relying on lidar-based navigation to perform autonomous route repeating. This is the framework that was used in the"Kilometer-scale autonomous navigation in subarctic forests: challenges and lessons learned" field report. An overview of the system demonstration is presented in the following video :
The WILN system interfaces two libraries/packages:libpointmatcher withnorlab_icp_mapper for simultaneous localization and mapping andGeRoNa for path-following control.
First, in your local repositories directory, clone and buildnorlab_icp_mapper:
cd&&cd repos/git clone git@github.com:ethz-asl/libpointmatcher.git&&cd libpointmatcher/mkdir build/&&cd build/cmake -DCMAKE_BUILD_TYPE=Release ..make -j 6sudo make installcd&&cd reposgit clone git@github.com:norlab-ulaval/norlab_icp_mapper.git&&cd norlab_icp_mapper/mkdir build/&&cd build/cmake -DCMAKE_BUILD_TYPE=Release ..make -j 6sudo make install
Then, in your ROS catkin workspace, add the ROS packages to perform SLAM
cd&&cd catkin_ws/srcgit clone git@github.com:norlab-ulaval/norlab_icp_mapper_ros.gitgit clone git@github.com:norlab-ulaval/libpointmatcher_ros.gitgit clone git@github.com:norlab-ulaval/pointcloud_motion_deskew.gitgit clone git@github.com:norlab-ulaval/odom_to_pose_converter.gitcd ..&& catkin_make
GeRoNa is a collection of ROS packages, which can be installed along with their dependencies this way:
First, install the dependencies. For example, from your workspace root directory:
cd&&cd catkin_ws/srcgit clone https://github.com/cogsys-tuebingen/cslibs_path_planninggit clone https://github.com/cogsys-tuebingen/cslibs_navigation_utilitiessudo apt install libalglib-devgit clone https://github.com/cogsys-tuebingen/gerona.gitcd ..rosdep install --from-paths -i -r -y srccatkin_make
General note : This assumes that you already have standardtimestamped lidar scan,imu and general odometry nodes running.
Two distinct configuration files are required. The first ones are intended to define the path following parameters, multiple examples can be found in theparams/controller directory. For an extensive definition of parameters, please refer to theGeRoNa wiki.
The second ones define the registration parameters and filters for the SLAM algorithm. A working example can be found in theparams/icp directory. For more details on mapping parameters, please refer to thenorlab_icp_mapper_ros repository.
General launch files will launch the various nodes required for navigation. They will also import the aforementioned parameters. Alaunch file example is given.
The framework is divided into two phases: teach and repeat. During the teach phase, an operator drives the robot along a desired route. The robot simultaneously localizes and builds a map of the environment. All robot poses are logged and represent the reference trajectory.
During the repeat phase, the robot repeats a given route. This route can either be a map that has just been recorder or a loaded map that was saved on disk. During this phase, the system registers point clouds to the map to localize but does not update the map.
The following table lists the various ROS services that enable the teach-and-repeat framework:
| Service name | Description | Parameters |
|---|---|---|
| /start_recording | Starts recording poses to build the reference map (cannot be called if another trajectory is already loaded). | None |
| /stop_recording | Stops the trajectory recording (cannot be called is the recording was not started). | None |
| /play_line | Starts the repeat phase. The robot will repeat the trajectory backwards if it is located at it's end and the system supports both forwards or reverse motion. | None |
| /play_loop | Starts the repeat phase for a loop trajectory. | nb_loops (uint32) |
| /cancel_trajectory | Cancels the current repeat phase in the event of system failure. | None |
| /clear_trajectory | Clears the current trajectory from active memory. | None |
| /smooth_trajectory | Smooths the current trajectory using a low-pass filter. | None |
| /flip_trajectory | Flips the orientations of all the poses in the trajectory, without altering their order. | None |
| /reverse_trajectory | Reverses the order of the poses in the trajectory, without altering their orientation. | None |
| /save_map_traj | Saves the current map and trajectory in a.ltr file. | file_name (string) |
| /load_map_traj | loads a specicied.ltr file. Assumes the robot is at the start of the trajectory. | file_name (string) |
| /load_map_traj_from_end | loads a specicied.ltr file. Assumes the robot is at the en of the trajectory. | file_name (string) |
If you use wiln in an academic context, please citeour article:
@article{Baril2022,doi ={10.55417/fr.2022050},url ={https://doi.org/10.55417/fr.2022050},year ={2022},month = mar,publisher ={Field Robotics Publication Society},volume ={2},number ={1},pages ={1628--1660},author ={Dominic Baril and Simon-Pierre Desch{\^{e}}nes and Olivier Gamache and Maxime Vaidis and Damien LaRocque and Johann Laconte and Vladim{\'{\i}}r Kubelka and Philippe Gigu{\`{e}}re and Fran{\c{c}}ois Pomerleau},title ={Kilometer-scale autonomous navigation in subarctic forests: challenges and lessons learned},journal ={Field Robotics}}
About
A lidar-based Teach-and-Repeat framework designed to enable outdoor autonomous navigation in harsh weather.
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Contributors10
Uh oh!
There was an error while loading.Please reload this page.
