This Docker configuration is designed for the map-based hdl-localization package and the Long-Term Stability (LTS) points filter.
We precompiled a Docker image and hosted on our LCAS Docker Hub. In order to download it locally, you can login first in the server and then download it by using the following commands:
docker login lcas.lincoln.ac.uk -u lcas -p lincoln
docker pull lcas.lincoln.ac.uk/lts_filter
This step is recommended because the most time-efficient.
To use the Docker container, run the following command to build the package:
./build_docker.sh
Before launching the container, please make sure to set the correct ROS_MASTER_URI
in the docker-compose.yml
file.
To launch the map-based localization node, we need first to login into the container and then launch the node:
docker-compose up -d
In order to launch the pre-trained filter, please run in terminal the following:
./run_filter.sh
If you want to reconfigure the default point cloud topics for the filter, you can modify them in the run_filter.sh
script or pass them as arguments to the script.
NB:
Please note that the performance of the filter depends on the GPU. Real-time performance may not be feasible with less powerful GPUs.
To run the localizer, execute the following command:
./run_localizer.sh -C <CLOUD_TOPIC>
Replace <CLOUD_TOPIC> with the topic that will be used for localization, either the raw or the filtered topic.
The robot's pose within the map is exposed in the /ndt/odom
topic, while a transformation map -> /ndt_odom
is published on the tf_tree
to not interfere with an alternative localization method (e.g., RTK-GPS).
For setting the initial robot pose within the map, it is recommended to use RVIZ's 2D Pose Estimate functionality. RVIZ visualisation configurations can be found in the config folder:
rviz -d config/hdl_localization.rviz
You can find rosbags that can be used to test the filter.
After you finish working with the container, please shut it down using the following command:
docker-compose down