Skip to content

Core API reference

头文件均在 include/asuka/ 下,符号位于 namespace asuka。

数据类型(core/types.hpp)

类型 说明
ImuData stamp + linear_acc + angular_vel(Ptr / ConstPtr)
PointXYZITRGB / PointT / PointCloudT 32 B 紧凑点类型,curvature 承载逐点毫秒时间(PCL 滤镜原生兼容),见点云格式
ImageData stamp + shared_ptr<const cv::Mat> image(Ptr / ConstPtr;像素不可变入类型)
LivoxPoint / RobosensePoint / LivoxCustomPoint 原始雷达点(时间单位契约见点云格式)
KeyFrame 帧级输出契约,见扩展开发
LidarType / parse_lidar_type() LIVOX / ROBOSENSE / LIVOX_CUSTOM
FrameId WORLD / LIDAR / IMU / CAMERA

Config / GlobalConfig(utility/config.hpp)

API 说明
GlobalConfig::instance(config_dir) 总配置单例(config/config.json;首次调用定型,目录此后不可变)
GlobalConfig::get_config_path(name) 由 global 段路由出组件配置文件路径
Config::param<T>(module, key, default) 读取参数,缺失回退默认值并 warning
Config::param_cast<T>(module, key) 读取参数,缺失 abort(必选参数用这个)
Config::param_nested<T>(modules, key) 嵌套键读取(如 sensor 块)
Config::override_param / save / has_param 覆写、落盘、存在性查询

支持类型含数值、字符串、std::vector、Eigen::Vector3d/4d、Matrix3d、 Quaterniond、Isometry3d(见 config_impl.hpp 的 ConfigTraits)。

CallbackSlot / Callbacks(utility/callback_slot.hpp, core/callbacks.hpp)

API 说明
CallbackSlot<Func>::add(cb) -> int 注册观察者,返回稳定 id
CallbackSlot<Func>::remove(id) 注销(留空洞,id 不复用)
CallbackSlot<Func>::subscribe(cb) RAII 订阅:返回 CallbackSubscription,析构自动退订(内置扩展的标准形态)
CallbackSlot<Func>::call(args...) 发射(无锁快照遍历,逐观察者异常隔离)
Callbacks::on_insert_imu / on_insert_frame / on_insert_image / on_new_frame / on_odometry_imu / on_odometry_opt 六个核心全局插槽;扩展私有点对点槽可自持于扩展自己的 .so(见扩展开发)

OdometryEstimation(core/odometry_estimation.hpp)

见里程计插件。前端插件须实现 create_odometry_estimation() C 工厂。

CloudPreprocess / ImuPreprocess(core/*.hpp)

类 接口 说明
CloudPreprocess preprocess(stamp, LivoxPoint/RobosensePoint/LivoxCustomPoint cloud) -> PointCloudT::Ptr 距离滤除、抽稀;每算法派生,由算法创建并持有、ROS 层经 cloud_preprocess() 借出调用
ImuPreprocess insert_imu / initialize / is_initialized / get_mean_acceleration / get_mean_gyroscope IMU 静态初始化与去畸变的算法侧基类

ExtensionModule(utility/extension_module.hpp)

API 说明
stop() join 自有线程、停止槽发射;必须幂等,默认空实现
at_exit(dump_path) 退出收尾(如轨迹/地图导出),在全部 stop 之后调用
ExtensionModule::ok() 扩展健康查询(默认 true;有故障模式的模块覆写)
ExtensionModule::load_module(so_name) dlopen 并调用 create_extension_module()
ExtensionModule::load_configured_modules() 加载 config_extensions.json 列出的全部扩展(失败告警跳过)
OdometryEstimation::load_configured() 按 config_odometry 的 so_name 加载前端(失败抛异常)
load_config(name) 便捷加载路由配置(等价 Config(GlobalConfig::get_config_path(name)))

AsukaROS / AsyncOdometryEstimation(asuka_ros.hpp, core/async_odometry_estimation.hpp)

API 说明
AsukaROS(nh) 完成配置加载、插件加载、扩展加载
insert_imu / insert_frame / insert_image ROS 消息入口
workload() / wait(auto_quit) 背压与排空等待(wait 经执行器条件变量检测排空,熔断自停即返回,保持 Ctrl-C 响应)
ok() 系统健康查询:执行器未熔断/未停止 且 全部扩展 ok()
save(path) 停 worker 并保存地图
extensions() 已加载扩展列表
AsyncOdometryEstimation::stop() / is_stopped() 执行器停止(幂等,恒 join)/ 停止态查询(含连续 10 次事件失败熔断自停)
AsyncOdometryEstimation::wait_for(timeout) 有界等待:输入队列与算法 pending 全部排空、或 worker 停止即返回 true,超时返回 false