GKD.RoboCtrl
RoboMaster Linux 电控:异步 IO、设备驱动与机器人控制
载入中...
搜索中...
未找到
ballistics.hpp
1#pragma once
2
3#include <cstddef>
4#include <optional>
5
6namespace roboctrl::utils {
7
10 double x {};
11 double y {};
12 double z {};
13};
14
16 ballistic_vector position {};
17 ballistic_vector velocity {};
18 double armor_yaw {};
19 double yaw_speed {};
20 double radius {};
21 double alternate_radius {};
22 double alternate_height {};
23 int armor_count {1};
24};
25
27 double gravity {9.81};
29 double drag {0.0};
30 double max_tracking_yaw_speed {5.0};
31 double max_flight_time {5.0};
32 double position_tolerance {0.001};
33 std::size_t bracket_steps {512};
34 std::size_t max_iterations {64};
35};
36
37enum class ballistic_status {
38 success,
39 invalid_config,
40 invalid_input,
41 no_intercept,
42 not_converged,
43};
44
46 ballistic_status status {ballistic_status::invalid_input};
47 double yaw {};
49 double pitch {};
50 double flight_time {};
51 ballistic_vector target_position {};
52 double residual {};
53 int selected_armor {};
54 bool tracking_rotation {};
55 std::size_t iterations {};
56 explicit operator bool() const { return status == ballistic_status::success; }
57};
58
60std::optional<double> legacy_ballistic_drag(double bullet_speed);
61
63std::optional<ballistic_vector> ballistic_position(
64 const ballistic_config& config, double speed, double yaw, double pitch, double time);
65
72ballistic_solution solve_ballistics(
73 const ballistic_config& config, const ballistic_target& target, double bullet_speed);
74
75} // namespace roboctrl::utils
用于存放工具函数的命名空间。
Definition ballistics.hpp:6
std::optional< double > legacy_ballistic_drag(double bullet_speed)
std::optional< ballistic_vector > ballistic_position(const ballistic_config &config, double speed, double yaw, double pitch, double time)
ballistic_solution solve_ballistics(const ballistic_config &config, const ballistic_target &target, double bullet_speed)