diff --git a/config.json b/config.json
index 64b8628..37ae749 100644
--- a/config.json
+++ b/config.json
@@ -12,7 +12,9 @@
"pub_gps_topic": "/zxwl/vehicle/V060003/gps",
"remote_topic": "/zxwl/vehicle/V060003/ctrl",
"mqtt_topic_push_status": "/zxwl/vehicle/V060003/task/status",
- "mqtt_topic_sub_task": "/zxwl/vehicle/V060003/task"
+ "mqtt_topic_sub_task": "/zxwl/vehicle/V060003/task",
+ "info_topic": "/zxwl/vehicle/V060003/info",
+ "fault_topic": "/zxwl/vehicle/V060003/fault"
},
"detect_line_tolerance": 3.06,
"detect_head_tolerance": 2,
diff --git a/src/README.md b/src/README.md
new file mode 100644
index 0000000..d6ecac6
--- /dev/null
+++ b/src/README.md
@@ -0,0 +1,138 @@
+# sweeper_200 src 目录结构说明
+
+## 1. 总体说明
+
+sweeper_200 是一个基于 ROS2 的多节点系统,
+用于清扫车的感知、定位、控制、作业与平台通信。
+
+src 目录按功能域(functional domain)对 ROS2 节点进行分组,
+用于明确节点职责边界,降低系统复杂度,
+并作为系统架构约束的一部分。
+
+新增节点或调整现有节点时,应优先考虑其所属功能域。
+
+---
+
+## 2. 目录分层说明
+
+### base/
+底层硬件与接口抽象。
+
+用于放置直接与硬件交互,
+或对硬件能力进行抽象的节点与接口包。
+
+职责包括:
+- CAN、串口、设备接口
+- 底层控制与状态采集
+- 硬件能力封装
+
+示例包:
+- sweeper_interfaces
+- mc
+- fu
+
+---
+
+### control/
+控制输入与仲裁。
+
+用于放置产生控制意图的节点,
+以及多控制源的仲裁逻辑。
+
+职责包括:
+- 遥控、远控输入
+- 控制权仲裁
+- 控制指令标准化
+
+示例包:
+- radio_ctrl
+- remote_ctrl
+- ctrl_arbiter
+
+---
+
+### communication/
+平台与外部通信。
+
+用于放置系统与外部平台
+(云端、设备服务等)进行通信的节点。
+
+职责包括:
+- 设备身份获取与管理
+- MQTT、HTTP 通信
+- 云端任务同步
+
+示例包:
+- identity
+- mqtt_report
+- task_manager
+
+---
+
+### perception/
+感知与定位。
+
+用于放置传感器处理、定位、
+环境感知相关节点。
+
+职责包括:
+- 雷达、GPS、RTK
+- 传感器融合
+- 感知数据预处理
+
+示例包:
+- rslidar_pointcloud_merger
+- rtk
+- sub
+
+---
+
+### autonomy/
+自动驾驶与作业逻辑。
+
+用于放置路径规划、
+作业流程等高层逻辑节点。
+
+职责包括:
+- 路径规划
+- 作业状态机
+- 自动驾驶决策
+
+示例包:
+- route
+- pl
+- airy
+
+---
+
+### execution/
+执行与状态发布。
+
+用于向系统外部或平台
+发布执行结果与状态信息。
+
+示例包:
+- pub_gps
+
+---
+
+### tools/
+工具与调试节点(可选)。
+
+---
+
+## 3. 使用原则
+
+- 新增包必须明确所属目录
+- 禁止跨层直接依赖
+- 系统级通信(HTTP、MQTT)只允许存在于 communication 目录
+
+---
+
+## 4. 设计说明
+
+目录结构用于表达系统的架构边界,
+而不仅是代码整理。
+
+当无法判断一个节点应放入哪个目录时,
+通常意味着该节点职责需要重新拆分或澄清。
diff --git a/src/fu/CMakeLists.txt b/src/autonomy/fu/CMakeLists.txt
similarity index 100%
rename from src/fu/CMakeLists.txt
rename to src/autonomy/fu/CMakeLists.txt
diff --git a/src/fu/config/fu_params.yaml b/src/autonomy/fu/config/fu_params.yaml
similarity index 100%
rename from src/fu/config/fu_params.yaml
rename to src/autonomy/fu/config/fu_params.yaml
diff --git a/src/fu/include/fu/json.h b/src/autonomy/fu/include/fu/json.h
similarity index 100%
rename from src/fu/include/fu/json.h
rename to src/autonomy/fu/include/fu/json.h
diff --git a/src/fu/launch/fu.launch.py b/src/autonomy/fu/launch/fu.launch.py
similarity index 100%
rename from src/fu/launch/fu.launch.py
rename to src/autonomy/fu/launch/fu.launch.py
diff --git a/src/fu/package.xml b/src/autonomy/fu/package.xml
similarity index 100%
rename from src/fu/package.xml
rename to src/autonomy/fu/package.xml
diff --git a/src/fu/src/fu_node.cpp b/src/autonomy/fu/src/fu_node.cpp
similarity index 100%
rename from src/fu/src/fu_node.cpp
rename to src/autonomy/fu/src/fu_node.cpp
diff --git a/src/fu/src/jsoncpp.cpp b/src/autonomy/fu/src/jsoncpp.cpp
similarity index 100%
rename from src/fu/src/jsoncpp.cpp
rename to src/autonomy/fu/src/jsoncpp.cpp
diff --git a/src/pl/CMakeLists.txt b/src/autonomy/pl/CMakeLists.txt
similarity index 100%
rename from src/pl/CMakeLists.txt
rename to src/autonomy/pl/CMakeLists.txt
diff --git a/src/pl/include/pl/json.h b/src/autonomy/pl/include/pl/json.h
similarity index 100%
rename from src/pl/include/pl/json.h
rename to src/autonomy/pl/include/pl/json.h
diff --git a/src/pl/include/pl/pl.hpp b/src/autonomy/pl/include/pl/pl.hpp
similarity index 100%
rename from src/pl/include/pl/pl.hpp
rename to src/autonomy/pl/include/pl/pl.hpp
diff --git a/src/pl/package.xml b/src/autonomy/pl/package.xml
similarity index 100%
rename from src/pl/package.xml
rename to src/autonomy/pl/package.xml
diff --git a/src/pl/src/jsoncpp.cpp b/src/autonomy/pl/src/jsoncpp.cpp
similarity index 100%
rename from src/pl/src/jsoncpp.cpp
rename to src/autonomy/pl/src/jsoncpp.cpp
diff --git a/src/pl/src/pl.cpp b/src/autonomy/pl/src/pl.cpp
similarity index 100%
rename from src/pl/src/pl.cpp
rename to src/autonomy/pl/src/pl.cpp
diff --git a/src/pl/src/pl_node.cpp b/src/autonomy/pl/src/pl_node.cpp
similarity index 100%
rename from src/pl/src/pl_node.cpp
rename to src/autonomy/pl/src/pl_node.cpp
diff --git a/src/route/CMakeLists.txt b/src/autonomy/route/CMakeLists.txt
similarity index 100%
rename from src/route/CMakeLists.txt
rename to src/autonomy/route/CMakeLists.txt
diff --git a/src/pub_gps/include/pub_gps/json.h b/src/autonomy/route/include/route/json.h
similarity index 100%
rename from src/pub_gps/include/pub_gps/json.h
rename to src/autonomy/route/include/route/json.h
diff --git a/src/route/include/route/md5.h b/src/autonomy/route/include/route/md5.h
similarity index 100%
rename from src/route/include/route/md5.h
rename to src/autonomy/route/include/route/md5.h
diff --git a/src/route/package.xml b/src/autonomy/route/package.xml
similarity index 100%
rename from src/route/package.xml
rename to src/autonomy/route/package.xml
diff --git a/src/pub_gps/src/jsoncpp.cpp b/src/autonomy/route/src/jsoncpp.cpp
similarity index 100%
rename from src/pub_gps/src/jsoncpp.cpp
rename to src/autonomy/route/src/jsoncpp.cpp
diff --git a/src/route/src/md5.cpp b/src/autonomy/route/src/md5.cpp
similarity index 100%
rename from src/route/src/md5.cpp
rename to src/autonomy/route/src/md5.cpp
diff --git a/src/route/src/route_node.cpp b/src/autonomy/route/src/route_node.cpp
similarity index 100%
rename from src/route/src/route_node.cpp
rename to src/autonomy/route/src/route_node.cpp
diff --git a/src/mc/CMakeLists.txt b/src/base/mc/CMakeLists.txt
similarity index 100%
rename from src/mc/CMakeLists.txt
rename to src/base/mc/CMakeLists.txt
diff --git a/src/mc/config/config.json b/src/base/mc/config/config.json
similarity index 100%
rename from src/mc/config/config.json
rename to src/base/mc/config/config.json
diff --git a/src/mc/include/mc/can_driver.h b/src/base/mc/include/mc/can_driver.h
similarity index 100%
rename from src/mc/include/mc/can_driver.h
rename to src/base/mc/include/mc/can_driver.h
diff --git a/src/mc/include/mc/can_struct.h b/src/base/mc/include/mc/can_struct.h
similarity index 100%
rename from src/mc/include/mc/can_struct.h
rename to src/base/mc/include/mc/can_struct.h
diff --git a/src/mc/include/mc/can_utils.hpp b/src/base/mc/include/mc/can_utils.hpp
similarity index 100%
rename from src/mc/include/mc/can_utils.hpp
rename to src/base/mc/include/mc/can_utils.hpp
diff --git a/src/mc/include/mc/control_cache.hpp b/src/base/mc/include/mc/control_cache.hpp
similarity index 100%
rename from src/mc/include/mc/control_cache.hpp
rename to src/base/mc/include/mc/control_cache.hpp
diff --git a/src/mc/include/mc/get_config.h b/src/base/mc/include/mc/get_config.h
similarity index 100%
rename from src/mc/include/mc/get_config.h
rename to src/base/mc/include/mc/get_config.h
diff --git a/src/mc/include/mc/timer_tasks.hpp b/src/base/mc/include/mc/timer_tasks.hpp
similarity index 100%
rename from src/mc/include/mc/timer_tasks.hpp
rename to src/base/mc/include/mc/timer_tasks.hpp
diff --git a/src/mc/include/nlohmann/adl_serializer.hpp b/src/base/mc/include/nlohmann/adl_serializer.hpp
similarity index 100%
rename from src/mc/include/nlohmann/adl_serializer.hpp
rename to src/base/mc/include/nlohmann/adl_serializer.hpp
diff --git a/src/mc/include/nlohmann/byte_container_with_subtype.hpp b/src/base/mc/include/nlohmann/byte_container_with_subtype.hpp
similarity index 100%
rename from src/mc/include/nlohmann/byte_container_with_subtype.hpp
rename to src/base/mc/include/nlohmann/byte_container_with_subtype.hpp
diff --git a/src/mc/include/nlohmann/detail/abi_macros.hpp b/src/base/mc/include/nlohmann/detail/abi_macros.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/abi_macros.hpp
rename to src/base/mc/include/nlohmann/detail/abi_macros.hpp
diff --git a/src/mc/include/nlohmann/detail/conversions/from_json.hpp b/src/base/mc/include/nlohmann/detail/conversions/from_json.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/conversions/from_json.hpp
rename to src/base/mc/include/nlohmann/detail/conversions/from_json.hpp
diff --git a/src/mc/include/nlohmann/detail/conversions/to_chars.hpp b/src/base/mc/include/nlohmann/detail/conversions/to_chars.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/conversions/to_chars.hpp
rename to src/base/mc/include/nlohmann/detail/conversions/to_chars.hpp
diff --git a/src/mc/include/nlohmann/detail/conversions/to_json.hpp b/src/base/mc/include/nlohmann/detail/conversions/to_json.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/conversions/to_json.hpp
rename to src/base/mc/include/nlohmann/detail/conversions/to_json.hpp
diff --git a/src/mc/include/nlohmann/detail/exceptions.hpp b/src/base/mc/include/nlohmann/detail/exceptions.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/exceptions.hpp
rename to src/base/mc/include/nlohmann/detail/exceptions.hpp
diff --git a/src/mc/include/nlohmann/detail/hash.hpp b/src/base/mc/include/nlohmann/detail/hash.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/hash.hpp
rename to src/base/mc/include/nlohmann/detail/hash.hpp
diff --git a/src/mc/include/nlohmann/detail/input/binary_reader.hpp b/src/base/mc/include/nlohmann/detail/input/binary_reader.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/input/binary_reader.hpp
rename to src/base/mc/include/nlohmann/detail/input/binary_reader.hpp
diff --git a/src/mc/include/nlohmann/detail/input/input_adapters.hpp b/src/base/mc/include/nlohmann/detail/input/input_adapters.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/input/input_adapters.hpp
rename to src/base/mc/include/nlohmann/detail/input/input_adapters.hpp
diff --git a/src/mc/include/nlohmann/detail/input/json_sax.hpp b/src/base/mc/include/nlohmann/detail/input/json_sax.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/input/json_sax.hpp
rename to src/base/mc/include/nlohmann/detail/input/json_sax.hpp
diff --git a/src/mc/include/nlohmann/detail/input/lexer.hpp b/src/base/mc/include/nlohmann/detail/input/lexer.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/input/lexer.hpp
rename to src/base/mc/include/nlohmann/detail/input/lexer.hpp
diff --git a/src/mc/include/nlohmann/detail/input/parser.hpp b/src/base/mc/include/nlohmann/detail/input/parser.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/input/parser.hpp
rename to src/base/mc/include/nlohmann/detail/input/parser.hpp
diff --git a/src/mc/include/nlohmann/detail/input/position_t.hpp b/src/base/mc/include/nlohmann/detail/input/position_t.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/input/position_t.hpp
rename to src/base/mc/include/nlohmann/detail/input/position_t.hpp
diff --git a/src/mc/include/nlohmann/detail/iterators/internal_iterator.hpp b/src/base/mc/include/nlohmann/detail/iterators/internal_iterator.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/iterators/internal_iterator.hpp
rename to src/base/mc/include/nlohmann/detail/iterators/internal_iterator.hpp
diff --git a/src/mc/include/nlohmann/detail/iterators/iter_impl.hpp b/src/base/mc/include/nlohmann/detail/iterators/iter_impl.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/iterators/iter_impl.hpp
rename to src/base/mc/include/nlohmann/detail/iterators/iter_impl.hpp
diff --git a/src/mc/include/nlohmann/detail/iterators/iteration_proxy.hpp b/src/base/mc/include/nlohmann/detail/iterators/iteration_proxy.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/iterators/iteration_proxy.hpp
rename to src/base/mc/include/nlohmann/detail/iterators/iteration_proxy.hpp
diff --git a/src/mc/include/nlohmann/detail/iterators/iterator_traits.hpp b/src/base/mc/include/nlohmann/detail/iterators/iterator_traits.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/iterators/iterator_traits.hpp
rename to src/base/mc/include/nlohmann/detail/iterators/iterator_traits.hpp
diff --git a/src/mc/include/nlohmann/detail/iterators/json_reverse_iterator.hpp b/src/base/mc/include/nlohmann/detail/iterators/json_reverse_iterator.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/iterators/json_reverse_iterator.hpp
rename to src/base/mc/include/nlohmann/detail/iterators/json_reverse_iterator.hpp
diff --git a/src/mc/include/nlohmann/detail/iterators/primitive_iterator.hpp b/src/base/mc/include/nlohmann/detail/iterators/primitive_iterator.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/iterators/primitive_iterator.hpp
rename to src/base/mc/include/nlohmann/detail/iterators/primitive_iterator.hpp
diff --git a/src/mc/include/nlohmann/detail/json_custom_base_class.hpp b/src/base/mc/include/nlohmann/detail/json_custom_base_class.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/json_custom_base_class.hpp
rename to src/base/mc/include/nlohmann/detail/json_custom_base_class.hpp
diff --git a/src/mc/include/nlohmann/detail/json_pointer.hpp b/src/base/mc/include/nlohmann/detail/json_pointer.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/json_pointer.hpp
rename to src/base/mc/include/nlohmann/detail/json_pointer.hpp
diff --git a/src/mc/include/nlohmann/detail/json_ref.hpp b/src/base/mc/include/nlohmann/detail/json_ref.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/json_ref.hpp
rename to src/base/mc/include/nlohmann/detail/json_ref.hpp
diff --git a/src/mc/include/nlohmann/detail/macro_scope.hpp b/src/base/mc/include/nlohmann/detail/macro_scope.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/macro_scope.hpp
rename to src/base/mc/include/nlohmann/detail/macro_scope.hpp
diff --git a/src/mc/include/nlohmann/detail/macro_unscope.hpp b/src/base/mc/include/nlohmann/detail/macro_unscope.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/macro_unscope.hpp
rename to src/base/mc/include/nlohmann/detail/macro_unscope.hpp
diff --git a/src/mc/include/nlohmann/detail/meta/call_std/begin.hpp b/src/base/mc/include/nlohmann/detail/meta/call_std/begin.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/meta/call_std/begin.hpp
rename to src/base/mc/include/nlohmann/detail/meta/call_std/begin.hpp
diff --git a/src/mc/include/nlohmann/detail/meta/call_std/end.hpp b/src/base/mc/include/nlohmann/detail/meta/call_std/end.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/meta/call_std/end.hpp
rename to src/base/mc/include/nlohmann/detail/meta/call_std/end.hpp
diff --git a/src/mc/include/nlohmann/detail/meta/cpp_future.hpp b/src/base/mc/include/nlohmann/detail/meta/cpp_future.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/meta/cpp_future.hpp
rename to src/base/mc/include/nlohmann/detail/meta/cpp_future.hpp
diff --git a/src/mc/include/nlohmann/detail/meta/detected.hpp b/src/base/mc/include/nlohmann/detail/meta/detected.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/meta/detected.hpp
rename to src/base/mc/include/nlohmann/detail/meta/detected.hpp
diff --git a/src/mc/include/nlohmann/detail/meta/identity_tag.hpp b/src/base/mc/include/nlohmann/detail/meta/identity_tag.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/meta/identity_tag.hpp
rename to src/base/mc/include/nlohmann/detail/meta/identity_tag.hpp
diff --git a/src/mc/include/nlohmann/detail/meta/is_sax.hpp b/src/base/mc/include/nlohmann/detail/meta/is_sax.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/meta/is_sax.hpp
rename to src/base/mc/include/nlohmann/detail/meta/is_sax.hpp
diff --git a/src/mc/include/nlohmann/detail/meta/std_fs.hpp b/src/base/mc/include/nlohmann/detail/meta/std_fs.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/meta/std_fs.hpp
rename to src/base/mc/include/nlohmann/detail/meta/std_fs.hpp
diff --git a/src/mc/include/nlohmann/detail/meta/type_traits.hpp b/src/base/mc/include/nlohmann/detail/meta/type_traits.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/meta/type_traits.hpp
rename to src/base/mc/include/nlohmann/detail/meta/type_traits.hpp
diff --git a/src/mc/include/nlohmann/detail/meta/void_t.hpp b/src/base/mc/include/nlohmann/detail/meta/void_t.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/meta/void_t.hpp
rename to src/base/mc/include/nlohmann/detail/meta/void_t.hpp
diff --git a/src/mc/include/nlohmann/detail/output/binary_writer.hpp b/src/base/mc/include/nlohmann/detail/output/binary_writer.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/output/binary_writer.hpp
rename to src/base/mc/include/nlohmann/detail/output/binary_writer.hpp
diff --git a/src/mc/include/nlohmann/detail/output/output_adapters.hpp b/src/base/mc/include/nlohmann/detail/output/output_adapters.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/output/output_adapters.hpp
rename to src/base/mc/include/nlohmann/detail/output/output_adapters.hpp
diff --git a/src/mc/include/nlohmann/detail/output/serializer.hpp b/src/base/mc/include/nlohmann/detail/output/serializer.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/output/serializer.hpp
rename to src/base/mc/include/nlohmann/detail/output/serializer.hpp
diff --git a/src/mc/include/nlohmann/detail/string_concat.hpp b/src/base/mc/include/nlohmann/detail/string_concat.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/string_concat.hpp
rename to src/base/mc/include/nlohmann/detail/string_concat.hpp
diff --git a/src/mc/include/nlohmann/detail/string_escape.hpp b/src/base/mc/include/nlohmann/detail/string_escape.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/string_escape.hpp
rename to src/base/mc/include/nlohmann/detail/string_escape.hpp
diff --git a/src/mc/include/nlohmann/detail/string_utils.hpp b/src/base/mc/include/nlohmann/detail/string_utils.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/string_utils.hpp
rename to src/base/mc/include/nlohmann/detail/string_utils.hpp
diff --git a/src/mc/include/nlohmann/detail/value_t.hpp b/src/base/mc/include/nlohmann/detail/value_t.hpp
similarity index 100%
rename from src/mc/include/nlohmann/detail/value_t.hpp
rename to src/base/mc/include/nlohmann/detail/value_t.hpp
diff --git a/src/mc/include/nlohmann/json.hpp b/src/base/mc/include/nlohmann/json.hpp
similarity index 100%
rename from src/mc/include/nlohmann/json.hpp
rename to src/base/mc/include/nlohmann/json.hpp
diff --git a/src/mc/include/nlohmann/json_fwd.hpp b/src/base/mc/include/nlohmann/json_fwd.hpp
similarity index 100%
rename from src/mc/include/nlohmann/json_fwd.hpp
rename to src/base/mc/include/nlohmann/json_fwd.hpp
diff --git a/src/mc/include/nlohmann/ordered_map.hpp b/src/base/mc/include/nlohmann/ordered_map.hpp
similarity index 100%
rename from src/mc/include/nlohmann/ordered_map.hpp
rename to src/base/mc/include/nlohmann/ordered_map.hpp
diff --git a/src/mc/include/nlohmann/thirdparty/hedley/hedley.hpp b/src/base/mc/include/nlohmann/thirdparty/hedley/hedley.hpp
similarity index 100%
rename from src/mc/include/nlohmann/thirdparty/hedley/hedley.hpp
rename to src/base/mc/include/nlohmann/thirdparty/hedley/hedley.hpp
diff --git a/src/mc/include/nlohmann/thirdparty/hedley/hedley_undef.hpp b/src/base/mc/include/nlohmann/thirdparty/hedley/hedley_undef.hpp
similarity index 100%
rename from src/mc/include/nlohmann/thirdparty/hedley/hedley_undef.hpp
rename to src/base/mc/include/nlohmann/thirdparty/hedley/hedley_undef.hpp
diff --git a/src/mc/package.xml b/src/base/mc/package.xml
similarity index 100%
rename from src/mc/package.xml
rename to src/base/mc/package.xml
diff --git a/src/mc/src/can_driver.cpp b/src/base/mc/src/can_driver.cpp
similarity index 100%
rename from src/mc/src/can_driver.cpp
rename to src/base/mc/src/can_driver.cpp
diff --git a/src/mc/src/can_struct.cpp b/src/base/mc/src/can_struct.cpp
similarity index 100%
rename from src/mc/src/can_struct.cpp
rename to src/base/mc/src/can_struct.cpp
diff --git a/src/mc/src/can_utils.cpp b/src/base/mc/src/can_utils.cpp
similarity index 100%
rename from src/mc/src/can_utils.cpp
rename to src/base/mc/src/can_utils.cpp
diff --git a/src/mc/src/control_cache.cpp b/src/base/mc/src/control_cache.cpp
similarity index 100%
rename from src/mc/src/control_cache.cpp
rename to src/base/mc/src/control_cache.cpp
diff --git a/src/mc/src/get_config.cpp b/src/base/mc/src/get_config.cpp
similarity index 100%
rename from src/mc/src/get_config.cpp
rename to src/base/mc/src/get_config.cpp
diff --git a/src/mc/src/mc.cpp b/src/base/mc/src/mc.cpp
similarity index 100%
rename from src/mc/src/mc.cpp
rename to src/base/mc/src/mc.cpp
diff --git a/src/mc/src/timer_tasks.cpp b/src/base/mc/src/timer_tasks.cpp
similarity index 100%
rename from src/mc/src/timer_tasks.cpp
rename to src/base/mc/src/timer_tasks.cpp
diff --git a/src/sweeper_interfaces/CMakeLists.txt b/src/base/sweeper_interfaces/CMakeLists.txt
similarity index 100%
rename from src/sweeper_interfaces/CMakeLists.txt
rename to src/base/sweeper_interfaces/CMakeLists.txt
diff --git a/src/sweeper_interfaces/msg/CanFrame.msg b/src/base/sweeper_interfaces/msg/CanFrame.msg
similarity index 100%
rename from src/sweeper_interfaces/msg/CanFrame.msg
rename to src/base/sweeper_interfaces/msg/CanFrame.msg
diff --git a/src/sweeper_interfaces/msg/DetectLine.msg b/src/base/sweeper_interfaces/msg/DetectLine.msg
similarity index 100%
rename from src/sweeper_interfaces/msg/DetectLine.msg
rename to src/base/sweeper_interfaces/msg/DetectLine.msg
diff --git a/src/sweeper_interfaces/msg/Fu.msg b/src/base/sweeper_interfaces/msg/Fu.msg
similarity index 100%
rename from src/sweeper_interfaces/msg/Fu.msg
rename to src/base/sweeper_interfaces/msg/Fu.msg
diff --git a/src/sweeper_interfaces/msg/McCtrl.msg b/src/base/sweeper_interfaces/msg/McCtrl.msg
similarity index 100%
rename from src/sweeper_interfaces/msg/McCtrl.msg
rename to src/base/sweeper_interfaces/msg/McCtrl.msg
diff --git a/src/sweeper_interfaces/msg/Pl.msg b/src/base/sweeper_interfaces/msg/Pl.msg
similarity index 100%
rename from src/sweeper_interfaces/msg/Pl.msg
rename to src/base/sweeper_interfaces/msg/Pl.msg
diff --git a/src/sweeper_interfaces/msg/Route.msg b/src/base/sweeper_interfaces/msg/Route.msg
similarity index 100%
rename from src/sweeper_interfaces/msg/Route.msg
rename to src/base/sweeper_interfaces/msg/Route.msg
diff --git a/src/sweeper_interfaces/msg/Rtk.msg b/src/base/sweeper_interfaces/msg/Rtk.msg
similarity index 100%
rename from src/sweeper_interfaces/msg/Rtk.msg
rename to src/base/sweeper_interfaces/msg/Rtk.msg
diff --git a/src/sweeper_interfaces/msg/Sub.msg b/src/base/sweeper_interfaces/msg/Sub.msg
similarity index 100%
rename from src/sweeper_interfaces/msg/Sub.msg
rename to src/base/sweeper_interfaces/msg/Sub.msg
diff --git a/src/sweeper_interfaces/msg/Task.msg b/src/base/sweeper_interfaces/msg/Task.msg
similarity index 100%
rename from src/sweeper_interfaces/msg/Task.msg
rename to src/base/sweeper_interfaces/msg/Task.msg
diff --git a/src/sweeper_interfaces/package.xml b/src/base/sweeper_interfaces/package.xml
similarity index 100%
rename from src/sweeper_interfaces/package.xml
rename to src/base/sweeper_interfaces/package.xml
diff --git a/src/base/vehicle_params/CMakeLists.txt b/src/base/vehicle_params/CMakeLists.txt
new file mode 100644
index 0000000..ab74ff8
--- /dev/null
+++ b/src/base/vehicle_params/CMakeLists.txt
@@ -0,0 +1,25 @@
+cmake_minimum_required(VERSION 3.8)
+project(vehicle_params)
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+# find dependencies
+find_package(ament_cmake REQUIRED)
+find_package(rclcpp REQUIRED)
+find_package(std_msgs REQUIRED)
+
+if(BUILD_TESTING)
+ find_package(ament_lint_auto REQUIRED)
+ # the following line skips the linter which checks for copyrights
+ # comment the line when a copyright and license is added to all source files
+ set(ament_cmake_copyright_FOUND TRUE)
+ # the following line skips cpplint (only works in a git repo)
+ # comment the line when this package is in a git repo and when
+ # a copyright and license is added to all source files
+ set(ament_cmake_cpplint_FOUND TRUE)
+ ament_lint_auto_find_test_dependencies()
+endif()
+
+ament_package()
diff --git a/src/base/vehicle_params/package.xml b/src/base/vehicle_params/package.xml
new file mode 100644
index 0000000..a7d09ca
--- /dev/null
+++ b/src/base/vehicle_params/package.xml
@@ -0,0 +1,21 @@
+
+
+
+ vehicle_params
+ 0.0.0
+ TODO: Package description
+ nvidia
+ TODO: License declaration
+
+ ament_cmake
+
+ rclcpp
+ std_msgs
+
+ ament_lint_auto
+ ament_lint_common
+
+
+ ament_cmake
+
+
diff --git a/src/mqtt_report/CMakeLists.txt b/src/communication/mqtt_report/CMakeLists.txt
similarity index 100%
rename from src/mqtt_report/CMakeLists.txt
rename to src/communication/mqtt_report/CMakeLists.txt
diff --git a/src/mqtt_report/config/config(copy).json b/src/communication/mqtt_report/config/config(copy).json
similarity index 100%
rename from src/mqtt_report/config/config(copy).json
rename to src/communication/mqtt_report/config/config(copy).json
diff --git a/src/mqtt_report/config/config.json b/src/communication/mqtt_report/config/config.json
similarity index 100%
rename from src/mqtt_report/config/config.json
rename to src/communication/mqtt_report/config/config.json
diff --git a/src/communication/mqtt_report/include/httplib.h b/src/communication/mqtt_report/include/httplib.h
new file mode 100644
index 0000000..ed30e55
--- /dev/null
+++ b/src/communication/mqtt_report/include/httplib.h
@@ -0,0 +1,12337 @@
+//
+// httplib.h
+//
+// Copyright (c) 2025 Yuji Hirose. All rights reserved.
+// MIT License
+//
+
+#ifndef CPPHTTPLIB_HTTPLIB_H
+#define CPPHTTPLIB_HTTPLIB_H
+
+#define CPPHTTPLIB_VERSION "0.28.0"
+#define CPPHTTPLIB_VERSION_NUM "0x001C00"
+
+/*
+ * Platform compatibility check
+ */
+
+#if defined(_WIN32) && !defined(_WIN64)
+#if defined(_MSC_VER)
+#pragma message( \
+ "cpp-httplib doesn't support 32-bit Windows. Please use a 64-bit compiler.")
+#else
+#warning \
+ "cpp-httplib doesn't support 32-bit Windows. Please use a 64-bit compiler."
+#endif
+#elif defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ < 8
+#warning \
+ "cpp-httplib doesn't support 32-bit platforms. Please use a 64-bit compiler."
+#elif defined(__SIZEOF_SIZE_T__) && __SIZEOF_SIZE_T__ < 8
+#warning \
+ "cpp-httplib doesn't support platforms where size_t is less than 64 bits."
+#endif
+
+#ifdef _WIN32
+#if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0A00
+#error \
+ "cpp-httplib doesn't support Windows 8 or lower. Please use Windows 10 or later."
+#endif
+#endif
+
+/*
+ * Configuration
+ */
+
+#ifndef CPPHTTPLIB_KEEPALIVE_TIMEOUT_SECOND
+#define CPPHTTPLIB_KEEPALIVE_TIMEOUT_SECOND 5
+#endif
+
+#ifndef CPPHTTPLIB_KEEPALIVE_TIMEOUT_CHECK_INTERVAL_USECOND
+#define CPPHTTPLIB_KEEPALIVE_TIMEOUT_CHECK_INTERVAL_USECOND 10000
+#endif
+
+#ifndef CPPHTTPLIB_KEEPALIVE_MAX_COUNT
+#define CPPHTTPLIB_KEEPALIVE_MAX_COUNT 100
+#endif
+
+#ifndef CPPHTTPLIB_CONNECTION_TIMEOUT_SECOND
+#define CPPHTTPLIB_CONNECTION_TIMEOUT_SECOND 300
+#endif
+
+#ifndef CPPHTTPLIB_CONNECTION_TIMEOUT_USECOND
+#define CPPHTTPLIB_CONNECTION_TIMEOUT_USECOND 0
+#endif
+
+#ifndef CPPHTTPLIB_SERVER_READ_TIMEOUT_SECOND
+#define CPPHTTPLIB_SERVER_READ_TIMEOUT_SECOND 5
+#endif
+
+#ifndef CPPHTTPLIB_SERVER_READ_TIMEOUT_USECOND
+#define CPPHTTPLIB_SERVER_READ_TIMEOUT_USECOND 0
+#endif
+
+#ifndef CPPHTTPLIB_SERVER_WRITE_TIMEOUT_SECOND
+#define CPPHTTPLIB_SERVER_WRITE_TIMEOUT_SECOND 5
+#endif
+
+#ifndef CPPHTTPLIB_SERVER_WRITE_TIMEOUT_USECOND
+#define CPPHTTPLIB_SERVER_WRITE_TIMEOUT_USECOND 0
+#endif
+
+#ifndef CPPHTTPLIB_CLIENT_READ_TIMEOUT_SECOND
+#define CPPHTTPLIB_CLIENT_READ_TIMEOUT_SECOND 300
+#endif
+
+#ifndef CPPHTTPLIB_CLIENT_READ_TIMEOUT_USECOND
+#define CPPHTTPLIB_CLIENT_READ_TIMEOUT_USECOND 0
+#endif
+
+#ifndef CPPHTTPLIB_CLIENT_WRITE_TIMEOUT_SECOND
+#define CPPHTTPLIB_CLIENT_WRITE_TIMEOUT_SECOND 5
+#endif
+
+#ifndef CPPHTTPLIB_CLIENT_WRITE_TIMEOUT_USECOND
+#define CPPHTTPLIB_CLIENT_WRITE_TIMEOUT_USECOND 0
+#endif
+
+#ifndef CPPHTTPLIB_CLIENT_MAX_TIMEOUT_MSECOND
+#define CPPHTTPLIB_CLIENT_MAX_TIMEOUT_MSECOND 0
+#endif
+
+#ifndef CPPHTTPLIB_IDLE_INTERVAL_SECOND
+#define CPPHTTPLIB_IDLE_INTERVAL_SECOND 0
+#endif
+
+#ifndef CPPHTTPLIB_IDLE_INTERVAL_USECOND
+#ifdef _WIN32
+#define CPPHTTPLIB_IDLE_INTERVAL_USECOND 1000
+#else
+#define CPPHTTPLIB_IDLE_INTERVAL_USECOND 0
+#endif
+#endif
+
+#ifndef CPPHTTPLIB_REQUEST_URI_MAX_LENGTH
+#define CPPHTTPLIB_REQUEST_URI_MAX_LENGTH 8192
+#endif
+
+#ifndef CPPHTTPLIB_HEADER_MAX_LENGTH
+#define CPPHTTPLIB_HEADER_MAX_LENGTH 8192
+#endif
+
+#ifndef CPPHTTPLIB_HEADER_MAX_COUNT
+#define CPPHTTPLIB_HEADER_MAX_COUNT 100
+#endif
+
+#ifndef CPPHTTPLIB_REDIRECT_MAX_COUNT
+#define CPPHTTPLIB_REDIRECT_MAX_COUNT 20
+#endif
+
+#ifndef CPPHTTPLIB_MULTIPART_FORM_DATA_FILE_MAX_COUNT
+#define CPPHTTPLIB_MULTIPART_FORM_DATA_FILE_MAX_COUNT 1024
+#endif
+
+#ifndef CPPHTTPLIB_PAYLOAD_MAX_LENGTH
+#define CPPHTTPLIB_PAYLOAD_MAX_LENGTH ((std::numeric_limits::max)())
+#endif
+
+#ifndef CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH
+#define CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH 8192
+#endif
+
+#ifndef CPPHTTPLIB_RANGE_MAX_COUNT
+#define CPPHTTPLIB_RANGE_MAX_COUNT 1024
+#endif
+
+#ifndef CPPHTTPLIB_TCP_NODELAY
+#define CPPHTTPLIB_TCP_NODELAY false
+#endif
+
+#ifndef CPPHTTPLIB_IPV6_V6ONLY
+#define CPPHTTPLIB_IPV6_V6ONLY false
+#endif
+
+#ifndef CPPHTTPLIB_RECV_BUFSIZ
+#define CPPHTTPLIB_RECV_BUFSIZ size_t(16384u)
+#endif
+
+#ifndef CPPHTTPLIB_SEND_BUFSIZ
+#define CPPHTTPLIB_SEND_BUFSIZ size_t(16384u)
+#endif
+
+#ifndef CPPHTTPLIB_COMPRESSION_BUFSIZ
+#define CPPHTTPLIB_COMPRESSION_BUFSIZ size_t(16384u)
+#endif
+
+#ifndef CPPHTTPLIB_THREAD_POOL_COUNT
+#define CPPHTTPLIB_THREAD_POOL_COUNT \
+ ((std::max)(8u, std::thread::hardware_concurrency() > 0 \
+ ? std::thread::hardware_concurrency() - 1 \
+ : 0))
+#endif
+
+#ifndef CPPHTTPLIB_RECV_FLAGS
+#define CPPHTTPLIB_RECV_FLAGS 0
+#endif
+
+#ifndef CPPHTTPLIB_SEND_FLAGS
+#define CPPHTTPLIB_SEND_FLAGS 0
+#endif
+
+#ifndef CPPHTTPLIB_LISTEN_BACKLOG
+#define CPPHTTPLIB_LISTEN_BACKLOG 5
+#endif
+
+#ifndef CPPHTTPLIB_MAX_LINE_LENGTH
+#define CPPHTTPLIB_MAX_LINE_LENGTH 32768
+#endif
+
+/*
+ * Headers
+ */
+
+#ifdef _WIN32
+#ifndef _CRT_SECURE_NO_WARNINGS
+#define _CRT_SECURE_NO_WARNINGS
+#endif //_CRT_SECURE_NO_WARNINGS
+
+#ifndef _CRT_NONSTDC_NO_DEPRECATE
+#define _CRT_NONSTDC_NO_DEPRECATE
+#endif //_CRT_NONSTDC_NO_DEPRECATE
+
+#if defined(_MSC_VER)
+#if _MSC_VER < 1900
+#error Sorry, Visual Studio versions prior to 2015 are not supported
+#endif
+
+#pragma comment(lib, "ws2_32.lib")
+
+using ssize_t = __int64;
+#endif // _MSC_VER
+
+#ifndef S_ISREG
+#define S_ISREG(m) (((m) & S_IFREG) == S_IFREG)
+#endif // S_ISREG
+
+#ifndef S_ISDIR
+#define S_ISDIR(m) (((m) & S_IFDIR) == S_IFDIR)
+#endif // S_ISDIR
+
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif // NOMINMAX
+
+#include
+#include
+#include
+
+#if defined(__has_include)
+#if __has_include()
+// afunix.h uses types declared in winsock2.h, so has to be included after it.
+#include
+#define CPPHTTPLIB_HAVE_AFUNIX_H 1
+#endif
+#endif
+
+#ifndef WSA_FLAG_NO_HANDLE_INHERIT
+#define WSA_FLAG_NO_HANDLE_INHERIT 0x80
+#endif
+
+using nfds_t = unsigned long;
+using socket_t = SOCKET;
+using socklen_t = int;
+
+#else // not _WIN32
+
+#include
+#if !defined(_AIX) && !defined(__MVS__)
+#include
+#endif
+#ifdef __MVS__
+#include
+#ifndef NI_MAXHOST
+#define NI_MAXHOST 1025
+#endif
+#endif
+#include
+#include
+#include
+#ifdef __linux__
+#include
+#undef _res // Undefine _res macro to avoid conflicts with user code (#2278)
+#endif
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+using socket_t = int;
+#ifndef INVALID_SOCKET
+#define INVALID_SOCKET (-1)
+#endif
+#endif //_WIN32
+
+#if defined(__APPLE__)
+#include
+#endif
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include