energy changed a lot

This commit is contained in:
sun
2019-08-13 22:36:26 +08:00
parent 05527de9e2
commit 9d94de939b
32 changed files with 282 additions and 1363 deletions

View File

@@ -29,17 +29,11 @@ bool checkReconnect(bool is_camera_0_connect, bool is_camera_1_connect);
bool checkReconnect(bool is_camera_connect);
void saveVideos(const cv::Mat &gimbal_src, const cv::Mat &chassis_src);
void saveVideos(const cv::Mat &src);
void saveVideos(const cv::Mat &gimbal_src);
void showOrigin(const cv::Mat &src);
void showOrigin(const cv::Mat &gimbal_src, const cv::Mat &chassis_src);
void showOrigin(const cv::Mat &gimbal_src);
void extract(cv::Mat &gimbal_src, cv::Mat &chassis_src);
void extract(cv::Mat &gimbal_src);
void extract(cv::Mat &src);
double getTimeIntervalms(const systime &now, const systime &last);

View File

@@ -30,52 +30,45 @@
#ifndef ARMOR_CAMERA_GAIN
#define ARMOR_CAMERA_GAIN (30)
#define ARMOR_CAMERA_GAIN (64)
#endif
#ifndef ENERGY_CAMERA_GAIN
#define ENERGY_CAMERA_GAIN (20)
#define ENERGY_CAMERA_GAIN (30)
#endif
#ifndef ROBOT_ID
#define ROBOT_ID (0)
#ifndef YAW_AIM_KD
#define YAW_AIM_KD (0.4)
#endif
#ifndef YAW_AIM_KP
#define YAW_AIM_KP (0.75)
#endif
#ifndef YAW_AIM_KI
#define YAW_AIM_KI (0.01)
#endif
#ifndef PITCH_AIM_KD
#define PITCH_AIM_KD (0.4)
#endif
#ifndef PITCH_AIM_KP
#define PITCH_AIM_KP (0.75)
#endif
#ifndef PITCH_AIM_KI
#define PITCH_AIM_KI (0.01)
#endif
#ifndef SMALL_YAW_AIM_KD
#define SMALL_YAW_AIM_KD (0.35)
#ifndef RED_COMPENSATE_YAW
#define RED_COMPENSATE_YAW (5)
#endif
#ifndef SMALL_YAW_AIM_KP
#define SMALL_YAW_AIM_KP (0.85)
#ifndef RED_COMPENSATE_PITCH
#define RED_COMPENSATE_PITCH (74)
#endif
#ifndef SMALL_PITCH_AIM_KD
#define SMALL_PITCH_AIM_KD (0.35)
#ifndef BLUE_COMPENSATE_YAW
#define BLUE_COMPENSATE_YAW (5)
#endif
#ifndef SMALL_PITCH_AIM_KP
#define SMALL_PITCH_AIM_KP (0.85)
#endif
#ifndef BIG_YAW_AIM_KD
#define BIG_YAW_AIM_KD (0.35)
#endif
#ifndef BIG_YAW_AIM_KP
#define BIG_YAW_AIM_KP (0.85)
#endif
#ifndef BIG_YAW_AIM_KI
#define BIG_YAW_AIM_KI (0)
#endif
#ifndef BIG_PITCH_AIM_KD
#define BIG_PITCH_AIM_KD (0.35)
#endif
#ifndef BIG_PITCH_AIM_KP
#define BIG_PITCH_AIM_KP (0.85)
#endif
#ifndef BIG_PITCH_AIM_KI
#define BIG_PITCH_AIM_KI (0)
#endif
#ifndef COMPENSATE_YAW
#define COMPENSATE_YAW (5)
#endif
#ifndef COMPENSATE_PITCH
#define COMPENSATE_PITCH (74)
#ifndef BLUE_COMPENSATE_PITCH
#define BLUE_COMPENSATE_PITCH (74)
#endif
#ifndef EXTRA_DELTA_X
#define EXTRA_DELTA_X (0)
#endif

View File

@@ -16,7 +16,6 @@
#define BIG_ENERGY_STATE 'b'
#define SMALL_ENERGY_STATE 's'
#define ARMOR_STATE 'a'
#define INIT_STATE 0
#define FOCUS_PIXAL_8MM (1488)
#define FOCUS_PIXAL_5MM (917)

View File

@@ -20,8 +20,7 @@
using namespace std;
using namespace cv;
extern WrapperHead *video_gimbal;
extern WrapperHead *video_chassis;
extern WrapperHead *video;
extern Serial serial;
extern uint8_t last_state;
@@ -74,102 +73,44 @@ cv::VideoWriter initVideoWriter(const std::string &filename_prefix) {
return video;
}
bool checkReconnect(bool is_camera_0_connect, bool is_camera_1_connect) {
if (!is_camera_0_connect) {
int curr_gain = ((CameraWrapper* )video_gimbal)->gain;
int curr_exposure = ((CameraWrapper* )video_gimbal)->exposure;
delete video_gimbal;
video_gimbal = new CameraWrapper(curr_exposure, curr_gain, 0/*, "armor"*/);
is_camera_0_connect = video_gimbal->init();
}
if (!is_camera_1_connect) {
int curr_gain = ((CameraWrapper* )video_gimbal)->gain;
int curr_exposure = ((CameraWrapper* )video_gimbal)->exposure;
delete video_chassis;
video_chassis = new CameraWrapper(curr_exposure, curr_gain, 0/*, "energy"*/);
is_camera_1_connect = video_chassis->init();
}
return is_camera_0_connect && is_camera_1_connect;
}
bool checkReconnect(bool is_camera_connect) {
if (!is_camera_connect) {
int curr_gain = ((CameraWrapper* )video_gimbal)->gain;
int curr_exposure = ((CameraWrapper* )video_gimbal)->exposure;
delete video_gimbal;
video_gimbal = new CameraWrapper(curr_exposure, curr_gain, 0/*, "armor"*/);
is_camera_connect = video_gimbal->init();
int curr_gain = ((CameraWrapper* )video)->gain;
int curr_exposure = ((CameraWrapper* )video)->exposure;
delete video;
video = new CameraWrapper(curr_exposure, curr_gain, 0/*, "armor"*/);
is_camera_connect = video->init();
}
return is_camera_connect;
}
auto gimbal_video_writer = initVideoWriter(PROJECT_DIR"/gimbal_video/");
auto chassis_video_writer = initVideoWriter(PROJECT_DIR"/chassis_video/");
void saveVideos(const cv::Mat &gimbal_src, const cv::Mat &chassis_src) {
if (!gimbal_src.empty() && !chassis_src.empty()) {
gimbal_video_writer.write(gimbal_src);
Mat chassis_save = chassis_src.clone();
cvtColor(chassis_save, chassis_save, COLOR_GRAY2BGR);
chassis_video_writer.write(chassis_save);
} else if (!gimbal_src.empty() && chassis_src.empty()) {
gimbal_video_writer.write(gimbal_src);
} else if (gimbal_src.empty() && !chassis_src.empty()) {
if (show_origin)imshow("src", gimbal_src);
Mat chassis_save = chassis_src.clone();
cvtColor(chassis_save, chassis_save, COLOR_GRAY2BGR);
chassis_video_writer.write(chassis_save);
} else return;
}
auto video_writer = initVideoWriter(PROJECT_DIR"/video/");
void saveVideos(const cv::Mat &gimbal_src) {
if (!gimbal_src.empty()) {
gimbal_video_writer.write(gimbal_src);
video_writer.write(gimbal_src);
} else return;
}
void showOrigin(const cv::Mat &gimbal_src, const cv::Mat &chassis_src) {
if (!gimbal_src.empty() && !chassis_src.empty()) {
imshow("gimbal", gimbal_src);
imshow("chassis", chassis_src);
} else if (!gimbal_src.empty() && chassis_src.empty()) {
imshow("gimbal", gimbal_src);
} else if (gimbal_src.empty() && !chassis_src.empty()) {
imshow("chassis", chassis_src);
void showOrigin(const cv::Mat &src) {
if (!src.empty()) {
imshow("origin", src);
} else return;
cv::waitKey(1);
}
void showOrigin(const cv::Mat &gimbal_src) {
if (!gimbal_src.empty()) {
imshow("gimbal", gimbal_src);
} else return;
cv::waitKey(1);
}
void extract(cv::Mat &gimbal_src, cv::Mat &chassis_src) {
if (!gimbal_src.empty() && !chassis_src.empty()) {
extract(gimbal_src);
extract(chassis_src);
} else if (!gimbal_src.empty() && chassis_src.empty()) {
extract(gimbal_src);
} else if (gimbal_src.empty() && !chassis_src.empty()) {
extract(chassis_src);
} else return;
}
void extract(cv::Mat &gimbal_src) {//图像预处理将视频切成640×480的大小
if (gimbal_src.empty()) return;
float length = static_cast<float>(gimbal_src.cols);
float width = static_cast<float>(gimbal_src.rows);
void extract(cv::Mat &src) {//图像预处理将视频切成640×480的大小
if (src.empty()) return;
float length = static_cast<float>(src.cols);
float width = static_cast<float>(src.rows);
if (length / width > 640.0 / 480.0) {
length *= 480.0 / width;
resize(gimbal_src, gimbal_src, cv::Size(length, 480));
gimbal_src = gimbal_src(Rect((length - 640) / 2, 0, 640, 480));
resize(src, src, cv::Size(length, 480));
src = src(Rect((length - 640) / 2, 0, 640, 480));
} else {
width *= 640.0 / length;
resize(gimbal_src, gimbal_src, cv::Size(640, width));
gimbal_src = gimbal_src(Rect(0, (width - 480) / 2, 640, 480));
resize(src, src, cv::Size(640, width));
src = src(Rect(0, (width - 480) / 2, 640, 480));
}
}