GKD.RoboCtrl
RoboMaster Linux 电控:异步 IO、设备驱动与机器人控制
载入中...
搜索中...
未找到
ballistics.hpp
1
#pragma once
2
3
#include <cstddef>
4
#include <optional>
5
6
namespace
roboctrl::utils
{
7
9
struct
ballistic_vector
{
10
double
x {};
11
double
y {};
12
double
z {};
13
};
14
15
struct
ballistic_target
{
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
26
struct
ballistic_config
{
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
37
enum class
ballistic_status {
38
success,
39
invalid_config,
40
invalid_input,
41
no_intercept,
42
not_converged,
43
};
44
45
struct
ballistic_solution
{
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
60
std::optional<double>
legacy_ballistic_drag
(
double
bullet_speed);
61
63
std::optional<ballistic_vector>
ballistic_position
(
64
const
ballistic_config& config,
double
speed,
double
yaw,
double
pitch,
double
time);
65
72
ballistic_solution
solve_ballistics
(
73
const
ballistic_config& config,
const
ballistic_target& target,
double
bullet_speed);
74
75
}
// namespace roboctrl::utils
roboctrl::utils
用于存放工具函数的命名空间。
Definition
ballistics.hpp:6
roboctrl::utils::legacy_ballistic_drag
std::optional< double > legacy_ballistic_drag(double bullet_speed)
Definition
ballistics.cpp:89
roboctrl::utils::ballistic_position
std::optional< ballistic_vector > ballistic_position(const ballistic_config &config, double speed, double yaw, double pitch, double time)
Definition
ballistics.cpp:98
roboctrl::utils::solve_ballistics
ballistic_solution solve_ballistics(const ballistic_config &config, const ballistic_target &target, double bullet_speed)
Definition
ballistics.cpp:111
roboctrl::utils::ballistic_config
Definition
ballistics.hpp:26
roboctrl::utils::ballistic_config::drag
double drag
Definition
ballistics.hpp:29
roboctrl::utils::ballistic_solution
Definition
ballistics.hpp:45
roboctrl::utils::ballistic_solution::pitch
double pitch
Definition
ballistics.hpp:49
roboctrl::utils::ballistic_target
Definition
ballistics.hpp:15
roboctrl::utils::ballistic_vector
Definition
ballistics.hpp:9
include
utils
ballistics.hpp
制作者
1.9.8