GKD.RoboCtrl
载入中...
搜索中...
未找到
utils.hpp 文件参考

常用数值与字节工具集合。 更多...

详细描述

常用数值与字节工具集合。

定义浮点别名、二维向量操作、字节序列互转等通用帮助函数,方便在设备与通信模块间复用。

在文件 utils.hpp 中定义.

#include <concepts>
#include <cstdint>
#include <cstring>
#include <chrono>
#include <cassert>
#include <cmath>
#include <numbers>
#include <type_traits>
#include "utils/concepts.hpp"

浏览源代码.

struct  roboctrl::vector< T >
 简单的二维向量类型。 更多...
 
struct  roboctrl::utils::function_arg< Ret(*)(Arg)>
 
struct  roboctrl::utils::function_arg< Ret(Class::*)(Arg) const >
 

命名空间

namespace  roboctrl::utils
 用于存放工具函数的命名空间。
 

概念

concept  roboctrl::utils::byte_container
 描述具有 data()size() 接口的字节容器。
 

类型定义

using roboctrl::fp32 = float
 单精度浮点别名。
 
using roboctrl::fp64 = double
 双精度浮点别名。
 
using roboctrl::vectori = vector< int >
 
using roboctrl::vectorf = vector< float >
 
template<typename Fn >
using roboctrl::utils::function_arg_t = typename function_arg< decltype(&Fn::operator())>::type
 

函数

template<typename T >
vector< T > roboctrl::operator+ (vector< T > a, vector< T > b)
 
template<typename T >
vector< T > roboctrl::operator- (vector< T > a, vector< T > b)
 
template<typename T >
vector< T > roboctrl::operator* (vector< T > a, T b)
 
template<typename T >
vector< T > roboctrl::operator/ (vector< T > a, T b)
 
constexpr fp32 roboctrl::utils::rad_format (fp32 ang)
 将角度限制到[-Pi,Pi]范围内
 
template<package T, byte_container C>
roboctrl::utils::from_bytes (const C &bytes)
 将字节容器内容反序列化为平凡类型。
 
template<package T, typename C >
requires requires(C& c) { { c.data() } -> std::convertible_to<std::byte*>; { c.size() } -> std::convertible_to<std::size_t>; }
void roboctrl::utils::to_bytes (const T &t, C &container)
 将平凡类型序列化到指定容器。
 
auto roboctrl::utils::now ()
 记录程序启动后的纳秒级时间戳。
 
constexpr uint16_t roboctrl::utils::make_u16 (uint16_t high, uint16_t low) noexcept
 将高低字节组合成无符号 16 位整数。
 
constexpr int16_t roboctrl::utils::make_i16 (int16_t high, int16_t low) noexcept
 将高低字节组合成有符号 16 位整数。
 
constexpr std::byte roboctrl::utils::to_byte (std::integral auto v) noexcept
 辅助将整数转换为 std::byte
 

变量

template<typename T >
constexprroboctrl::Pi = std::numbers::pi_v<T>
 常量 Pi 的模板实例。
 
constexpr auto roboctrl::Pi_f = Pi<fp32>
 单精度浮点类型的 Pi 常量。
 

类型定义说明

◆ fp32

using roboctrl::fp32 = typedef float

单精度浮点别名。

在文件 utils.hpp22 行定义.

◆ fp64

using roboctrl::fp64 = typedef double

双精度浮点别名。

在文件 utils.hpp24 行定义.

◆ vectorf

using roboctrl::vectorf = typedef vector<float>

在文件 utils.hpp63 行定义.

◆ vectori

using roboctrl::vectori = typedef vector<int>

在文件 utils.hpp62 行定义.

函数说明

◆ operator*()

template<typename T >
vector< T > roboctrl::operator* ( vector< T >  a,
b 
)

在文件 utils.hpp80 行定义.

◆ operator+()

template<typename T >
vector< T > roboctrl::operator+ ( vector< T >  a,
vector< T >  b 
)

在文件 utils.hpp67 行定义.

◆ operator-()

template<typename T >
vector< T > roboctrl::operator- ( vector< T >  a,
vector< T >  b 
)

在文件 utils.hpp74 行定义.

◆ operator/()

template<typename T >
vector< T > roboctrl::operator/ ( vector< T >  a,
b 
)

在文件 utils.hpp86 行定义.

变量说明

◆ Pi

template<typename T >
constexpr T roboctrl::Pi = std::numbers::pi_v<T>
constexpr

常量 Pi 的模板实例。

模板参数
T目标浮点类型

在文件 utils.hpp31 行定义.

◆ Pi_f

constexpr auto roboctrl::Pi_f = Pi<fp32>
constexpr

单精度浮点类型的 Pi 常量。

在文件 utils.hpp34 行定义.

被这些函数引用 roboctrl::utils::rad_format() , 以及 roboctrl::device::motor_base::rpm().