Package Summary
Tags | No category tags. |
Version | 0.0.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | VT&R3 is a C++ implementation of the Teach and Repeat navigation framework. It enables a robot to be taught a network of traversable paths and then closely repeat any part of the network. |
Checkout URI | https://github.com/utiasasrl/vtr3.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-11 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | robotics slam |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- yuchen
Authors
VT&R3 Tactic (State Estimation)
Add a new pipeline
A pipeline is used to estimate motion and build map using various sensor data. The tactic (state estimation block) in VTR is sensor, robot and algorithm agnostic. In othe words, any pipeline can be plugged into VTR for odometry, localization and mapping.
To create a new pipeline: (TODO: this section is obsolete)
- add new header and implementation files in include and src.
- use the TemplatePipeline as a starting point to create the class of your pipeline.
- customize your pipeline to do the work following the instructions in TemplatePipeline.
- add the header file to pipelines.hpp.
- append the pipeline class to the
type_switch_
container in PipelineFactory. - if your pipeline needs to cache any intermediate data, such as image features or landmarks, put them in QueryCache. Take a look at the source code of this class and the stereo pipeline to see how it works.
- use modules to structure your pipeline and properly balance computation across data preprocessing, odometry and mapping, and localization. Note that data preprocessing. odometry and mapping, and localization are by default run in parallel. Feel free to use extra threads inside the pipeline to perform expensive operations such as keyframe optimization or data saving.
- create unit tests for your pipeline.
Add a new module
A module is a processing unit that should be created and called from a pipeline.
Suppose that you want to create a new module for the lidar pipeline
- Use the TemplateModule as a starting point to create the class of your module and put it inside the corresponding namespace, i.e. lidar.
- Copy TemplateModule header into the desired directory and rename it:
vtr_lidar/include/modules/<module name>.hpp
. Also create its implementation file (<module name>.cpp
) in the respective directory:vtr_lidar/src/modules/<module name>.cpp
- Change function templates in the copied TemplateModule.
- Add directory of the header file to
vtr_lidar/include/modules/modules.hpp
for convenience. - Register the new module in lidar pipline
vtr_lidar/src/pipeline.cpp: LidarPipeline::addModules()
. - If possible, create unit-tests for your module. Greatly appreciated.
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gtest | |
ament_lint_auto | |
rclcpp | |
tf2 | |
tf2_ros | |
tf2_eigen | |
sensor_msgs | |
nav_msgs | |
steam | |
vtr_logging | |
vtr_pose_graph | |
vtr_tactic_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged vtr_tactic at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | VT&R3 is a C++ implementation of the Teach and Repeat navigation framework. It enables a robot to be taught a network of traversable paths and then closely repeat any part of the network. |
Checkout URI | https://github.com/utiasasrl/vtr3.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-11 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | robotics slam |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- yuchen
Authors
VT&R3 Tactic (State Estimation)
Add a new pipeline
A pipeline is used to estimate motion and build map using various sensor data. The tactic (state estimation block) in VTR is sensor, robot and algorithm agnostic. In othe words, any pipeline can be plugged into VTR for odometry, localization and mapping.
To create a new pipeline: (TODO: this section is obsolete)
- add new header and implementation files in include and src.
- use the TemplatePipeline as a starting point to create the class of your pipeline.
- customize your pipeline to do the work following the instructions in TemplatePipeline.
- add the header file to pipelines.hpp.
- append the pipeline class to the
type_switch_
container in PipelineFactory. - if your pipeline needs to cache any intermediate data, such as image features or landmarks, put them in QueryCache. Take a look at the source code of this class and the stereo pipeline to see how it works.
- use modules to structure your pipeline and properly balance computation across data preprocessing, odometry and mapping, and localization. Note that data preprocessing. odometry and mapping, and localization are by default run in parallel. Feel free to use extra threads inside the pipeline to perform expensive operations such as keyframe optimization or data saving.
- create unit tests for your pipeline.
Add a new module
A module is a processing unit that should be created and called from a pipeline.
Suppose that you want to create a new module for the lidar pipeline
- Use the TemplateModule as a starting point to create the class of your module and put it inside the corresponding namespace, i.e. lidar.
- Copy TemplateModule header into the desired directory and rename it:
vtr_lidar/include/modules/<module name>.hpp
. Also create its implementation file (<module name>.cpp
) in the respective directory:vtr_lidar/src/modules/<module name>.cpp
- Change function templates in the copied TemplateModule.
- Add directory of the header file to
vtr_lidar/include/modules/modules.hpp
for convenience. - Register the new module in lidar pipline
vtr_lidar/src/pipeline.cpp: LidarPipeline::addModules()
. - If possible, create unit-tests for your module. Greatly appreciated.
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gtest | |
ament_lint_auto | |
rclcpp | |
tf2 | |
tf2_ros | |
tf2_eigen | |
sensor_msgs | |
nav_msgs | |
steam | |
vtr_logging | |
vtr_pose_graph | |
vtr_tactic_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged vtr_tactic at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | VT&R3 is a C++ implementation of the Teach and Repeat navigation framework. It enables a robot to be taught a network of traversable paths and then closely repeat any part of the network. |
Checkout URI | https://github.com/utiasasrl/vtr3.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-11 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | robotics slam |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- yuchen
Authors
VT&R3 Tactic (State Estimation)
Add a new pipeline
A pipeline is used to estimate motion and build map using various sensor data. The tactic (state estimation block) in VTR is sensor, robot and algorithm agnostic. In othe words, any pipeline can be plugged into VTR for odometry, localization and mapping.
To create a new pipeline: (TODO: this section is obsolete)
- add new header and implementation files in include and src.
- use the TemplatePipeline as a starting point to create the class of your pipeline.
- customize your pipeline to do the work following the instructions in TemplatePipeline.
- add the header file to pipelines.hpp.
- append the pipeline class to the
type_switch_
container in PipelineFactory. - if your pipeline needs to cache any intermediate data, such as image features or landmarks, put them in QueryCache. Take a look at the source code of this class and the stereo pipeline to see how it works.
- use modules to structure your pipeline and properly balance computation across data preprocessing, odometry and mapping, and localization. Note that data preprocessing. odometry and mapping, and localization are by default run in parallel. Feel free to use extra threads inside the pipeline to perform expensive operations such as keyframe optimization or data saving.
- create unit tests for your pipeline.
Add a new module
A module is a processing unit that should be created and called from a pipeline.
Suppose that you want to create a new module for the lidar pipeline
- Use the TemplateModule as a starting point to create the class of your module and put it inside the corresponding namespace, i.e. lidar.
- Copy TemplateModule header into the desired directory and rename it:
vtr_lidar/include/modules/<module name>.hpp
. Also create its implementation file (<module name>.cpp
) in the respective directory:vtr_lidar/src/modules/<module name>.cpp
- Change function templates in the copied TemplateModule.
- Add directory of the header file to
vtr_lidar/include/modules/modules.hpp
for convenience. - Register the new module in lidar pipline
vtr_lidar/src/pipeline.cpp: LidarPipeline::addModules()
. - If possible, create unit-tests for your module. Greatly appreciated.
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gtest | |
ament_lint_auto | |
rclcpp | |
tf2 | |
tf2_ros | |
tf2_eigen | |
sensor_msgs | |
nav_msgs | |
steam | |
vtr_logging | |
vtr_pose_graph | |
vtr_tactic_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged vtr_tactic at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | VT&R3 is a C++ implementation of the Teach and Repeat navigation framework. It enables a robot to be taught a network of traversable paths and then closely repeat any part of the network. |
Checkout URI | https://github.com/utiasasrl/vtr3.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-11 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | robotics slam |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- yuchen
Authors
VT&R3 Tactic (State Estimation)
Add a new pipeline
A pipeline is used to estimate motion and build map using various sensor data. The tactic (state estimation block) in VTR is sensor, robot and algorithm agnostic. In othe words, any pipeline can be plugged into VTR for odometry, localization and mapping.
To create a new pipeline: (TODO: this section is obsolete)
- add new header and implementation files in include and src.
- use the TemplatePipeline as a starting point to create the class of your pipeline.
- customize your pipeline to do the work following the instructions in TemplatePipeline.
- add the header file to pipelines.hpp.
- append the pipeline class to the
type_switch_
container in PipelineFactory. - if your pipeline needs to cache any intermediate data, such as image features or landmarks, put them in QueryCache. Take a look at the source code of this class and the stereo pipeline to see how it works.
- use modules to structure your pipeline and properly balance computation across data preprocessing, odometry and mapping, and localization. Note that data preprocessing. odometry and mapping, and localization are by default run in parallel. Feel free to use extra threads inside the pipeline to perform expensive operations such as keyframe optimization or data saving.
- create unit tests for your pipeline.
Add a new module
A module is a processing unit that should be created and called from a pipeline.
Suppose that you want to create a new module for the lidar pipeline
- Use the TemplateModule as a starting point to create the class of your module and put it inside the corresponding namespace, i.e. lidar.
- Copy TemplateModule header into the desired directory and rename it:
vtr_lidar/include/modules/<module name>.hpp
. Also create its implementation file (<module name>.cpp
) in the respective directory:vtr_lidar/src/modules/<module name>.cpp
- Change function templates in the copied TemplateModule.
- Add directory of the header file to
vtr_lidar/include/modules/modules.hpp
for convenience. - Register the new module in lidar pipline
vtr_lidar/src/pipeline.cpp: LidarPipeline::addModules()
. - If possible, create unit-tests for your module. Greatly appreciated.
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gtest | |
ament_lint_auto | |
rclcpp | |
tf2 | |
tf2_ros | |
tf2_eigen | |
sensor_msgs | |
nav_msgs | |
steam | |
vtr_logging | |
vtr_pose_graph | |
vtr_tactic_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged vtr_tactic at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | VT&R3 is a C++ implementation of the Teach and Repeat navigation framework. It enables a robot to be taught a network of traversable paths and then closely repeat any part of the network. |
Checkout URI | https://github.com/utiasasrl/vtr3.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-11 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | robotics slam |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- yuchen
Authors
VT&R3 Tactic (State Estimation)
Add a new pipeline
A pipeline is used to estimate motion and build map using various sensor data. The tactic (state estimation block) in VTR is sensor, robot and algorithm agnostic. In othe words, any pipeline can be plugged into VTR for odometry, localization and mapping.
To create a new pipeline: (TODO: this section is obsolete)
- add new header and implementation files in include and src.
- use the TemplatePipeline as a starting point to create the class of your pipeline.
- customize your pipeline to do the work following the instructions in TemplatePipeline.
- add the header file to pipelines.hpp.
- append the pipeline class to the
type_switch_
container in PipelineFactory. - if your pipeline needs to cache any intermediate data, such as image features or landmarks, put them in QueryCache. Take a look at the source code of this class and the stereo pipeline to see how it works.
- use modules to structure your pipeline and properly balance computation across data preprocessing, odometry and mapping, and localization. Note that data preprocessing. odometry and mapping, and localization are by default run in parallel. Feel free to use extra threads inside the pipeline to perform expensive operations such as keyframe optimization or data saving.
- create unit tests for your pipeline.
Add a new module
A module is a processing unit that should be created and called from a pipeline.
Suppose that you want to create a new module for the lidar pipeline
- Use the TemplateModule as a starting point to create the class of your module and put it inside the corresponding namespace, i.e. lidar.
- Copy TemplateModule header into the desired directory and rename it:
vtr_lidar/include/modules/<module name>.hpp
. Also create its implementation file (<module name>.cpp
) in the respective directory:vtr_lidar/src/modules/<module name>.cpp
- Change function templates in the copied TemplateModule.
- Add directory of the header file to
vtr_lidar/include/modules/modules.hpp
for convenience. - Register the new module in lidar pipline
vtr_lidar/src/pipeline.cpp: LidarPipeline::addModules()
. - If possible, create unit-tests for your module. Greatly appreciated.
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gtest | |
ament_lint_auto | |
rclcpp | |
tf2 | |
tf2_ros | |
tf2_eigen | |
sensor_msgs | |
nav_msgs | |
steam | |
vtr_logging | |
vtr_pose_graph | |
vtr_tactic_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged vtr_tactic at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | VT&R3 is a C++ implementation of the Teach and Repeat navigation framework. It enables a robot to be taught a network of traversable paths and then closely repeat any part of the network. |
Checkout URI | https://github.com/utiasasrl/vtr3.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-11 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | robotics slam |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- yuchen
Authors
VT&R3 Tactic (State Estimation)
Add a new pipeline
A pipeline is used to estimate motion and build map using various sensor data. The tactic (state estimation block) in VTR is sensor, robot and algorithm agnostic. In othe words, any pipeline can be plugged into VTR for odometry, localization and mapping.
To create a new pipeline: (TODO: this section is obsolete)
- add new header and implementation files in include and src.
- use the TemplatePipeline as a starting point to create the class of your pipeline.
- customize your pipeline to do the work following the instructions in TemplatePipeline.
- add the header file to pipelines.hpp.
- append the pipeline class to the
type_switch_
container in PipelineFactory. - if your pipeline needs to cache any intermediate data, such as image features or landmarks, put them in QueryCache. Take a look at the source code of this class and the stereo pipeline to see how it works.
- use modules to structure your pipeline and properly balance computation across data preprocessing, odometry and mapping, and localization. Note that data preprocessing. odometry and mapping, and localization are by default run in parallel. Feel free to use extra threads inside the pipeline to perform expensive operations such as keyframe optimization or data saving.
- create unit tests for your pipeline.
Add a new module
A module is a processing unit that should be created and called from a pipeline.
Suppose that you want to create a new module for the lidar pipeline
- Use the TemplateModule as a starting point to create the class of your module and put it inside the corresponding namespace, i.e. lidar.
- Copy TemplateModule header into the desired directory and rename it:
vtr_lidar/include/modules/<module name>.hpp
. Also create its implementation file (<module name>.cpp
) in the respective directory:vtr_lidar/src/modules/<module name>.cpp
- Change function templates in the copied TemplateModule.
- Add directory of the header file to
vtr_lidar/include/modules/modules.hpp
for convenience. - Register the new module in lidar pipline
vtr_lidar/src/pipeline.cpp: LidarPipeline::addModules()
. - If possible, create unit-tests for your module. Greatly appreciated.
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gtest | |
ament_lint_auto | |
rclcpp | |
tf2 | |
tf2_ros | |
tf2_eigen | |
sensor_msgs | |
nav_msgs | |
steam | |
vtr_logging | |
vtr_pose_graph | |
vtr_tactic_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged vtr_tactic at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | VT&R3 is a C++ implementation of the Teach and Repeat navigation framework. It enables a robot to be taught a network of traversable paths and then closely repeat any part of the network. |
Checkout URI | https://github.com/utiasasrl/vtr3.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-11 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | robotics slam |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- yuchen
Authors
VT&R3 Tactic (State Estimation)
Add a new pipeline
A pipeline is used to estimate motion and build map using various sensor data. The tactic (state estimation block) in VTR is sensor, robot and algorithm agnostic. In othe words, any pipeline can be plugged into VTR for odometry, localization and mapping.
To create a new pipeline: (TODO: this section is obsolete)
- add new header and implementation files in include and src.
- use the TemplatePipeline as a starting point to create the class of your pipeline.
- customize your pipeline to do the work following the instructions in TemplatePipeline.
- add the header file to pipelines.hpp.
- append the pipeline class to the
type_switch_
container in PipelineFactory. - if your pipeline needs to cache any intermediate data, such as image features or landmarks, put them in QueryCache. Take a look at the source code of this class and the stereo pipeline to see how it works.
- use modules to structure your pipeline and properly balance computation across data preprocessing, odometry and mapping, and localization. Note that data preprocessing. odometry and mapping, and localization are by default run in parallel. Feel free to use extra threads inside the pipeline to perform expensive operations such as keyframe optimization or data saving.
- create unit tests for your pipeline.
Add a new module
A module is a processing unit that should be created and called from a pipeline.
Suppose that you want to create a new module for the lidar pipeline
- Use the TemplateModule as a starting point to create the class of your module and put it inside the corresponding namespace, i.e. lidar.
- Copy TemplateModule header into the desired directory and rename it:
vtr_lidar/include/modules/<module name>.hpp
. Also create its implementation file (<module name>.cpp
) in the respective directory:vtr_lidar/src/modules/<module name>.cpp
- Change function templates in the copied TemplateModule.
- Add directory of the header file to
vtr_lidar/include/modules/modules.hpp
for convenience. - Register the new module in lidar pipline
vtr_lidar/src/pipeline.cpp: LidarPipeline::addModules()
. - If possible, create unit-tests for your module. Greatly appreciated.
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gtest | |
ament_lint_auto | |
rclcpp | |
tf2 | |
tf2_ros | |
tf2_eigen | |
sensor_msgs | |
nav_msgs | |
steam | |
vtr_logging | |
vtr_pose_graph | |
vtr_tactic_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged vtr_tactic at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | VT&R3 is a C++ implementation of the Teach and Repeat navigation framework. It enables a robot to be taught a network of traversable paths and then closely repeat any part of the network. |
Checkout URI | https://github.com/utiasasrl/vtr3.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-11 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | robotics slam |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- yuchen
Authors
VT&R3 Tactic (State Estimation)
Add a new pipeline
A pipeline is used to estimate motion and build map using various sensor data. The tactic (state estimation block) in VTR is sensor, robot and algorithm agnostic. In othe words, any pipeline can be plugged into VTR for odometry, localization and mapping.
To create a new pipeline: (TODO: this section is obsolete)
- add new header and implementation files in include and src.
- use the TemplatePipeline as a starting point to create the class of your pipeline.
- customize your pipeline to do the work following the instructions in TemplatePipeline.
- add the header file to pipelines.hpp.
- append the pipeline class to the
type_switch_
container in PipelineFactory. - if your pipeline needs to cache any intermediate data, such as image features or landmarks, put them in QueryCache. Take a look at the source code of this class and the stereo pipeline to see how it works.
- use modules to structure your pipeline and properly balance computation across data preprocessing, odometry and mapping, and localization. Note that data preprocessing. odometry and mapping, and localization are by default run in parallel. Feel free to use extra threads inside the pipeline to perform expensive operations such as keyframe optimization or data saving.
- create unit tests for your pipeline.
Add a new module
A module is a processing unit that should be created and called from a pipeline.
Suppose that you want to create a new module for the lidar pipeline
- Use the TemplateModule as a starting point to create the class of your module and put it inside the corresponding namespace, i.e. lidar.
- Copy TemplateModule header into the desired directory and rename it:
vtr_lidar/include/modules/<module name>.hpp
. Also create its implementation file (<module name>.cpp
) in the respective directory:vtr_lidar/src/modules/<module name>.cpp
- Change function templates in the copied TemplateModule.
- Add directory of the header file to
vtr_lidar/include/modules/modules.hpp
for convenience. - Register the new module in lidar pipline
vtr_lidar/src/pipeline.cpp: LidarPipeline::addModules()
. - If possible, create unit-tests for your module. Greatly appreciated.
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gtest | |
ament_lint_auto | |
rclcpp | |
tf2 | |
tf2_ros | |
tf2_eigen | |
sensor_msgs | |
nav_msgs | |
steam | |
vtr_logging | |
vtr_pose_graph | |
vtr_tactic_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged vtr_tactic at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | VT&R3 is a C++ implementation of the Teach and Repeat navigation framework. It enables a robot to be taught a network of traversable paths and then closely repeat any part of the network. |
Checkout URI | https://github.com/utiasasrl/vtr3.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-11 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | robotics slam |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- yuchen
Authors
VT&R3 Tactic (State Estimation)
Add a new pipeline
A pipeline is used to estimate motion and build map using various sensor data. The tactic (state estimation block) in VTR is sensor, robot and algorithm agnostic. In othe words, any pipeline can be plugged into VTR for odometry, localization and mapping.
To create a new pipeline: (TODO: this section is obsolete)
- add new header and implementation files in include and src.
- use the TemplatePipeline as a starting point to create the class of your pipeline.
- customize your pipeline to do the work following the instructions in TemplatePipeline.
- add the header file to pipelines.hpp.
- append the pipeline class to the
type_switch_
container in PipelineFactory. - if your pipeline needs to cache any intermediate data, such as image features or landmarks, put them in QueryCache. Take a look at the source code of this class and the stereo pipeline to see how it works.
- use modules to structure your pipeline and properly balance computation across data preprocessing, odometry and mapping, and localization. Note that data preprocessing. odometry and mapping, and localization are by default run in parallel. Feel free to use extra threads inside the pipeline to perform expensive operations such as keyframe optimization or data saving.
- create unit tests for your pipeline.
Add a new module
A module is a processing unit that should be created and called from a pipeline.
Suppose that you want to create a new module for the lidar pipeline
- Use the TemplateModule as a starting point to create the class of your module and put it inside the corresponding namespace, i.e. lidar.
- Copy TemplateModule header into the desired directory and rename it:
vtr_lidar/include/modules/<module name>.hpp
. Also create its implementation file (<module name>.cpp
) in the respective directory:vtr_lidar/src/modules/<module name>.cpp
- Change function templates in the copied TemplateModule.
- Add directory of the header file to
vtr_lidar/include/modules/modules.hpp
for convenience. - Register the new module in lidar pipline
vtr_lidar/src/pipeline.cpp: LidarPipeline::addModules()
. - If possible, create unit-tests for your module. Greatly appreciated.
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gtest | |
ament_lint_auto | |
rclcpp | |
tf2 | |
tf2_ros | |
tf2_eigen | |
sensor_msgs | |
nav_msgs | |
steam | |
vtr_logging | |
vtr_pose_graph | |
vtr_tactic_msgs |