energy change
This commit is contained in:
@@ -27,12 +27,14 @@ public:
|
|||||||
Energy(Serial &u, uint8_t &color);//构造函数,参数为串口和敌方颜色
|
Energy(Serial &u, uint8_t &color);//构造函数,参数为串口和敌方颜色
|
||||||
~Energy();//默认析构函数
|
~Energy();//默认析构函数
|
||||||
|
|
||||||
void run(cv::Mat &gimbal_src, cv::Mat &chassis_src);
|
void runBig(cv::Mat &gimbal_src, cv::Mat &chassis_src);
|
||||||
void run(cv::Mat &gimbal_src);
|
void runBig(cv::Mat &gimbal_src);
|
||||||
void runSmall(cv::Mat &gimbal_src);
|
void runSmall(cv::Mat &gimbal_src);
|
||||||
|
|
||||||
Serial &serial;//串口
|
Serial &serial;//串口
|
||||||
void setEnergyInit();//设置能量机关初始化
|
void setEnergyInit();//设置能量机关初始化
|
||||||
|
void setBigEnergyInit();//设置大能量机关初始化
|
||||||
|
void setSmallEnergyInit();//设置小能量机关初始化
|
||||||
void sendTarget(Serial &serial, float x, float y, float z);
|
void sendTarget(Serial &serial, float x, float y, float z);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -44,4 +44,33 @@ void Energy::setEnergyInit() {
|
|||||||
is_small = false;
|
is_small = false;
|
||||||
is_gimbal = true;
|
is_gimbal = true;
|
||||||
is_chassis = false;
|
is_chassis = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
|
// 此函数为大能量机关再初始化函数
|
||||||
|
// ---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void Energy::setBigEnergyInit() {
|
||||||
|
initEnergy();
|
||||||
|
initEnergyPartParam();
|
||||||
|
|
||||||
|
is_big = true;
|
||||||
|
is_small = false;
|
||||||
|
is_gimbal = true;
|
||||||
|
is_chassis = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
|
// 此函数为大能量机关再初始化函数
|
||||||
|
// ---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void Energy::setSmallEnergyInit() {
|
||||||
|
initEnergy();
|
||||||
|
initEnergyPartParam();
|
||||||
|
|
||||||
|
is_big = false;
|
||||||
|
is_small = true;
|
||||||
|
is_gimbal = true;
|
||||||
|
is_chassis = false;
|
||||||
}
|
}
|
||||||
@@ -12,9 +12,9 @@ using namespace cv;
|
|||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
// 此函数为能量机关模式主控制流函数,且步兵需要同时拥有云台摄像头和底盘摄像头
|
// 此函数为能量机关模式主控制流函数,且步兵需要同时拥有云台摄像头和底盘摄像头
|
||||||
// ---------------------------------------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------------------------------------
|
||||||
void Energy::run(cv::Mat &gimbal_src, cv::Mat &chassis_src) {
|
void Energy::runBig(cv::Mat &gimbal_src, cv::Mat &chassis_src) {
|
||||||
if (chassis_src.empty())
|
if (chassis_src.empty())
|
||||||
run(gimbal_src);//仅拥有云台摄像头则调用单摄像头的run函数
|
runBig(gimbal_src);//仅拥有云台摄像头则调用单摄像头的run函数
|
||||||
else if (is_gimbal) {
|
else if (is_gimbal) {
|
||||||
energy_part_param_ = gimbal_energy_part_param_;
|
energy_part_param_ = gimbal_energy_part_param_;
|
||||||
clearAll();
|
clearAll();
|
||||||
@@ -82,7 +82,7 @@ void Energy::run(cv::Mat &gimbal_src, cv::Mat &chassis_src) {
|
|||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
// 此函数为能量机关模式主控制流函数,且步兵仅拥有云台摄像头
|
// 此函数为能量机关模式主控制流函数,且步兵仅拥有云台摄像头
|
||||||
// ---------------------------------------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------------------------------------
|
||||||
void Energy::run(cv::Mat &gimbal_src) {
|
void Energy::runBig(cv::Mat &gimbal_src) {
|
||||||
energy_part_param_ = gimbal_energy_part_param_;
|
energy_part_param_ = gimbal_energy_part_param_;
|
||||||
clearAll();
|
clearAll();
|
||||||
initImage(gimbal_src);
|
initImage(gimbal_src);
|
||||||
@@ -127,11 +127,10 @@ void Energy::run(cv::Mat &gimbal_src) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
// 此函数为小能量机关模式主控制流函数,击打小符只需要拥有云台摄像头
|
// 此函数为小能量机关模式主控制流函数,击打小符只需要拥有云台摄像头
|
||||||
// ---------------------------------------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------------------------------------
|
||||||
void Energy::runSmall(cv::Mat &gimbal_src){
|
void Energy::runSmall(cv::Mat &gimbal_src) {
|
||||||
energy_part_param_ = gimbal_energy_part_param_;
|
energy_part_param_ = gimbal_energy_part_param_;
|
||||||
clearAll();
|
clearAll();
|
||||||
initImage(gimbal_src);
|
initImage(gimbal_src);
|
||||||
|
|||||||
24
main.cpp
24
main.cpp
@@ -92,11 +92,11 @@ int main(int argc, char *argv[]) {
|
|||||||
cout << "start running" << endl;
|
cout << "start running" << endl;
|
||||||
do {
|
do {
|
||||||
CNT_TIME("Total", {
|
CNT_TIME("Total", {
|
||||||
if (mcuData.state != ARMOR_STATE) {//能量机关模式
|
if (mcuData.state == BIG_ENERGY_STATE) {//大能量机关模式
|
||||||
if (last_state == ARMOR_STATE) {//若上一帧是自瞄模式,即刚往完成切换,则需要初始化
|
if (last_state != BIG_ENERGY_STATE) {//若上一帧不是大能量机关模式,即刚往完成切换,则需要初始化
|
||||||
destroyAllWindows();
|
destroyAllWindows();
|
||||||
((CameraWrapper *) video_gimbal)->changeBrightness(ENERGY_CAMERA_GAIN);
|
((CameraWrapper *) video_gimbal)->changeBrightness(ENERGY_CAMERA_GAIN);
|
||||||
energy.setEnergyInit();
|
energy.setBigEnergyInit();
|
||||||
checkReconnect(video_chassis->read(chassis_src));
|
checkReconnect(video_chassis->read(chassis_src));
|
||||||
#ifdef CHASSIS_FLIP_MODE
|
#ifdef CHASSIS_FLIP_MODE
|
||||||
flip(chassis_src, chassis_src, CHASSIS_FLIP_MODE);
|
flip(chassis_src, chassis_src, CHASSIS_FLIP_MODE);
|
||||||
@@ -110,8 +110,22 @@ int main(int argc, char *argv[]) {
|
|||||||
if (!from_camera) extract(gimbal_src, chassis_src);
|
if (!from_camera) extract(gimbal_src, chassis_src);
|
||||||
if (save_video) saveVideos(gimbal_src, chassis_src);//保存视频
|
if (save_video) saveVideos(gimbal_src, chassis_src);//保存视频
|
||||||
if (show_origin) showOrigin(gimbal_src, chassis_src);//显示原始图像
|
if (show_origin) showOrigin(gimbal_src, chassis_src);//显示原始图像
|
||||||
// energy.run(gimbal_src, chassis_src);
|
energy.runBig(gimbal_src, chassis_src);
|
||||||
energy.run(gimbal_src);
|
last_state = mcuData.state;//更新上一帧状态
|
||||||
|
} else if (mcuData.state == SMALL_ENERGY_STATE) {
|
||||||
|
if (mcuData.state != SMALL_ENERGY_STATE) {
|
||||||
|
destroyAllWindows();
|
||||||
|
((CameraWrapper *) video_gimbal)->changeBrightness(ENERGY_CAMERA_GAIN);
|
||||||
|
energy.setSmallEnergyInit();
|
||||||
|
}
|
||||||
|
ok = checkReconnect(video_gimbal->read(gimbal_src));
|
||||||
|
#ifdef GIMBAL_FLIP_MODE
|
||||||
|
flip(gimbal_src, gimbal_src, GIMBAL_FLIP_MODE);
|
||||||
|
#endif
|
||||||
|
if (!from_camera) extract(gimbal_src);
|
||||||
|
if (save_video) saveVideos(gimbal_src);//保存视频
|
||||||
|
if (show_origin) showOrigin(gimbal_src);//显示原始图像
|
||||||
|
energy.runSmall(gimbal_src);
|
||||||
last_state = mcuData.state;//更新上一帧状态
|
last_state = mcuData.state;//更新上一帧状态
|
||||||
} else { // 自瞄模式
|
} else { // 自瞄模式
|
||||||
if (last_state != ARMOR_STATE) {
|
if (last_state != ARMOR_STATE) {
|
||||||
|
|||||||
Reference in New Issue
Block a user