GKD.RoboCtrl
载入中...
搜索中...
未找到
robot.h
1#pragma once
2
3#include <string>
4
5#include "core/async.hpp"
6#include "ctrl/chassis.h"
7#include "ctrl/gimbal.h"
8#include "ctrl/shoot.h"
9#include "utils/singleton.hpp"
10#include "utils/utils.hpp"
11
12namespace roboctrl::ctrl{
13
14enum class robot_state{
15 NoForce,
16 FinishInit,
17 FollowGimbal,
18 Search,
19 Idle,
20 NotFollow
21};
22
23class robot : public utils::singleton_base<robot>,public logable<robot>{
24public:
25 robot() = default;
26 struct info_type{
27 using owner_type = robot;
28 gimbal::info_type gimbal_info;
29 chassis::info_type chassis_info;
30 shoot::info_type shoot_info;
31 };
32
33 bool init(const info_type& info);
34 std::string desc()const{return "robot";}
35
37 inline void set_velocity(fp32 x,fp32 y){
38 roboctrl::get<chassis>().set_velocity({x,y});
39 }
40 inline void set_velocity(vectorf velocity){
41 roboctrl::get<chassis>().set_velocity(velocity);
42 }
43
44 inline vectorf velocity()const{return roboctrl::get<chassis>().velocity();}
45
46 inline fp32 gimbal_yaw()const{return roboctrl::get<chassis>().gimbal_yaw();}
47 inline void set_gimbal_yaw(fp32 yaw){roboctrl::get<chassis>().set_gimbal_yaw(yaw);}
48
49 inline void set_chassis_rotate_speed(fp32 speed){roboctrl::get<chassis>().set_rotate_speed(speed);}
50 inline fp32 chassis_rotate_speed()const{return roboctrl::get<chassis>().rotate_speed();}
51
52 robot_state state()const{return state_;}
53 void set_state(robot_state state){state_ = state;}
54private:
55 robot_state state_ {robot_state::Idle};
56};
57
58static_assert(utils::singleton<robot>);
59}
异步任务上下文组件。
用于提供日志功能的辅助基类 通过CRTP模式实现,要求派生类实现desc()方法以提供描述信息,在继承时传入派生类自身类型作为模板参数。 继承这个类后,派生类可以方便地使用log_debug、log_i...
Definition logger.h:178
提供单例模式的单例基类
Definition singleton.hpp:19
云台控制器。
asio::awaitable< T > awaitable
协程任务类型。
Definition async.hpp:42
常用数值与字节工具集合。
float fp32
单精度浮点别名。
Definition utils.hpp:22