GKD.RoboCtrl
RoboMaster Linux 电控:异步 IO、设备驱动与机器人控制
载入中...
搜索中...
未找到
aim_link.hpp
1#pragma once
2
3#include "device/base.hpp"
4#include "device/network_protocol.hpp"
5#include "io/udp_server.hpp"
6
7namespace roboctrl::device {
8
9class aim_link : public device_base {
10public:
11 struct info_type {
12 using key_type = std::string;
13 using owner_type = aim_link;
14 std::string key_;
15 std::string udp_name;
16 std::string address{"127.0.0.1"};
17 std::uint16_t port{11453};
18 std::uint8_t header{0x6a};
19 std::uint32_t target_timeout_ms{100};
20 vision_wire_format wire_format{vision_wire_format::legacy_14};
21 const std::string& key() const { return key_; }
22 };
23 explicit aim_link(const info_type& info);
24 void connect();
25 void start();
26 std::optional<aim_target> target() const;
27 awaitable<void> send_posture(float yaw, float pitch, bool red);
28 std::string desc() const { return std::format("vision link {}", info_.key_); }
29
30private:
31 info_type info_;
32 io::udp_server* udp_{};
33 io::udp_server::endpoint peer_;
34 network_protocol::fresh_value<aim_target> target_;
35 bool started_{};
36};
37
39public:
40 struct info_type {
41 using key_type = std::string;
43 std::string key_;
44 std::string udp_name;
45 std::string address{"127.0.0.1"};
46 std::uint16_t port{11456};
47 std::uint32_t target_timeout_ms{200};
48 const std::string& key() const { return key_; }
49 };
50 explicit navigation_link(const info_type& info);
51 void connect();
52 void start();
53 std::optional<navigation_command> command() const;
54 awaitable<void> send_status(float yaw, float hp_fraction, bool match_started);
55 std::string desc() const { return std::format("navigation link {}", info_.key_); }
56
57private:
58 info_type info_;
59 io::udp_server* udp_{};
60 io::udp_server::endpoint peer_;
61 network_protocol::fresh_value<navigation_command> command_;
62 bool started_{};
63};
64} // namespace roboctrl::device
设备抽象基类与通用概念。
asio::awaitable< T > awaitable
协程任务类型。
Definition async.hpp:46
设备基础类,提供判断设备离线的基础功能
Definition base.hpp:38