rm_controllers
Loading...
Searching...
No Matches
ballistic_solver.h
Go to the documentation of this file.
1//
2// Created by ljyi on 25-9-20.
3//
4
5#pragma once
6
7#include <std_msgs/Bool.h>
8#include <std_msgs/Float32.h>
9#include <std_msgs/Float64.h>
10#include <realtime_tools/realtime_buffer.h>
11#include <tf2_geometry_msgs/tf2_geometry_msgs.h>
12#include <geometry_msgs/TransformStamped.h>
13#include <dynamic_reconfigure/server.h>
14#include <rm_gimbal_controllers/BallisticSolverConfig.h>
15#include <rm_common/linear_interpolation.h>
16#include <rm_common/ros_utilities.h>
17#include <rm_common/ori_tool.h>
18#include <rm_msgs/ShootData.h>
19#include <rm_msgs/TrackData.h>
20
22{
30
32{
33public:
34 explicit BallisticSolver(ros::NodeHandle& nh);
35 ~BallisticSolver() = default;
36 double simulate(double pitch_angle_, double initial_vel_, double target_dis, double target_hgt);
37 void solver(const geometry_msgs::TransformStamped& base2gimbal, double& yaw, double& pitch);
38 void reconfigCB(rm_gimbal_controllers::BallisticSolverConfig& config, uint32_t);
39
40private:
41 void base2targetDataCB(const geometry_msgs::PointConstPtr& msg);
42 ros::Subscriber base2target_data_sub_;
43 dynamic_reconfigure::Server<rm_gimbal_controllers::BallisticSolverConfig>* d_srv_{};
44 BallisticConfig config_{};
45 realtime_tools::RealtimeBuffer<BallisticConfig> config_rt_buffer_;
46 rm_common::LinearInterp output_pitch_match_lut_;
47 bool dynamic_reconfig_initialized_{};
48 geometry_msgs::Point base2target_;
49 std::mutex data_mutex_;
50 std::atomic<bool> base2target_data_valid_{ false };
51};
52} // namespace rm_gimbal_controllers
Definition ballistic_solver.h:32
void reconfigCB(rm_gimbal_controllers::BallisticSolverConfig &config, uint32_t)
Definition ballistic_solver.cpp:136
void solver(const geometry_msgs::TransformStamped &base2gimbal, double &yaw, double &pitch)
Definition ballistic_solver.cpp:38
double simulate(double pitch_angle_, double initial_vel_, double target_dis, double target_hgt)
Definition ballistic_solver.cpp:83
BallisticSolver(ros::NodeHandle &nh)
Definition ballistic_solver.cpp:9
Definition ballistic_solver.h:22
Definition ballistic_solver.h:24
double newton_pitch_epsilon
Definition ballistic_solver.h:27
double Cd_slope
Definition ballistic_solver.h:25
int max_newton_iterations
Definition ballistic_solver.h:28
double mass
Definition ballistic_solver.h:25
double Cd_distance
Definition ballistic_solver.h:25
double rk4_simulate_step
Definition ballistic_solver.h:26
double g
Definition ballistic_solver.h:25
double gun_offset_x
Definition ballistic_solver.h:25
double max_newton_step
Definition ballistic_solver.h:27
double air_density
Definition ballistic_solver.h:25
double initial_vel
Definition ballistic_solver.h:26
double Cd_value
Definition ballistic_solver.h:25
double newton_convergence_tol
Definition ballistic_solver.h:27
double gun_offset_z
Definition ballistic_solver.h:25
double radius
Definition ballistic_solver.h:25