GKD.RoboCtrl
RoboMaster Linux 电控:异步 IO、设备驱动与机器人控制
载入中...
搜索中...
未找到
base.hpp 文件参考

底盘抽象接口与运行时注册表。 更多...

详细描述

底盘抽象接口与运行时注册表。

控制层只依赖本文件定义的速度和使能接口,具体轮组、电机和运动学由实现类负责。

在文件 base.hpp 中定义.

#include <any>
#include <array>
#include <chrono>
#include <concepts>
#include <functional>
#include <string>
#include <string_view>
#include "utils/utils.hpp"
base.hpp 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

类

class  roboctrl::device::chassis_base
 底盘的统一控制接口。 更多...
 
struct  roboctrl::device::chassis_base::info_type
 底盘初始化参数。 更多...
 
class  roboctrl::device::chassis_registry
 具体底盘实现的运行时工厂注册表。 更多...
 

命名空间

namespace  roboctrl::device
 设备模块
 

概念

concept  roboctrl::device::chassis
 判断类型是否实现底盘抽象。
 

宏定义

#define ROBOCTRL_DETAIL_CAT_IMPL(a, b)   a##b
 
#define ROBOCTRL_DETAIL_CAT(a, b)   ROBOCTRL_DETAIL_CAT_IMPL(a, b)
 
#define ROBOCTRL_REGISTER_CHASSIS(TYPE_NAME, CLASS_NAME)
 

宏定义说明

◆ ROBOCTRL_DETAIL_CAT

#define ROBOCTRL_DETAIL_CAT (   a,
  b 
)    ROBOCTRL_DETAIL_CAT_IMPL(a, b)

在文件 base.hpp 第 84 行定义.

◆ ROBOCTRL_DETAIL_CAT_IMPL

#define ROBOCTRL_DETAIL_CAT_IMPL (   a,
  b 
)    a##b

在文件 base.hpp 第 83 行定义.

◆ ROBOCTRL_REGISTER_CHASSIS

#define ROBOCTRL_REGISTER_CHASSIS (   TYPE_NAME,
  CLASS_NAME 
)
值:
namespace { [[maybe_unused]] const bool ROBOCTRL_DETAIL_CAT(roboctrl_chassis_registered_, __LINE__) = [] { \
return ::roboctrl::device::chassis_registry::register_type( \
(TYPE_NAME), [](const std::any& value) -> ::roboctrl::device::chassis_base* { \
const auto& info = std::any_cast<const CLASS_NAME::info_type&>(value); \
if (!::roboctrl::get<CLASS_NAME>().init(info)) return nullptr; \
return &::roboctrl::get<CLASS_NAME>(); \
}); \
}(); }
底盘的统一控制接口。
Definition base.hpp:23

在文件 base.hpp 第 87 行定义.