Environment
- OS: Ubuntu 22.04
- ROS 2: Humble
- Build tool:
colcon build --symlink-install
- ViSP: built from source
In both visp_tracker and visp_auto_tracker, the current CMakeLists.txt contains incorrect rosbag handling logic.
Problems
-
Invalid download URLs (404)
The CMake code tries to download tutorial bags from GitHub release URLs that return HTTP 404, causing build failures.
-
Incorrect rosbag assumptions in ROS 2
The CMake logic treats tutorial bags as ROS1-style single .bag files, while in ROS 2 a rosbag (*.bag) is a directory containing:
This leads to invalid install() paths and failures with colcon build --symlink-install.
Example problematic CMake code
(from visp_tracker/CMakeLists.txt)
ExternalProject_Add(
external_bag
URL https://github.com/lagadic/vision_visp/releases/download/vision_visp-0.5.0/tutorial-static-box-ros2.bag
)
install(
DIRECTORY externals/src/tutorial-static-box-ros2.bag
DESTINATION share/bag
)
This assumes:
- the URL exists (it returns 404),
- the bag is a single file,
- and the directory always exists at install time.
All of these assumptions are invalid in ROS 2.
Impact
With the default ROS 2 Humble workflow (--symlink-install), both packages can fail to build unless users manually patch the CMakeLists.
Environment
colcon build --symlink-installIn both
visp_trackerandvisp_auto_tracker, the currentCMakeLists.txtcontains incorrect rosbag handling logic.Problems
Invalid download URLs (404)
The CMake code tries to download tutorial bags from GitHub release URLs that return HTTP 404, causing build failures.
Incorrect rosbag assumptions in ROS 2
The CMake logic treats tutorial bags as ROS1-style single
.bagfiles, while in ROS 2 a rosbag (*.bag) is a directory containing:This leads to invalid
install()paths and failures withcolcon build --symlink-install.Example problematic CMake code
(from
visp_tracker/CMakeLists.txt)This assumes:
All of these assumptions are invalid in ROS 2.
Impact
With the default ROS 2 Humble workflow (
--symlink-install), both packages can fail to build unless users manually patch the CMakeLists.