diff --git a/patches/livox_sdk.patch b/patches/livox_sdk.patch
index fe33a0f..1851bbb 100644
--- a/patches/livox_sdk.patch
+++ b/patches/livox_sdk.patch
@@ -1,49 +1,24 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 05f84c5..4fb6f31 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -1,7 +1,9 @@
--cmake_minimum_required(VERSION 3.0)
-+cmake_minimum_required(VERSION 3.5)
-
- project(livox_sdk2)
-
-+find_package(ament_cmake REQUIRED)
+diff --git a/package.xml b/package.xml
+new file mode 100644
+index 0000000..ffdf3ce
+--- /dev/null
++++ b/package.xml
+@@ -0,0 +1,18 @@
++
++
++
++ livox_sdk2
++ 1.3.1
++
++ Livox SDK2: official C++ library for Livox LiDAR sensors.
++ Provides the livox_sdk2 ament target consumed by livox_ros_driver2.
++
++ Livox
++ Apache-2.0
+
- set(CMAKE_CXX_STANDARD 11)
-
- message(STATUS "main project dir: " ${PROJECT_SOURCE_DIR})
-@@ -18,3 +20,9 @@ endif(UNIX)
-
- add_subdirectory(sdk_core)
- add_subdirectory(samples)
++ ament_cmake
+
-+# Export the installed headers/libraries so ament packages (e.g. livox_ros_driver2)
-+# find the SDK from the colcon install space via CMAKE_PREFIX_PATH.
-+ament_export_include_directories(include)
-+ament_export_libraries(livox_lidar_sdk_shared)
-+ament_package()
-diff --git a/sdk_core/comm/define.h b/sdk_core/comm/define.h
-index 0872328..28d989b 100644
---- a/sdk_core/comm/define.h
-+++ b/sdk_core/comm/define.h
-@@ -31,6 +31,7 @@
- #include
- #include
- #include
-+#include
-
- #include "livox_lidar_def.h"
-
-diff --git a/sdk_core/logger_handler/file_manager.h b/sdk_core/logger_handler/file_manager.h
-index 242a431..14cd76a 100644
---- a/sdk_core/logger_handler/file_manager.h
-+++ b/sdk_core/logger_handler/file_manager.h
-@@ -28,6 +28,7 @@
- #include
- #include
- #include
diff --git a/patches/unilidar_sdk2.patch b/patches/unilidar_sdk2.patch
index 81d7f5f..f094a4b 100644
--- a/patches/unilidar_sdk2.patch
+++ b/patches/unilidar_sdk2.patch
@@ -1,3 +1,6 @@
+diff --git a/unitree_lidar_ros/src/unitree_lidar_ros/COLCON_IGNORE b/unitree_lidar_ros/src/unitree_lidar_ros/COLCON_IGNORE
+new file mode 100644
+index 0000000..e69de29
diff --git a/unitree_lidar_ros2/src/unitree_lidar_ros2/CMakeLists.txt b/unitree_lidar_ros2/src/unitree_lidar_ros2/CMakeLists.txt
index 041ef0d..dd57d47 100644
--- a/unitree_lidar_ros2/src/unitree_lidar_ros2/CMakeLists.txt
@@ -37,15 +40,12 @@ index 041ef0d..dd57d47 100644
install(TARGETS
diff --git a/unitree_lidar_ros2/src/unitree_lidar_ros2/package.xml b/unitree_lidar_ros2/src/unitree_lidar_ros2/package.xml
-index 74539aa..69bb645 100644
+index 74539aa..8b186d8 100644
--- a/unitree_lidar_ros2/src/unitree_lidar_ros2/package.xml
+++ b/unitree_lidar_ros2/src/unitree_lidar_ros2/package.xml
-@@ -15,14 +15,15 @@
- rclcpp
- std_msgs
+@@ -17,10 +17,11 @@
sensor_msgs
--
-+
+
pcl_conversions
- pcl
+ libpcl-all-dev
@@ -56,12 +56,8 @@ index 74539aa..69bb645 100644
ament_cmake
-
--
-+
-\ No newline at end of file
diff --git a/unitree_lidar_sdk/CMakeLists.txt b/unitree_lidar_sdk/CMakeLists.txt
-index 80af9c9..0d9a334 100644
+index 80af9c9..00725ea 100644
--- a/unitree_lidar_sdk/CMakeLists.txt
+++ b/unitree_lidar_sdk/CMakeLists.txt
@@ -1,39 +1,14 @@
@@ -114,35 +110,24 @@ index 80af9c9..0d9a334 100644
-target_link_libraries(set_to_udp_mode libunilidar_sdk2.a )
\ No newline at end of file
+ament_package()
-\ No newline at end of file
diff --git a/unitree_lidar_sdk/package.xml b/unitree_lidar_sdk/package.xml
-index ef88d9a..68ab313 100644
---- a/unitree_lidar_sdk/package.xml
+new file mode 100644
+index 0000000..ef88d9a
+--- /dev/null
+++ b/unitree_lidar_sdk/package.xml
-@@ -1,15 +1,15 @@
-
-
-
-- unitree_lidar_sdk
-- 0.0.0
-- Unitree LiDAR SDK (prebuilt static library and headers)
-- jo
-- BSD-3-Clause
-+ unitree_lidar_sdk
-+ 0.0.0
-+ Unitree LiDAR SDK (prebuilt static library and headers)
-+ jo
-+ BSD-3-Clause
-
-- ament_cmake
-+ ament_cmake
-
--
-- ament_cmake
--
--
-+
-+ ament_cmake
-+
+@@ -0,0 +1,15 @@
++
++
++
++ unitree_lidar_sdk
++ 0.0.0
++ Unitree LiDAR SDK (prebuilt static library and headers)
++ jo
++ BSD-3-Clause
++
++ ament_cmake
++
++
++ ament_cmake
++
+
-\ No newline at end of file
diff --git a/setup_upstream.sh b/setup_upstream.sh
new file mode 100755
index 0000000..cb3dce5
--- /dev/null
+++ b/setup_upstream.sh
@@ -0,0 +1,36 @@
+#!/usr/bin/env bash
+#
+# setup_upstream.sh — fetch the upstream sources agv_pro_ros2 depends on
+# and apply any required patches.
+#
+# Sources are declared in upstream.jazzy.repos and cloned under src/upstream/.
+# Patches in patches/ are applied idempotently (already-applied patches are
+# silently skipped).
+#
+# Usage:
+# ./setup_upstream.sh
+set -euo pipefail
+
+REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+cd "$REPO_ROOT"
+
+echo "[setup_upstream] importing sources into src/upstream ..."
+mkdir -p src/upstream
+
+# Reset working-tree changes in already-cloned repos so that vcs import can
+# pull upstream updates without hitting dirty-working-tree conflicts.
+# Use -x so that gitignored files (e.g. generated package.xml) are also removed.
+# Patches are re-applied unconditionally after the import step below.
+for repo_dir in src/upstream/*/; do
+ if [[ -d "${repo_dir}/.git" ]]; then
+ git -C "${repo_dir}" checkout -- . 2>/dev/null || true
+ git -C "${repo_dir}" clean -fdx 2>/dev/null || true
+ fi
+done
+
+vcs import src/upstream < upstream.jazzy.repos
+
+echo "[setup_upstream] applying patches ..."
+bash patches/apply_patches.sh
+
+echo "[setup_upstream] done."
diff --git a/upstream.jazzy.repos b/upstream.jazzy.repos
index 5e5abcb..94368d8 100644
--- a/upstream.jazzy.repos
+++ b/upstream.jazzy.repos
@@ -2,33 +2,33 @@ repositories:
FAST_LIO:
type: git
url: https://github.com/hku-mars/FAST_LIO.git
- version: ROS2
+ version: a4743b095409588842a5b30ddfa27e29d2f99164
livox_ros_driver2:
type: git
url: https://github.com/Livox-SDK/livox_ros_driver2.git
- version: master
+ version: 13eb05e4e6dd7a765b934d0c5fd6236676a57b49
livox_sdk:
type: git
url: https://github.com/Livox-SDK/Livox-SDK2.git
- version: master
+ version: 68ae1e1dc77f61f03c95d7c2809831e198d0aedd
Lslidar_ROS2_driver:
type: git
url: https://github.com/Lslidar/Lslidar_ROS2_driver.git
- version: LS-S1_V1.0
+ version: e23139673c34c51d07053837910020aaa81736fa
pcd2pgm:
type: git
url: https://github.com/LihanChen2004/pcd2pgm.git
- version: main
+ version: 885561552baae33685e59eef41a5d8c996538702
point_lio_ros2:
type: git
url: https://github.com/dfloreaa/point_lio_ros2.git
- version: main
+ version: a8e2d0d5090af97ead8dd4fac3d37cf3dbb33ff7
slam_gmapping:
type: git
url: https://github.com/Project-MANAS/slam_gmapping.git
- version: eloquent-devel
+ version: 3c3de50c071d2c64ffe516e1ed84a574fc447b97
unilidar_sdk2:
type: git
url: https://github.com/unitreerobotics/unilidar_sdk2.git
- version: main
+ version: 0e3c51f512e6b8ff60b8c32f160b412cb48445c2