Norlab controllers ROS is a set of ROS packages enabling path following for uncrewed ground vehicles (UGVs).
This repository also includes the norlab_controllers python library providing an implementation of various popular controllers.
The goal of this repository is to offer a lean and modular solution for UGV path following.
For installation, you need to clone the repository in your ROS 2 workspace, initialize its submodules and install the library:
cd <PATH_TO_YOUR_ROS2_WORKSPACE>/src/
git clone git@github.com:norlab-ulaval/norlab_controllers_ros.git
git submodule init
git submodule update
cd norlab_controllers_ros/norlab_controllers/
./install.sh
cd <PATH_TO_YOUR_ROS2_WORKSPACE>/src/
colcon build --symlink-install
source install/local_setup.bashThe main package, norlab_controllers_wrapper acts as a ROS2 action server.
The server receives target paths as actions sent by the client, these custom actions are defined in the norlab_custom_interfaces package.
Refer to our WILN package for a functional implementation of a action client.
A set of launch files are provided in the norlab_controllers_wrapper package.
These launch files allow to run the path-following nodes:
ros2 launch norlab_controllers_wrapper warthog_wheels_mpc_launch.xmlFor quick bootstrapping, the different services of WILN can be used to perform teach-and-repeat operation.
Controller parameters are defined and can be modified in the params folder.
Please note that the norlab_controllers_inspector could then be used to visualize and quantify the controller performance.
Controller parameters files are in the YAML format.
For faster tuning, you can build your ROS2 workspace with symbolic links to prevent the requirement to rebuild the workspace anytime you change a parameter or change a script.
colcon build --symlink-install