1) 项目启动入口与关键函数主程序入口非 ROS入口文件e:\gici-open-master\src\gici_main.cpp可执行名gici_main由e:\gici-open-master\CMakeLists.txt定义关键函数int main(int argc, char** argv)启动链路要点读取 YAML 配置YAML::LoadFile(...)构建NodeOptionHandle构建NodeHandle调用SpinControl::run()进入主循环ROS 入口入口文件e:\gici-open-master\ros_wrapper\src\gici\src\gici_ros_main.cpp可执行名gici_ros_main由ros_wrapper/src/gici/CMakeLists.txt定义关键函数int main(int argc, char** argv)启动链路要点ros::init(...)读取 YAML 配置构建NodeOptionHandle构建RosNodeHandleros::spin()进入 ROS 事件循环其它 CLI 工具入口多可执行坐标/时间转换tools/conversions/*如ecef_to_lla,lla_to_ecef,gpst_to_unix等数据编辑tools/edit_binary/*如correct_imu_timestamp,cut_files评测转换与对齐tools/evaluation/*如nmea_to_tum,nmea_align_timestampROS 辅助工具tools/ros/src/gici_tools/*如gici_files_to_rosbag,publish_tum_poses这些入口均为各自src/*.cpp/src/*.c的main(...)由对应子目录CMakeLists.txt的add_executable(...)定义。2) 架构概述按模块这个仓库可理解为“核心库 ROS 包装 工具集 三方库”核心库gici代码位置src/*与include/gici/*模块划分从根CMakeLists.txt可见src/stream流输入输出与数据管线src/gnssGNSS 因子/估计器src/imuIMU 因子/误差模型src/vision视觉特征与重投影误差src/estimate参数块、边缘化、优化相关src/fusion多传感器融合估计器src/utility配置、信号处理、全局控制等产物共享库gici 可执行gici_mainROS 包装层代码位置ros_wrapper/src/gici作用把核心管线与 ROS topic/消息打通关键类RosNodeHandle继承/扩展NodeHandle将 ROS stream 与 estimator 管线重绑工具层离线处理 / 格式转换 / ROS 工具代码位置tools/*职责数据格式转换、时间戳/二进制编辑、评测辅助、rosbag 转换与发布第三方子模块代码位置third_party/*包括rtklib、rpg_vikit、rpg_svo、fast根构建通过add_subdirectory(...)直接纳入调用关系核心主线main/ros_main- 读取 YAML -NodeOptionHandle解析节点关系 -NodeHandle/RosNodeHandle组装并绑定数据管线 -Streaming/FilesReading输入 -MultiSensorEstimating融合估计 - 输出到 stream/ROS。3) 运行步骤安装、开发、构建、运行、配置依赖安装README 明确必需Eigen3、OpenCV(4.2)、yaml-cpp、glog(gflags)、Ceres可选ROS用于 ROS wrapper非 ROS 构建与运行README 给出的标准流程mkdir build cd buildcmake .. -DCMAKE_BUILD_TYPEReleasemake -j8运行./gici_main gici-config-fileROS 构建与运行README 给出的流程进入ros_wrappercatkin_make -DCMAKE_BUILD_TYPEReleasesource ./devel/setup.bash运行rosrun gici_ros gici_ros_main gici-config-file常见配置/环境要求必须提供 YAML 配置文件路径 作为唯一参数主程序和 ROS 入口都检查argc 2配置示例目录非 ROSe:\gici-open-master\option\*.yamlROSe:\gici-open-master\ros_wrapper\src\gici\option\*.yaml日志配置项YAML常见键logging.enablelogging.min_log_levellogging.log_to_stderrlogging.file_directory构建开关CMAKE_BUILD_TYPEREADME/根 CMake 使用IS_ARM根 CMake 中用于 ARM 优化分支开发模式 / 生产运行说明仓库未区分前端常见的 dev/prod 命令体系主要是 CMake 编译类型区分Debug/Release。“生产运行”可理解为以Release构建后直接运行二进制gici_main或 ROS 节点。4) 多种运行方式总结C 原生二进制主方式gici_mainROS 方式gici_ros_mainrosrun多种独立 CLI 工具tools/*下多个add_executableDocker / Compose未发现Node / Python 应用入口未发现无package.json、pyproject.toml、requirements.txt5运行步骤1) 准备依赖根据README.md至少需要Eigen3OpenCV ( 4.2)yaml-cppglog/gflagsCeres可选ROS若走 ROS 入口2) 编译非 ROS在项目根目录执行mkdir buildcd buildcmake .. -DCMAKE_BUILD_TYPEReleasemake -j83) 运行主程序非 ROS./gici_main gici-config-file配置文件示例通常在option/*.yaml。4) ROS 路径可选在ros_wrapper下catkin_make -DCMAKE_BUILD_TYPEReleasesource ./devel/setup.bashrosrun gici_ros gici_ros_main gici-config-fileROS 配置示例通常在ros_wrapper/src/gici/option/*.yaml。
GICI :代码学习1
1) 项目启动入口与关键函数主程序入口非 ROS入口文件e:\gici-open-master\src\gici_main.cpp可执行名gici_main由e:\gici-open-master\CMakeLists.txt定义关键函数int main(int argc, char** argv)启动链路要点读取 YAML 配置YAML::LoadFile(...)构建NodeOptionHandle构建NodeHandle调用SpinControl::run()进入主循环ROS 入口入口文件e:\gici-open-master\ros_wrapper\src\gici\src\gici_ros_main.cpp可执行名gici_ros_main由ros_wrapper/src/gici/CMakeLists.txt定义关键函数int main(int argc, char** argv)启动链路要点ros::init(...)读取 YAML 配置构建NodeOptionHandle构建RosNodeHandleros::spin()进入 ROS 事件循环其它 CLI 工具入口多可执行坐标/时间转换tools/conversions/*如ecef_to_lla,lla_to_ecef,gpst_to_unix等数据编辑tools/edit_binary/*如correct_imu_timestamp,cut_files评测转换与对齐tools/evaluation/*如nmea_to_tum,nmea_align_timestampROS 辅助工具tools/ros/src/gici_tools/*如gici_files_to_rosbag,publish_tum_poses这些入口均为各自src/*.cpp/src/*.c的main(...)由对应子目录CMakeLists.txt的add_executable(...)定义。2) 架构概述按模块这个仓库可理解为“核心库 ROS 包装 工具集 三方库”核心库gici代码位置src/*与include/gici/*模块划分从根CMakeLists.txt可见src/stream流输入输出与数据管线src/gnssGNSS 因子/估计器src/imuIMU 因子/误差模型src/vision视觉特征与重投影误差src/estimate参数块、边缘化、优化相关src/fusion多传感器融合估计器src/utility配置、信号处理、全局控制等产物共享库gici 可执行gici_mainROS 包装层代码位置ros_wrapper/src/gici作用把核心管线与 ROS topic/消息打通关键类RosNodeHandle继承/扩展NodeHandle将 ROS stream 与 estimator 管线重绑工具层离线处理 / 格式转换 / ROS 工具代码位置tools/*职责数据格式转换、时间戳/二进制编辑、评测辅助、rosbag 转换与发布第三方子模块代码位置third_party/*包括rtklib、rpg_vikit、rpg_svo、fast根构建通过add_subdirectory(...)直接纳入调用关系核心主线main/ros_main- 读取 YAML -NodeOptionHandle解析节点关系 -NodeHandle/RosNodeHandle组装并绑定数据管线 -Streaming/FilesReading输入 -MultiSensorEstimating融合估计 - 输出到 stream/ROS。3) 运行步骤安装、开发、构建、运行、配置依赖安装README 明确必需Eigen3、OpenCV(4.2)、yaml-cpp、glog(gflags)、Ceres可选ROS用于 ROS wrapper非 ROS 构建与运行README 给出的标准流程mkdir build cd buildcmake .. -DCMAKE_BUILD_TYPEReleasemake -j8运行./gici_main gici-config-fileROS 构建与运行README 给出的流程进入ros_wrappercatkin_make -DCMAKE_BUILD_TYPEReleasesource ./devel/setup.bash运行rosrun gici_ros gici_ros_main gici-config-file常见配置/环境要求必须提供 YAML 配置文件路径 作为唯一参数主程序和 ROS 入口都检查argc 2配置示例目录非 ROSe:\gici-open-master\option\*.yamlROSe:\gici-open-master\ros_wrapper\src\gici\option\*.yaml日志配置项YAML常见键logging.enablelogging.min_log_levellogging.log_to_stderrlogging.file_directory构建开关CMAKE_BUILD_TYPEREADME/根 CMake 使用IS_ARM根 CMake 中用于 ARM 优化分支开发模式 / 生产运行说明仓库未区分前端常见的 dev/prod 命令体系主要是 CMake 编译类型区分Debug/Release。“生产运行”可理解为以Release构建后直接运行二进制gici_main或 ROS 节点。4) 多种运行方式总结C 原生二进制主方式gici_mainROS 方式gici_ros_mainrosrun多种独立 CLI 工具tools/*下多个add_executableDocker / Compose未发现Node / Python 应用入口未发现无package.json、pyproject.toml、requirements.txt5运行步骤1) 准备依赖根据README.md至少需要Eigen3OpenCV ( 4.2)yaml-cppglog/gflagsCeres可选ROS若走 ROS 入口2) 编译非 ROS在项目根目录执行mkdir buildcd buildcmake .. -DCMAKE_BUILD_TYPEReleasemake -j83) 运行主程序非 ROS./gici_main gici-config-file配置文件示例通常在option/*.yaml。4) ROS 路径可选在ros_wrapper下catkin_make -DCMAKE_BUILD_TYPEReleasesource ./devel/setup.bashrosrun gici_ros gici_ros_main gici-config-fileROS 配置示例通常在ros_wrapper/src/gici/option/*.yaml。