Merge remote-tracking branch 'origin/master'

# Conflicts:
#	armor/src/armor_finder/anti_top/anti_top.cpp
#	energy/src/energy/find/energy_finder.cpp
This commit is contained in:
xinyang
2019-08-05 01:16:30 +08:00
34 changed files with 18041 additions and 18043 deletions

View File

@@ -79,11 +79,11 @@ public:
explicit ArmorBox(const cv::Rect &pos=cv::Rect2d(), const LightBlobs &blobs=LightBlobs(), uint8_t color=0, int i=0);
cv::Point2f getCenter() const;
double getBlobsDistance() const;
double lengthDistanceRatio() const;
double getBoxDistance() const;
BoxOrientation getOrientation() const;
// double
bool operator<(const ArmorBox &box) const;
};
@@ -107,24 +107,19 @@ private:
NORMAL, ANTI_TOP
} AntiTopState;
typedef enum{
INCREASE, DECREASE, NOCHANGE
} BoxRatioChangeType;
systime frame_time; // 当前帧对应时间;
const uint8_t &enemy_color; // 敌方颜色,引用外部变量,自动变化
State state; // 自瞄状态对象实例
ArmorBox armor_box; // 当前目标装甲板
ArmorBox target_box, last_box; // 目标装甲板
int anti_switch_cnt; // 防止乱切目标计数器
cv::Ptr<cv::Tracker> tracker; // tracker对象实例
Classifier classifier; // CNN分类器对象实例用于数字识别
int contour_area; // 装甲区域亮点个数,用于数字识别未启用时判断是否跟丢(已弃用)
int contour_area; // 装甲区域亮点个数,用于数字识别未启用时判断是否跟丢(已弃用)
int tracking_cnt; // 记录追踪帧数,用于定时退出追踪
Serial &serial; // 串口对象,引用外部变量,用于和能量机关共享同一个变量
const uint8_t &use_classifier; // 标记是否启用CNN分类器引用外部变量自动变化
RoundQueue<double, 4> top_periodms;
RoundQueue<double, 5> box_ratioes;
RoundQueue<double, 4> top_periodms; // 陀螺周期循环队列
systime last_front_time; // 上一次发生装甲板方向切换的时间
BoxRatioChangeType last_ratio_type;
int anti_top_cnt; // 满足条件的装甲板方向切换持续次数,用于反陀螺
AntiTopState anti_top_state; // 当前是否识别到陀螺
@@ -135,12 +130,11 @@ private:
bool stateTrackingTarget(cv::Mat &src); // tracking state主函数
bool stateStandBy(); // stand by state主函数已弃用
void antiTop(); // 反小陀螺
BoxRatioChangeType getRatioChangeType(RoundQueue<double, 5> &vec);
void antiTop(); // 反小陀螺
bool sendBoxPosition(uint16_t shoot); // 和主控板通讯
public:
void run(cv::Mat &src); // 自瞄主函数
bool sendBoxPosition(uint16_t shoot); // 和主控板通讯
};
#endif /* _ARMOR_FINDER_H_ */

View File

@@ -6,13 +6,6 @@
#include <additions.h>
#include <log.h>
static double boxDistance(const cv::Rect2d &a, const cv::Rect2d &b) {
cv::Point2d centerA(a.x + a.width / 2, a.y + a.height / 2);
cv::Point2d centerB(b.x + b.width / 2, b.y + b.height / 2);
auto dist = centerA - centerB;
return sqrt(dist.x * dist.x + dist.y * dist.y);
}
template<int length>
static double mean(RoundQueue<double, length> &vec) {
double sum = 0;
@@ -22,75 +15,16 @@ static double mean(RoundQueue<double, length> &vec) {
return sum / length;
}
ArmorFinder::BoxRatioChangeType ArmorFinder::getRatioChangeType(RoundQueue<double, 5> &vec) {
auto d = (vec[0] - vec[1] + vec[3] + vec[4]);
if (d > 0.15) {
return INCREASE;
} else if (d < -0.15) {
return DECREASE;
} else {
return NOCHANGE;
}
}
/*
void ArmorFinder::antiTop() {
if (target_box.rect == cv::Rect2d()) return;
uint16_t shoot_delay = 0;
auto interval = getTimeIntervalms(frame_time, last_front_time);
box_ratioes.push(target_box.rect.width / target_box.rect.height);
auto change_type = getRatioChangeType(box_ratioes);
auto orientation = target_box.getOrientation();
if (interval > 700) {
anti_top_cnt = 0;
if (anti_top_state == ANTI_TOP) {
anti_top_state = NORMAL;
LOGM(STR_CTR(WORD_YELLOW, "switch to normal"));
}
}
if (change_type == INCREASE && last_ratio_type != change_type) {
last_front_time = frame_time;
if (150 < interval && interval < 700) {
if (anti_top_state == ANTI_TOP) {
top_periodms.push(interval);
LOGM(STR_CTR(WORD_LIGHT_GREEN, "top period: %.1lf ms"), interval);
systime curr_time;
getsystime(curr_time);
auto calculate_time = getTimeIntervalms(curr_time, frame_time);
shoot_delay = mean(top_periodms) - calculate_time;
} else if (anti_top_state == NORMAL) {
if (++anti_top_cnt > 4) {
anti_top_state = ANTI_TOP;
LOGM(STR_CTR(WORD_CYAN, "switch to anti-top"));
}
}
}
}
if (change_type != NOCHANGE) {
last_ratio_type = change_type;
}
if (anti_top_state == ANTI_TOP) {
if (orientation == ArmorBox::FRONT) {
sendBoxPosition(shoot_delay);
}
} else if (anti_top_state == NORMAL) {
sendBoxPosition(shoot_delay);
}
}
*/
void ArmorFinder::antiTop() {
if (target_box.rect == cv::Rect2d()) return;
uint16_t shoot_delay = 0;
auto interval = getTimeIntervalms(frame_time, last_front_time);
if (anti_top_state == ANTI_TOP && interval > 500) {
if (anti_top_state == ANTI_TOP && interval > 700) {
anti_top_state = NORMAL;
LOGM(STR_CTR(WORD_YELLOW, "switch to normal"));
}
if (last_box.rect != cv::Rect2d() &&
getPointLength(last_box.getCenter() - target_box.getCenter()) > last_box.rect.height * 1.0) {
LOGM("switch! %lf", getPointLength(last_box.getCenter() - target_box.getCenter()) / last_box.rect.height);
if (150 < interval && interval < 500) {
if (getPointLength(last_box.getCenter() - target_box.getCenter()) > last_box.rect.height * 1.5) {
if (150 < interval && interval < 700) {
if (anti_top_state == ANTI_TOP) {
top_periodms.push(interval);
LOGM(STR_CTR(WORD_LIGHT_GREEN, "top period: %.1lf ms"), interval);
@@ -110,8 +44,8 @@ void ArmorFinder::antiTop() {
}
if (anti_top_state == NORMAL) {
sendBoxPosition(0);
} else if (interval < top_periodms[-1] * 0.10) {
sendBoxPosition(0);
} else if (interval < top_periodms[-1] * 0.1){
sendBoxPosition(shoot_delay);
}
last_box = target_box;
}

View File

@@ -8,6 +8,15 @@
ArmorBox::ArmorBox(const cv::Rect &pos, const LightBlobs &blobs, uint8_t color, int i) :
rect(pos), light_blobs(blobs), box_color(color), id(i) {};
cv::Point2f ArmorBox::getCenter() const {
return cv::Point2f(
rect.x + rect.width / 2,
rect.y + rect.height / 2
);
}
double ArmorBox::getBlobsDistance() const {
if (light_blobs.size() == 2) {
auto &x = light_blobs[0].rect.center;
@@ -78,10 +87,10 @@ bool ArmorBox::operator<(const ArmorBox &box) const {
return prior_red[id2name[id]] < prior_red[id2name[box.id]];
}
} else {
auto d1 = (rect.x-IMAGE_CENTER_X)*(rect.x-IMAGE_CENTER_X)
+ (rect.y-IMAGE_CENTER_Y)*(rect.y-IMAGE_CENTER_Y);
auto d2 = (box.rect.x-IMAGE_CENTER_X)*(box.rect.x-IMAGE_CENTER_X)
+ (box.rect.y-IMAGE_CENTER_Y)*(box.rect.y-IMAGE_CENTER_Y);
auto d1 = (rect.x - IMAGE_CENTER_X) * (rect.x - IMAGE_CENTER_X)
+ (rect.y - IMAGE_CENTER_Y) * (rect.y - IMAGE_CENTER_Y);
auto d2 = (box.rect.x - IMAGE_CENTER_X) * (box.rect.x - IMAGE_CENTER_X)
+ (box.rect.y - IMAGE_CENTER_Y) * (box.rect.y - IMAGE_CENTER_Y);
return d1 < d2;
}
}

View File

@@ -50,6 +50,9 @@ ArmorFinder::ArmorFinder(uint8_t &color, Serial &u, const string &paras_folder,
serial(u),
enemy_color(color),
state(STANDBY_STATE),
anti_top_cnt(0),
anti_switch_cnt(0),
anti_top_state(NORMAL),
classifier(paras_folder),
contour_area(0),
use_classifier(use),
@@ -63,15 +66,15 @@ void ArmorFinder::run(cv::Mat &src) {
switch (state) {
case SEARCHING_STATE:
if (stateSearchingTarget(src)) {
if ((armor_box.rect & cv::Rect2d(0, 0, 640, 480)) == armor_box.rect) { // 判断装甲板区域是否脱离图像区域
if ((target_box.rect & cv::Rect2d(0, 0, 640, 480)) == target_box.rect) { // 判断装甲板区域是否脱离图像区域
if (!classifier || !use_classifier) { /* 如果分类器不可用或者不使用分类器 */
cv::Mat roi = src(armor_box.rect).clone(), roi_gray; /* 就使用装甲区域亮点数判断是否跟丢 */
cv::Mat roi = src(target_box.rect).clone(), roi_gray; /* 就使用装甲区域亮点数判断是否跟丢 */
cv::cvtColor(roi, roi_gray, CV_RGB2GRAY);
cv::threshold(roi_gray, roi_gray, 180, 255, cv::THRESH_BINARY);
contour_area = cv::countNonZero(roi_gray);
}
tracker = TrackerToUse::create(); // 成功搜寻到装甲板创建tracker对象
tracker->init(src, armor_box.rect);
tracker->init(src, target_box.rect);
state = TRACKING_STATE;
tracking_cnt = 0;
LOGM(STR_CTR(WORD_LIGHT_CYAN, "into track"));
@@ -92,7 +95,7 @@ end:
antiTop();
if (show_armor_box) { // 根据条件显示当前目标装甲板
showArmorBox("box", src, armor_box);
showArmorBox("box", src, target_box);
cv::waitKey(1);
}
}

View File

@@ -147,9 +147,18 @@ bool ArmorFinder::findArmorBox(const cv::Mat &src, ArmorBox &box) {
armor_box.id = c;
}
}, armor_boxes.size());
sort(armor_boxes.begin(), armor_boxes.end());
if(armor_boxes[0].id != 0){
box = armor_boxes[0];
sort(armor_boxes.begin(), armor_boxes.end(), [&](const ArmorBox &a, const ArmorBox &b){
if(last_box.rect != cv::Rect2d()){
return getPointLength(a.getCenter()-last_box.getCenter()) <
getPointLength(b.getCenter()-last_box.getCenter());
}else{
return a < b;
}
});
for(auto &one_box : armor_boxes){
if(one_box.id != 0){
box = one_box;
}
}
if (save_labelled_boxes) {
for (const auto &one_box : armor_boxes) {

View File

@@ -8,10 +8,31 @@
#include <log.h>
bool ArmorFinder::stateSearchingTarget(cv::Mat &src) {
if(findArmorBox(src, armor_box)){
return true;
}else{
armor_box = ArmorBox();
if (findArmorBox(src, target_box)) {
if (last_box.rect != cv::Rect2d() &&
(getPointLength(last_box.getCenter() - target_box.getCenter()) > last_box.rect.height * 2.0) &&
anti_switch_cnt++ < 3) {
target_box = ArmorBox();
LOGM("anti-switch!");
return false;
} else {
anti_switch_cnt = 0;
return true;
}
} else {
target_box = ArmorBox();
anti_switch_cnt++;
return false;
}
}
/*
bool ArmorFinder::stateSearchingTarget(cv::Mat &src) {
if (findArmorBox(src, target_box)) {
return true;
} else {
target_box = ArmorBox();
return false;
}
}
*/

View File

@@ -42,11 +42,11 @@ static bool sendTarget(Serial &serial, double x, double y, double z, uint16_t sh
}
bool ArmorFinder::sendBoxPosition(uint16_t shoot_delay) {
if (armor_box.rect == cv::Rect2d()) return false;
if (target_box.rect == cv::Rect2d()) return false;
if (shoot_delay) {
LOGM(STR_CTR(WORD_BLUE, "shoot after %dms"), shoot_delay);
LOGM(STR_CTR(WORD_BLUE, "next box %dms"), shoot_delay);
}
auto rect = armor_box.rect;
auto rect = target_box.rect;
double dx = rect.x + rect.width / 2 - IMAGE_CENTER_X;
double dy = rect.y + rect.height / 2 - IMAGE_CENTER_Y;
double yaw = atan(dx / FOCUS_PIXAL) * 180 / PI;

View File

@@ -7,13 +7,13 @@
#include <show_images/show_images.h>
bool ArmorFinder::stateTrackingTarget(cv::Mat &src) {
auto pos = armor_box.rect;
auto pos = target_box.rect;
if(!tracker->update(src, pos)){
armor_box = ArmorBox();
target_box = ArmorBox();
return false;
}
if((pos & cv::Rect2d(0, 0, 640, 480)) != pos){
armor_box = ArmorBox();
target_box = ArmorBox();
return false;
}
@@ -32,35 +32,37 @@ bool ArmorFinder::stateTrackingTarget(cv::Mat &src) {
ArmorBox box;
if(findArmorBox(roi, box)) {
armor_box = box;
armor_box.rect.x += bigger_rect.x;
armor_box.rect.y += bigger_rect.y;
for(auto &blob : armor_box.light_blobs){
target_box = box;
target_box.rect.x += bigger_rect.x;
target_box.rect.y += bigger_rect.y;
for(auto &blob : target_box.light_blobs){
blob.rect.center.x += bigger_rect.x;
blob.rect.center.y += bigger_rect.y;
}
tracker = TrackerToUse::create();
tracker->init(src, armor_box.rect);
tracker->init(src, target_box.rect);
}else{
roi = src(pos).clone();
if(classifier){
cv::resize(roi, roi, cv::Size(48, 36));
if(classifier(roi) == 0){
armor_box = ArmorBox();
return false;
}
}else{
cv::Mat roi_gray;
cv::cvtColor(roi, roi_gray, CV_RGB2GRAY);
cv::threshold(roi_gray, roi_gray, 180, 255, cv::THRESH_BINARY);
contour_area = cv::countNonZero(roi_gray);
if(abs(cv::countNonZero(roi_gray) - contour_area) > contour_area * 0.3){
armor_box = ArmorBox();
return false;
}
}
armor_box.rect = pos;
armor_box.light_blobs.clear();
// roi = src(pos).clone();
// if(classifier){
// cv::resize(roi, roi, cv::Size(48, 36));
// if(classifier(roi) == 0){
// target_box = ArmorBox();
// return false;
// }
// }else{
// cv::Mat roi_gray;
// cv::cvtColor(roi, roi_gray, CV_RGB2GRAY);
// cv::threshold(roi_gray, roi_gray, 180, 255, cv::THRESH_BINARY);
// contour_area = cv::countNonZero(roi_gray);
// if(abs(cv::countNonZero(roi_gray) - contour_area) > contour_area * 0.3){
// target_box = ArmorBox();
// return false;
// }
// }
// target_box.rect = pos;
// target_box.light_blobs.clear();
target_box = ArmorBox();
return false;
}
return true;
}

View File

@@ -66,6 +66,7 @@ private:
int send_cnt;//向主控板发送的数据总次数
int camera_cnt;//摄像头数量
int fans_cnt;//扇叶个数
int last_fans_cnt;//上一帧的扇叶个数
int guess_devide;//刚进入猜测状态时,猜测目标点在极坐标中的分区
int energy_rotation_direction;//风车旋转方向

View File

@@ -30,6 +30,7 @@ void Energy::initEnergy() {
send_cnt = 0;
camera_cnt = 1;
fans_cnt = 0;
last_fans_cnt = 0;
guess_devide = 0;
energy_rotation_direction = ANTICLOCKWISE;
@@ -86,15 +87,15 @@ void Energy::initEnergyPartParam() {
gimbal_energy_part_param_.FAN_GRAY_THRESH = 75;
gimbal_energy_part_param_.ARMOR_GRAY_THRESH = 80;
gimbal_energy_part_param_.FAN_CONTOUR_AREA_MAX = 6600;
gimbal_energy_part_param_.FAN_CONTOUR_AREA_MIN = 0;
gimbal_energy_part_param_.FAN_CONTOUR_LENGTH_MIN = 80;
gimbal_energy_part_param_.FAN_CONTOUR_LENGTH_MAX = 100;
gimbal_energy_part_param_.FAN_CONTOUR_AREA_MAX = 3000;
gimbal_energy_part_param_.FAN_CONTOUR_AREA_MIN = 500;
gimbal_energy_part_param_.FAN_CONTOUR_LENGTH_MIN = 55;
gimbal_energy_part_param_.FAN_CONTOUR_LENGTH_MAX = 95;
gimbal_energy_part_param_.FAN_CONTOUR_WIDTH_MIN = 20;
gimbal_energy_part_param_.FAN_CONTOUR_WIDTH_MAX = 52;
gimbal_energy_part_param_.FAN_CONTOUR_HW_RATIO_MAX = 4;
gimbal_energy_part_param_.FAN_CONTOUR_HW_RATIO_MIN = 1;
gimbal_energy_part_param_.FAN_CONTOUR_AREA_RATIO_MIN = 0.65;
gimbal_energy_part_param_.FAN_CONTOUR_HW_RATIO_MAX = 3.5;
gimbal_energy_part_param_.FAN_CONTOUR_HW_RATIO_MIN = 1.2;
gimbal_energy_part_param_.FAN_CONTOUR_AREA_RATIO_MIN = 0.6;
gimbal_energy_part_param_.FAN_NON_ZERO_RATE_MAX = 0.8;
gimbal_energy_part_param_.FAN_NON_ZERO_RATE_MIN = 0.48;
// gimbal_energy_part_param_.FAN_NON_ZERO_RATE_MAX = 0.3;

View File

@@ -1,4 +1,4 @@
//
//
// Created by xixiliadorabarry on 1/24/19.
//
#include "energy/energy.h"
@@ -39,14 +39,13 @@ int Energy::findFans(const cv::Mat src) {
// float length = cur_size.height > cur_size.width ? cur_size.height : cur_size.width;
// float width = cur_size.height < cur_size.width ? cur_size.height : cur_size.width;
// double cur_contour_area = contourArea(fan_contour);
// double non_zero_rate = nonZeroRateOfRotateRect(src_bin, cur_rect);
// if (length > 60 && width > 20) {
// fans.emplace_back(cv::minAreaRect(fan_contour));
// cout << cur_rect.center << endl;
// cout << "fan area: " << length << '\t' << width << endl;
// cout << "non zero: " << nonZeroRateOfRotateRect(src_bin, cur_rect) << endl;
// cout << "rate: " << cur_contour_area / cur_size.area() << endl;
// }
// float length_width_ratio = length / width;
// cout << "area: " << cur_contour_area << '\t' << endl;
// cout << "length: " << length << '\t' << "width: " << width << '\t' << cur_rect.center << endl;
// cout << "HW: " << length_width_ratio << '\t' << cur_rect.center << endl;
// cout << "area ratio: " << cur_contour_area / cur_size.area() << '\t' << cur_rect.center << endl;
// cout<<endl;
}
// showFans("fan", src_bin);
if (fans.size() < last_fans_cnt) {

View File

@@ -9,7 +9,7 @@
using namespace std;
using namespace cv;
extern mcu_data mcuData;
extern McuData mcu_data;
//----------------------------------------------------------------------------------------------------------------------
// 此函数通过自瞄逻辑击打目标点,用于大符的自动对心和小符直接打击
@@ -29,12 +29,12 @@ void Energy::getAimPoint(cv::Point target_point_) {
extra_delta_y = 0;
}
double dx = -(target_point_.x - 320 - COMPENSATE_YAW - mcuData.delta_x - manual_delta_x - extra_delta_x);
double dy = -(target_point_.y - 240 - COMPENSATE_PITCH - mcuData.delta_y - manual_delta_y - extra_delta_y);
double dx = -(target_point_.x - 320 - COMPENSATE_YAW - mcu_data.delta_x - manual_delta_x - extra_delta_x);
double dy = -(target_point_.y - 240 - COMPENSATE_PITCH - mcu_data.delta_y - manual_delta_y - extra_delta_y);
yaw_rotation = atan(dx / FOCUS_PIXAL) * 180 / PI;
pitch_rotation = atan(dy / FOCUS_PIXAL) * 180 / PI;
// cout << "yaw: " << yaw_rotation << '\t' << "pitch: " << pitch_rotation << endl;
// cout << "mcuData.delta_x: " << mcuData.delta_x << '\t' << "mcuData.delta_y: " << mcuData.delta_y << endl;
// cout << "mcu_data.delta_x: " << mcu_data.delta_x << '\t' << "mcu_data.delta_y: " << mcu_data.delta_y << endl;
// cout << "manual delta: " << manual_delta_x << '\t' << manual_delta_y << endl;
}

View File

@@ -15,23 +15,23 @@ using std::vector;
// 此函数用于操作手手动标定
// ---------------------------------------------------------------------------------------------------------------------
void Energy::changeMark() {
if (mcuData.mark == 0 && last_mark == 1) {//完成标定
last_mark = mcuData.mark;
origin_yaw = mcuData.curr_yaw;
origin_pitch = mcuData.curr_pitch;
if (mcu_data.mark == 0 && last_mark == 1) {//完成标定
last_mark = mcu_data.mark;
origin_yaw = mcu_data.curr_yaw;
origin_pitch = mcu_data.curr_pitch;
is_mark = false;
manual_mark = true;
// LOGM(STR_CTR(WORD_LIGHT_YELLOW, "IsMark"));
} else if (mcuData.mark == 1) {//正在标定
last_mark = mcuData.mark;
} else if (mcu_data.mark == 1) {//正在标定
last_mark = mcu_data.mark;
is_mark = true;
// LOGM(STR_CTR(WORD_BLUE,"Marking..."));
} else {//未在标定
last_mark = mcuData.mark;
last_mark = mcu_data.mark;
is_mark = false;
}
//cout<<"mark: "<<int(mcuData.mark)<<endl;
//cout<<"mark: "<<int(mcu_data.mark)<<endl;
}

View File

@@ -40,8 +40,8 @@ bool Energy::getOrigin() {
if (abs(center_delta_yaw) > 0.3 || abs(center_delta_pitch) > 0.3) {
return false;
} else {
origin_yaw = mcuData.curr_yaw;
origin_pitch = mcuData.curr_pitch;
origin_yaw = mcu_data.curr_yaw;
origin_pitch = mcu_data.curr_pitch;
auto_mark = true;
LOGM(STR_CTR(WORD_BLUE_CODE, "auto mark success!"));
return true;

View File

@@ -14,7 +14,7 @@ using namespace cv;
// 此函数用于判断世界坐标系下是否可以发弹
// ---------------------------------------------------------------------------------------------------------------------
void Energy::judgeShootInWorld() {
if (abs(yaw_rotation - mcuData.curr_yaw) < 0.5 && abs(pitch_rotation - mcuData.curr_pitch) < 0.5) {
if (abs(yaw_rotation - mcu_data.curr_yaw) < 0.5 && abs(pitch_rotation - mcu_data.curr_pitch) < 0.5) {
shoot = 4;
// is_predicting = false;
// is_guessing = true;

View File

@@ -12,11 +12,11 @@ using namespace cv;
// 此函数用于记录操作手的微调dx和dy
// ---------------------------------------------------------------------------------------------------------------------
void Energy::writeDownSlightChange(cv::Mat &src) {
if (findFans(src) >= 4) {
if (fans_cnt >= 4) {
FILE *fp_delta = fopen(PROJECT_DIR"/Mark/delta.txt", "w");
if (fp_delta) {
fprintf(fp_delta, "delta_x: %d, delta_y: %d\n", mcuData.delta_x + manual_delta_x,
mcuData.delta_y + manual_delta_y);
fprintf(fp_delta, "delta_x: %d, delta_y: %d\n", mcu_data.delta_x + manual_delta_x,
mcu_data.delta_y + manual_delta_y);
fclose(fp_delta);
}
}

View File

@@ -89,6 +89,8 @@ void Energy::runBig(cv::Mat &gimbal_src) {
if (show_energy)showFlowStrip("strip", gimbal_src);
if (!findCenterR(gimbal_src))return;
if (show_energy)showCenterR("R", gimbal_src);
fans_cnt = findFans(gimbal_src);
if (show_energy)showFans("fans", gimbal_src);
// getCenter();
// sendEnergy();
@@ -127,7 +129,9 @@ void Energy::runSmall(cv::Mat &gimbal_src) {
if (!findTargetInFlowStripFan()) return;
if (!findFlowStrip(gimbal_src))return;
}
if(show_energy)showTarget("target", gimbal_src);
if (show_energy)showTarget("target", gimbal_src);
fans_cnt = findFans(gimbal_src);
if (show_energy)showFans("fans", gimbal_src);
// getCenter();
// sendEnergy();

View File

@@ -19,30 +19,45 @@ void Energy::sendEnergy() {
sum_yaw += yaw_rotation;
sum_pitch += pitch_rotation;
MINMAX(sum_yaw, -100, 100);
MINMAX(sum_pitch, -100, 100);\
MINMAX(sum_pitch, -100, 100);
double tmp_yaw = yaw_rotation;
double tmp_pitch = pitch_rotation;
yaw_rotation = BIG_YAW_AIM_KP * yaw_rotation + BIG_YAW_AIM_KI * sum_yaw + BIG_YAW_AIM_KD * (yaw_rotation - last_yaw);
pitch_rotation = BIG_PITCH_AIM_KP * pitch_rotation + BIG_PITCH_AIM_KI * sum_pitch +
BIG_PITCH_AIM_KD * (pitch_rotation - last_pitch);
last_yaw = tmp_yaw;
last_pitch = tmp_pitch;
} else if (is_chassis) {
sum_yaw += yaw_rotation - mcuData.curr_yaw;
sum_pitch += pitch_rotation - mcuData.curr_pitch;
yaw_rotation = BIG_YAW_AIM_KP * (yaw_rotation - mcuData.curr_yaw) + BIG_YAW_AIM_KI * sum_yaw;
pitch_rotation = BIG_PITCH_AIM_KP * (pitch_rotation - mcuData.curr_pitch) + BIG_PITCH_AIM_KI * sum_pitch;
sum_yaw += yaw_rotation - mcu_data.curr_yaw;
sum_pitch += pitch_rotation - mcu_data.curr_pitch;
double tmp_yaw = yaw_rotation;
double tmp_pitch = pitch_rotation;
yaw_rotation = BIG_YAW_AIM_KP * (yaw_rotation - mcu_data.curr_yaw) + BIG_YAW_AIM_KI * sum_yaw;
pitch_rotation = BIG_PITCH_AIM_KP * (pitch_rotation - mcu_data.curr_pitch) + BIG_PITCH_AIM_KI * sum_pitch;
last_yaw = tmp_yaw;
last_pitch = tmp_pitch;
}
} else if (is_small){
sum_yaw += yaw_rotation;
sum_pitch += pitch_rotation;
MINMAX(sum_yaw, -100, 100);
MINMAX(sum_pitch, -100, 100);
double tmp_yaw = yaw_rotation;
double tmp_pitch = pitch_rotation;
yaw_rotation = SMALL_YAW_AIM_KP * yaw_rotation + SMALL_YAW_AIM_KD * (yaw_rotation - last_yaw);
pitch_rotation = SMALL_PITCH_AIM_KP * pitch_rotation + SMALL_PITCH_AIM_KD * (pitch_rotation - last_pitch);
last_yaw = tmp_yaw;
last_pitch = tmp_pitch;
}
if (change_target) {
sendTarget(serial, yaw_rotation, pitch_rotation, 5, 0);
} else if (is_guessing) {
sendTarget(serial, yaw_rotation, pitch_rotation, 6, 0);
} else {
} /*else if (fans_cnt >= 4) {
sendTarget(serial, yaw_rotation, pitch_rotation, 7, 0);
}*/ else {
sendTarget(serial, yaw_rotation, pitch_rotation, shoot, 0);
}

152
main.cpp
View File

@@ -27,7 +27,7 @@
using namespace cv;
using namespace std;
mcu_data mcuData = { // 单片机端回传结构体
McuData mcu_data = { // 单片机端回传结构体
0, // 当前云台yaw角
0, // 当前云台pitch角
ARMOR_STATE, // 当前状态,自瞄-大符-小符
@@ -44,9 +44,9 @@ WrapperHead *video_chassis = nullptr; // 底盘摄像头视频源
Serial serial(115200); // 串口对象
uint8_t last_state = INIT_STATE; // 上次状态,用于初始化
// 自瞄主程序对象
ArmorFinder armorFinder(mcuData.enemy_color, serial, PROJECT_DIR"/tools/para/", mcuData.use_classifier);
ArmorFinder armorFinder(mcu_data.enemy_color, serial, PROJECT_DIR"/tools/para/", mcu_data.use_classifier);
// 能量机关主程序对象
Energy energy(serial, mcuData.enemy_color);
Energy energy(serial, mcu_data.enemy_color);
int box_distance = 0;
@@ -66,8 +66,8 @@ int main(int argc, char *argv[]) {
video_gimbal = new CameraWrapper(ARMOR_CAMERA_GAIN, 2/*, "armor"*/);
video_chassis = new CameraWrapper(ENERGY_CAMERA_GAIN, 2/*, "energy"*/);
} else {
video_gimbal = new VideoWrapper("/home/sun/项目/energy_video/new/18.avi");
video_chassis = new VideoWrapper("/home/sun/项目/energy_video/new/18.avi");
video_gimbal = new VideoWrapper(PROJECT_DIR"/gimbal_video/0.avi");
video_chassis = new VideoWrapper(PROJECT_DIR"/gimbal_video/0.avi");
}
if (video_gimbal->init()) {
LOGM("video_gimbal source initialization successfully.");
@@ -94,93 +94,91 @@ int main(int argc, char *argv[]) {
cout << "start running" << endl;
do {
CNT_TIME("Total", {
if (mcuData.state == BIG_ENERGY_STATE) {//大能量机关模式
if (last_state != BIG_ENERGY_STATE) {//若上一帧不是大能量机关模式,即刚往完成切换,则需要初始化
LOGM(STR_CTR(WORD_BLUE, "Start Big Energy!"));
destroyAllWindows();
if (from_camera) {
delete video_gimbal;
video_gimbal = new CameraWrapper(ENERGY_CAMERA_GAIN, 2/*, "armor"*/);
if (video_gimbal->init()) {
LOGM("video_gimbal source initialization successfully.");
} else {
LOGW("video_gimbal source unavailable!");
}
if (mcu_data.state == BIG_ENERGY_STATE) {//大能量机关模式
if (last_state != BIG_ENERGY_STATE) {//若上一帧不是大能量机关模式,即刚往完成切换,则需要初始化
LOGM(STR_CTR(WORD_BLUE, "Start Big Energy!"));
destroyAllWindows();
if (from_camera) {
delete video_gimbal;
video_gimbal = new CameraWrapper(ENERGY_CAMERA_GAIN, 2/*, "armor"*/);
if (video_gimbal->init()) {
LOGM("video_gimbal source initialization successfully.");
} else {
LOGW("video_gimbal source unavailable!");
}
checkReconnect(video_chassis->read(chassis_src));
energy.setBigEnergyInit();
}
last_state = mcuData.state;//更新上一帧状态
ok = checkReconnect(video_gimbal->read(gimbal_src));
video_chassis->read(chassis_src);
checkReconnect(video_chassis->read(chassis_src));
energy.setBigEnergyInit();
}
last_state = mcu_data.state;//更新上一帧状态
ok = checkReconnect(video_gimbal->read(gimbal_src));
video_chassis->read(chassis_src);
#ifdef GIMBAL_FLIP_MODE
flip(gimbal_src, gimbal_src, GIMBAL_FLIP_MODE);
flip(gimbal_src, gimbal_src, GIMBAL_FLIP_MODE);
#endif
#ifdef CHASSIS_FLIP_MODE
flip(chassis_src, chassis_src, CHASSIS_FLIP_MODE);
flip(chassis_src, chassis_src, CHASSIS_FLIP_MODE);
#endif
if (!from_camera) extract(gimbal_src, chassis_src);
if (save_video) saveVideos(gimbal_src, chassis_src);//保存视频
if (show_origin) showOrigin(gimbal_src, chassis_src);//显示原始图像
// energy.runBig(gimbal_src, chassis_src);
energy.runBig(gimbal_src);
if (show_energy || show_process) waitKey(1);
} else if (mcuData.state == SMALL_ENERGY_STATE) {
if (last_state != SMALL_ENERGY_STATE) {
LOGM(STR_CTR(WORD_GREEN, "Start Small Energy!"));
destroyAllWindows();
if (from_camera) {
delete video_gimbal;
video_gimbal = new CameraWrapper(ENERGY_CAMERA_GAIN, 2/*, "armor"*/);
if (video_gimbal->init()) {
LOGM("video_gimbal source initialization successfully.");
} else {
LOGW("video_gimbal source unavailable!");
}
}
energy.setSmallEnergyInit();
}
last_state = mcuData.state;//更新上一帧状态
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);
if (show_energy || show_process) waitKey(1);
} else { // 自瞄模式
if (last_state != ARMOR_STATE) {
LOGM(STR_CTR(WORD_RED, "Start Armor!"));
destroyAllWindows();
if (from_camera) {
delete video_gimbal;
video_gimbal = new CameraWrapper(ARMOR_CAMERA_GAIN, 2/*, "armor"*/);
if (video_gimbal->init()) {
LOGM("video_gimbal source initialization successfully.");
} else {
LOGW("video_gimbal source unavailable!");
}
if (!from_camera) extract(gimbal_src, chassis_src);
if (save_video) saveVideos(gimbal_src, chassis_src);//保存视频
if (show_origin) showOrigin(gimbal_src, chassis_src);//显示原始图像
energy.runBig(gimbal_src, chassis_src);
// energy.runBig(gimbal_src);
} else if (mcu_data.state == SMALL_ENERGY_STATE) {
if (last_state != SMALL_ENERGY_STATE) {
LOGM(STR_CTR(WORD_GREEN, "Start Small Energy!"));
destroyAllWindows();
if (from_camera) {
delete video_gimbal;
video_gimbal = new CameraWrapper(ENERGY_CAMERA_GAIN, 2/*, "armor"*/);
if (video_gimbal->init()) {
LOGM("video_gimbal source initialization successfully.");
} else {
LOGW("video_gimbal source unavailable!");
}
}
last_state = mcuData.state;
CNT_TIME(STR_CTR(WORD_GREEN, "read img"), {
if (!checkReconnect(video_gimbal->read(gimbal_src))) continue;
});
energy.setSmallEnergyInit();
}
last_state = mcu_data.state;//更新上一帧状态
ok = checkReconnect(video_gimbal->read(gimbal_src));
#ifdef GIMBAL_FLIP_MODE
flip(gimbal_src, gimbal_src, 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);
} else { // 自瞄模式
if (last_state != ARMOR_STATE) {
LOGM(STR_CTR(WORD_RED, "Start Armor!"));
destroyAllWindows();
if (from_camera) {
delete video_gimbal;
video_gimbal = new CameraWrapper(ARMOR_CAMERA_GAIN, 2/*, "armor"*/);
if (video_gimbal->init()) {
LOGM("video_gimbal source initialization successfully.");
} else {
LOGW("video_gimbal source unavailable!");
}
}
}
last_state = mcu_data.state;
CNT_TIME(STR_CTR(WORD_GREEN, "read img"), {
if(!checkReconnect(video_gimbal->read(gimbal_src))) continue;
});
#ifdef GIMBAL_FLIP_MODE
flip(gimbal_src, gimbal_src, GIMBAL_FLIP_MODE);
#endif
// CNT_TIME("something whatever", {
if (!from_camera) extract(gimbal_src);
if (save_video) saveVideos(gimbal_src);
if (show_origin) showOrigin(gimbal_src);
// });
CNT_TIME(STR_CTR(WORD_CYAN, "Armor Time"), {
armorFinder.run(gimbal_src);
});
}
// cv::waitKey(0);
CNT_TIME(STR_CTR(WORD_CYAN, "Armor Time"), {
armorFinder.run(gimbal_src);
});
}
// cv::waitKey(0);
});
} while (ok);
delete video_gimbal;

View File

@@ -10,7 +10,7 @@
#include <serial.h>
#include <opencv2/core.hpp>
struct mcu_data {
struct McuData {
float curr_yaw;
float curr_pitch;
uint8_t state;
@@ -21,7 +21,7 @@ struct mcu_data {
int delta_y;
};
extern mcu_data mcuData;
extern McuData mcu_data;
void uartReceive(Serial *pSerial);
@@ -43,6 +43,8 @@ void extract(cv::Mat &gimbal_src);
float getTimeIntervalms(const systime &now, const systime &last);
double getPointLength(const cv::Point2f &p);
template<class type, int length>
class RoundQueue {
private:

View File

@@ -32,31 +32,31 @@
#define ENERGY_CAMERA_GAIN (20)
#endif
#ifndef SMALL_YAW_AIM_KD
#define SMALL_YAW_AIM_KD (1.5)
#define SMALL_YAW_AIM_KD (0)
#endif
#ifndef SMALL_YAW_AIM_KP
#define SMALL_YAW_AIM_KP (2.5)
#define SMALL_YAW_AIM_KP (4)
#endif
#ifndef SMALL_PITCH_AIM_KD
#define SMALL_PITCH_AIM_KD (1.3)
#define SMALL_PITCH_AIM_KD (0)
#endif
#ifndef SMALL_PITCH_AIM_KP
#define SMALL_PITCH_AIM_KP (2.4)
#define SMALL_PITCH_AIM_KP (3.7)
#endif
#ifndef BIG_YAW_AIM_KD
#define BIG_YAW_AIM_KD (0.7)
#define BIG_YAW_AIM_KD (0)
#endif
#ifndef BIG_YAW_AIM_KP
#define BIG_YAW_AIM_KP (4.5)
#define BIG_YAW_AIM_KP (6.5)
#endif
#ifndef BIG_YAW_AIM_KI
#define BIG_YAW_AIM_KI (0.1)
#endif
#ifndef BIG_PITCH_AIM_KD
#define BIG_PITCH_AIM_KD (0.7)
#define BIG_PITCH_AIM_KD (0)
#endif
#ifndef BIG_PITCH_AIM_KP
#define BIG_PITCH_AIM_KP (4.5)
#define BIG_PITCH_AIM_KP (6.5)
#endif
#ifndef BIG_PITCH_AIM_KI
#define BIG_PITCH_AIM_KI (0.1)

View File

@@ -34,12 +34,12 @@ void uartReceive(Serial *pSerial) {
LOGM(STR_CTR(WORD_LIGHT_WHITE, "data receive start!"));
while (true) {
memset(buffer, 0, sizeof(buffer));
pSerial->ReadData((uint8_t *) buffer, sizeof(mcuData)+1);
if (buffer[sizeof(mcuData)] == '\n') {
memcpy(&mcuData, buffer, sizeof(mcuData));
// LOGM("Get, state:%c, mark:%d!", mcuData.state, (int) mcuData.mark);
// LOGM("Get yaw: %f, pitch: %f!", mcuData.curr_yaw, mcuData.curr_pitch);
// LOGM("Get delta x: %d, delta y: %d!", mcuData.delta_x, mcuData.delta_y);
pSerial->ReadData((uint8_t *) buffer, sizeof(mcu_data)+1);
if (buffer[sizeof(mcu_data)] == '\n') {
memcpy(&mcu_data, buffer, sizeof(mcu_data));
// LOGM("Get, state:%c, mark:%d!", mcu_data.state, (int) mcu_data.mark);
// LOGM("Get yaw: %f, pitch: %f!", mcu_data.curr_yaw, mcu_data.curr_pitch);
// LOGM("Get delta x: %d, delta y: %d!", mcu_data.delta_x, mcu_data.delta_y);
// static int t = time(nullptr);
// static int cnt = 0;
// if(time(nullptr) > t){
@@ -173,3 +173,7 @@ void extract(cv::Mat &gimbal_src) {//图像预处理将视频切成640×480
float getTimeIntervalms(const systime &now, const systime &last){
return (now.second-last.second)*1000.0 + (now.millisecond-last.millisecond);
}
double getPointLength(const cv::Point2f &p) {
return sqrt(p.x * p.x + p.y * p.y);
}

View File

@@ -96,7 +96,7 @@ def train(dataset, show_bar=False):
_, loss_value, step = sess.run(
[train_op, loss, global_step],
feed_dict={x: images_samples, y_: labels_samples, keep_rate:0.4}
feed_dict={x: images_samples, y_: labels_samples, keep_rate:0.3}
)
if step % 500 == 0:

View File

@@ -2,6 +2,8 @@
echo "#!/bin/bash" > $2/startup-run
echo "echo sjturm | sudo -S cpufreq-set -g performance" >> $2/startup-run
echo "$1/tools/auto-pull.sh" >> $2/startup-run
echo "mkdir $1/Mark" >> $2/startup-run
echo "mkdir $1/gimbal_video" >> $2/startup-run
echo "mkdir $1/armor_box_photo" >> $2/startup-run
echo "gnome-terminal -- bash -c \"echo sjturm | sudo -S $1/tools/monitor.sh \\\"$2/run --run-with-camera --save-video --wait-uart --save-labelled-boxes\\\"\"" >> $2/startup-run
chmod +x $2/startup-run

View File

@@ -1,5 +1,5 @@
4
0.30789205
-0.043525748
0.2050164
0.74044687
-0.028037319
0.5437552
0.26716635
0.15804483

View File

@@ -2,303 +2,303 @@
4
5
5
-0.10729549
0.09332296
0.16133511
-0.030649675
0.06557881
-0.053242918
0.19213735
0.15569621
0.3419906
0.1786888
0.19507813
0.24212381
0.4231631
0.08838954
0.14048508
0.15044038
0.28268903
0.13327996
0.15814759
-0.112561114
0.056091413
0.16789797
-0.11966196
0.038136892
-0.14447927
0.5679466
0.48397887
0.70058227
0.5070652
0.62130994
0.5227163
0.6784681
0.5526853
0.5210595
0.396152
0.31640542
0.459686
0.5702434
0.5931808
0.36256674
0.3457865
0.37771964
0.4625998
0.47415066
0.3938988
0.49735737
0.26142278
0.32298478
0.3374469
0.47159982
-0.18274228
-0.28124171
-0.20628488
-0.10543057
-0.05156752
-0.091269255
-0.0054441793
0.11289734
-0.03441205
-0.13315572
0.20559654
0.10798551
-0.07475637
-0.0047787298
-0.22890174
0.09388285
0.059628867
0.019401075
0.05334341
-0.1582362
0.017811468
-0.04889371
-0.065829955
-0.04788549
-0.33305293
-0.19116391
-0.28003454
-0.0820173
-0.26577657
-0.11826798
-0.39622292
-0.36510658
-0.11750732
-0.24734864
-0.2803419
-0.1519
-0.23317525
-0.007902931
-0.16537969
-0.19139121
-0.023329364
-0.30243063
-0.24868572
-0.029912082
-0.23020941
-0.31355116
-0.11182503
-0.0692445
-0.35592338
-0.09419684
0.14571323
0.5725029
1.193062
1.2903835
0.9622877
0.525414
1.0394033
1.4996175
1.8389359
1.3628953
0.80069596
1.4277213
1.6703882
1.7443689
1.4166398
0.6203115
1.1946497
1.7266799
1.6697397
1.3126082
0.47843987
0.89622074
1.0277275
1.0125589
0.8202855
0.5230944
0.6464553
0.5895753
0.54708016
0.26677945
0.4320181
0.59073323
0.50776094
0.50096244
0.4625974
0.49336708
0.34545958
0.56925744
0.34867597
0.16094568
0.3861315
0.5891766
0.2174486
0.20948303
0.1000691
0.21441981
0.22367561
0.19896027
0.13936864
0.03653052
0.084119834
0.3999692
0.5730208
0.6282694
0.37436715
0.46807006
0.78820395
0.96178275
0.90761256
0.87396187
0.53964555
0.9532658
0.9813636
1.0613359
0.7933851
0.5819338
0.9753471
1.2284292
0.94796246
0.82767236
0.499911
0.75207883
0.68719465
0.8145963
0.6596423
0.011669106
0.18070999
0.36343256
0.3169534
0.20783305
0.03404153
0.43459386
0.36061177
0.43950805
0.38309076
0.25803936
0.4289157
0.58764404
0.58137804
0.46296367
0.1991764
0.33899468
0.64967453
0.74104553
0.57953227
0.1818072
0.32919815
0.6142047
0.47143123
0.3723565
-0.29113623
0.08584255
0.49546224
0.80879575
0.72197473
-0.01818511
0.4448289
0.86975175
1.0318508
0.70635146
0.2590701
0.55703586
1.2021183
1.1355498
0.929514
-0.0021778075
0.49526876
0.8620847
0.97750324
0.80483395
0.066819414
0.0533782
0.2378203
0.48883578
0.46825472
-0.08690677
-0.098846406
-0.11066464
-0.33117262
-0.13379335
-0.10680438
-0.092536114
-0.06396752
-0.2411913
-0.4162492
-0.27065766
-0.0127258655
-0.22221713
-0.10054428
-0.25341535
-0.36750633
-0.0970442
-0.28783646
-0.3083135
-0.37662375
-0.24937427
-0.36285818
-0.32178807
-0.41167092
-0.64311564
0.15358478
0.45863125
0.680853
0.69516915
0.73355865
0.36617115
0.8283799
0.94936144
0.96523696
0.7651339
0.4159632
0.9592908
1.038713
1.1703031
0.83268124
0.62078
0.8680032
1.1751134
1.0394844
0.9290284
0.527504
0.75912774
0.86471754
0.89958185
0.7007667
0.11127112
0.30424586
0.6125697
0.51516706
0.4895497
0.32818803
0.44973958
0.61502695
0.57045287
0.58641577
0.28688067
0.6754326
0.85857826
0.6959833
0.67804474
0.38325444
0.5163973
0.64538044
0.79433715
0.70066565
0.38258222
0.5113986
0.61964786
0.8566454
0.7331395
0.2558705
0.50322264
0.5455292
0.3266633
0.45495397
0.33181077
0.4608274
0.44561535
0.30626073
0.5907795
0.45085132
0.32935262
0.33333394
0.42217836
0.47149
0.26239944
0.106058985
0.4186091
0.33606878
0.47154978
0.29413304
0.2689295
0.043931372
0.41913906
0.3930859
-0.42042395
-0.19382745
-0.37871224
-0.36034295
-0.35385096
-0.13182718
-0.15764016
-0.18180493
-0.35480255
-0.38093758
-0.26962438
-0.13433722
-0.11590976
-0.12100729
-0.41767576
-0.088450246
-0.15360384
-0.21754275
-0.33203712
-0.36672434
-0.33835274
-0.09806653
-0.25720394
-0.48649773
-0.28400043
0.015362165
0.17902431
0.34508342
0.30716935
0.40274766
0.14824653
0.3363854
0.61393374
0.61485726
0.185212
0.27937973
0.4085319
0.56713074
0.50924385
0.14822921
-0.11108435
0.1610854
0.2802524
0.04015192
0.08895228
-0.19824773
-0.06844609
-0.069947205
-0.21471545
-0.21651222
-0.28975108
-0.36048082
-0.121744774
-0.32950944
-0.2776884
-0.38737568
-0.09360009
-0.116772
-0.2323865
-0.3063033
-0.09292303
-0.120976545
-0.098381124
-0.13898924
-0.24542217
-0.018138783
0.1710496
0.116988935
-0.30227587
-0.25962535
-0.20448786
-0.0741184
-0.021265341
-0.21863441
-0.24914841
0.3989018
0.38929248
0.24901842
0.28578317
0.35204405
0.21083018
0.30775398
0.17769343
0.24103095
0.43094385
0.24827914
0.12439884
0.11712248
0.3559909
0.16364971
0.038071744
0.13404451
0.12091028
-0.023739764
0.08232509
-0.0009516679
0.15716548
-0.10213259
0.0639761
-0.10133095
-0.009949305
0.09284781
0.40186858
0.25586432
0.14342904
0.18849348
0.32841587
0.3101156
0.4123818
0.081568226
0.27615616
0.34650272
0.5694975
0.23792551
0.29921243
0.33980817
0.49298054
0.60243934
0.42826438
0.27227885
0.1948353
0.3062418
0.46926793
0.38606012
0.13854483
1.1108605
1.6619372
2.0544205
1.9469278
1.4682909
1.3129491
2.1375504
2.6406689
2.372072
1.4637381
1.306143
2.2453067
2.5116432
2.3163383
1.5179764
1.1999305
1.7840445
2.1370907
1.8682098
1.1948502
0.7644319
1.183056
1.2842283
1.0330013
0.5353385
0.357544
0.4590763
0.57521755
0.40281096
0.15203553
0.66836417
0.83691925
1.0917046
0.85563093
0.4185427
0.8069128
1.1880662
1.2418958
0.98703665
0.45376477
0.8052862
1.1458472
1.0837129
0.8163929
0.5508064
0.84074473
1.0375632
1.0029732
0.73068154
0.4793337
-0.08648754
0.05313617
0.055096295
-0.03580858
-0.14844808
-0.21981032
0.0398141
-0.20938458
-0.21056286
-0.19792278
-0.06431722
-0.11274485
-0.13580588
-0.14901595
-0.06539131
-0.1703085
-0.044613708
-0.057758514
-0.2657268
-0.29268163
-0.2251643
-0.25461197
-0.28155822
-0.32777157
-0.3724289
0.16466168
0.44934547
0.43256435
0.47452745
0.3779059
0.20698643
0.52107
0.30781397
0.4135147
0.29526445
0.25912467
0.54579914
0.4920371
0.43895373
0.38483474
0.33639383
0.47148314
0.5128957
0.5233807
0.34624586
0.25116408
0.44631884
0.48539376
0.2042739
0.40311766
0.10143137
0.8512386
1.06337
0.82065773
0.22343788
0.51960915
1.0729233
1.5161965
1.220796
0.4743648
0.6052472
1.3462025
1.4488021
1.060846
0.3372449
0.678654
0.9629113
0.96115077
0.70128
0.17687131
0.20191273
0.5066497
0.54581857
0.121072926
-0.21051502
0.15686111
0.14152882
0.56596214
0.36766517
0.07481751
0.45787486
0.58694565
0.58544177
0.4505106
0.32433945
0.6037763
0.8595476
1.0671577
0.9353241
0.4558103
0.6039449
1.1056548
1.0452515
0.5983469
0.4096005
0.46692336
0.82347125
0.8806483
0.70173585
0.1955107

View File

@@ -1,7 +1,7 @@
6
-0.66018975
-0.010440656
1.4320896
0.6933768
-0.65163565
0.5277429
0.7724807
-0.87169737
-0.42373934
1.2762932
0.41549298
-0.471356

View File

@@ -2,219 +2,219 @@
6
3
3
0.4759437
0.5277724
0.139441
0.2800008
0.22288494
0.108814284
0.2216004
0.0826161
0.089944854
-0.09314036
0.1689421
-0.15679725
-0.09276689
-0.11458397
-0.110004626
-0.12988734
-0.0066146385
0.0721423
0.14968422
0.297503
0.2791637
0.19522616
0.26418453
0.24044909
0.13024697
0.04435158
-0.01771724
-0.06297547
0.001762368
0.082013726
0.15548702
0.32377553
0.27047187
-0.023470035
0.34194797
0.17096734
0.28044784
0.82985413
0.83532697
0.4275191
0.81403863
0.601176
0.12184183
0.23793156
0.1399071
-0.2515761
-0.2517224
-0.21546899
0.07697227
0.16256733
0.08380697
0.23011585
0.4999862
0.43774128
0.32930762
0.71866304
0.62044543
0.34880728
0.7865281
0.6297802
0.30486584
0.5288421
0.39718637
0.0910105
-0.11255152
-0.13482818
0.07847753
-0.04735445
-0.0038237541
0.0043637073
-0.04214324
0.012912967
0.17040756
0.30929482
0.17562813
0.41938713
0.24687432
0.26342502
0.38649166
0.41712144
0.24383439
-0.28473634
-0.3940253
-0.34808996
-0.38975403
-0.24110298
-0.046044078
-0.23697922
-0.22391571
-0.19830422
-0.11989986
0.11857329
0.29731098
-0.02443474
0.316702
0.24935672
-0.25304285
0.074846774
-0.18829204
-0.4744228
-0.4719013
-0.34939593
-0.32747662
-0.25595036
-0.2775214
-0.2457843
-0.052919358
-0.08444969
0.34911272
0.18830806
0.3744799
0.22325471
0.19361699
0.039736666
-0.03248692
0.029203985
-0.23331854
-0.10208629
-0.061697867
-0.1176465
-0.08789791
-0.057570133
-0.07236836
-0.08202739
0.01847834
-0.026953353
-0.0047561233
0.11816447
0.06465411
0.2009494
0.21860977
-0.006191244
0.061403517
-0.19353165
-0.23202892
-0.15637238
0.09690646
0.39561197
-0.033700354
0.26145908
0.29894492
0.092733935
0.26167676
0.41658124
0.27151692
0.75745887
0.90087986
0.20814665
0.777432
0.89369255
-1.2322522e-05
0.22557266
0.19228373
0.07130624
-0.19275019
-0.20524225
0.21536903
0.35016957
0.06782008
0.399571
0.5707165
0.44227237
0.025064494
0.21137829
-0.15365854
0.026654074
0.06510314
-0.051269874
-0.32589892
-0.24120317
-0.13360153
-0.008909554
0.002510321
-0.033950537
-0.10946457
-0.051231243
0.039142266
-0.19994314
0.03513516
-0.05800069
-0.020204777
0.1723414
0.29957905
0.06788029
0.19172208
0.03968759
0.113219805
0.21398433
-0.058736056
0.28218988
0.20043835
0.33177158
0.027651532
0.45273116
0.41156724
0.11950665
0.3903009
0.43739006
0.37426594
0.9247259
0.65225613
0.40650654
0.87759405
0.69571304
-0.18717311
0.3866643
0.2747473
0.17751311
0.01481114
-0.0062964857
0.42961967
0.45778152
0.27587935
0.57809776
0.45014626
0.52284414
-0.48382398
-0.36632606
-0.5114979
-0.14837296
-0.44867024
-0.4505499
-0.35961452
-0.28533116
-0.25498483
0.21828032
0.40261173
0.4014606
0.4331948
0.57971007
0.48511884
0.4658404
0.23746017
0.25643173
-0.42512512
-0.32099026
-0.4071419
-0.07042966
-0.18999289
-0.41244265
-0.05782267
-0.26706457
-0.39842066
-0.42635453
-0.54127145
-0.50406104
-0.2970212
-0.2382909
-0.373955
-0.26274928
0.09654497
0.0068873395
0.4851344
0.71676046
0.83653075
0.36806846
0.59301347
0.43608147
0.26763174
0.24044617
0.3138616
0.32284674
0.48771864
0.47890294
0.59924245
0.58470404
0.66103566
0.4588577
0.66345775
0.5417458
0.33620733
0.6311169
0.5712364
0.27047473
0.5663411
0.62967324
0.23675068
0.18819211
0.26856497
-0.24069026
0.06490354
-0.20222004
0.12556747
-0.081858225
-0.14404371
0.15644343
0.0056566484
-0.27573076
0.6260534
0.6114578
0.4143709
0.78654826
0.6670694
0.3971862
0.88891
0.7200758
0.4331128
0.5375012
0.69176656
0.5500048
0.76812154
0.8269794
1.0226717
0.521159
0.94419754
0.90338296
-0.037811022
0.11793418
-0.09947335
0.021074628
-0.15378062
-0.18899523
-0.21934026
-0.32867467
-0.4491826
0.17542738
0.22719054
-0.14938504
0.34901783
0.23809595
-0.29363006
0.14916919
0.1632361
-0.4462076
0.054292772
0.19464755
0.17956488
0.07731212
0.19792339
0.30400968
-0.039353892
0.14735414
0.18343678
0.23884599
0.30334124
0.21813673
0.12249429
0.38291413
0.22569945
0.25905365
0.33474848
0.0037524912
0.30396467
0.1846092
-0.121808626
0.7777901
0.397566
0.16061927
0.7874323
0.28439802
0.02147841
-0.14355433
0.30293295
0.046388533
0.19284728
0.61074996
0.4691993
0.35759884
0.6659188
0.45006895
0.22897986
0.15777227
0.3959882
0.16480199
0.09506794
0.072772376
-0.15479131
-0.025542457
0.07265022
0.26197845
0.46316504
0.08801226
0.45165384
0.68206656
0.201606
0.49978983
0.38383794
0.08902087
0.11398645
0.34106824
0.19092785
0.096165456
0.31517446
0.39403793
-0.12153064
-0.044383097
0.21368785
0.057617243
0.2975022
0.2852436
0.37886962
0.24867283
0.037312325
0.26485252
0.05155589
-0.04473265
0.55817014
0.46386358
0.1817731
0.7077902
0.6132932
0.38195252
0.57377195
0.47097227
0.12158713
0.21322925
0.31647044
0.5527038
0.47462723
0.6149222
0.65007806
0.11145787
0.44169205
0.51498264
0.072121754
0.02085787
-0.02330407
0.0030019032
0.13602144
-0.16190982
-0.10533785
-0.1734815
-0.2510002
0.4735372
0.58126503
0.19582687
0.45889878
0.54310197
0.21080907
0.20235369
0.2099934
-0.04946122

View File

@@ -1,9 +1,9 @@
8
0.90704066
0.90517473
0.74172145
0.32090998
0.19756256
0.93943995
0.96109724
-0.33604085
1.8607159
0.8140447
0.02090901
0.12166861
1.401096
1.6002591
0.9205242
0.52036697

View File

@@ -2,435 +2,435 @@
8
3
3
-0.14467798
0.12162628
0.02385648
0.0921811
0.15891269
-0.47317922
-0.12099915
-0.049982212
-0.09452215
0.38189477
0.36527324
-0.14960521
0.13709542
-0.0033987386
0.019212969
-0.10601569
0.04577164
0.029857265
0.08732227
0.192233
-0.3347368
-0.027076617
0.09737525
-0.09680313
-0.394165
-0.2371472
-0.21733402
0.044801254
-0.1320818
-0.3513149
0.12631866
0.14847036
-0.29873094
0.31957826
0.036902755
-0.43065926
-0.015908783
0.07150033
-0.012287875
0.03288042
0.07365702
0.09284159
-0.015458295
0.010469522
-0.019211741
-0.25060612
-0.5364677
-0.13455929
-0.20434685
-0.39121196
-0.08702614
0.32857445
-0.15595244
0.070169695
-0.028191354
-0.09662612
0.08042921
-0.006221992
-0.031271227
-0.15497167
-0.25514907
0.084009886
-0.11647188
-0.24387771
-0.09372894
-0.06182007
-0.011338656
0.02614235
0.024291884
0.21493424
-0.04802622
-0.3079769
0.02439476
0.009973571
0.03190307
-0.019569917
0.0591607
-0.026326943
0.035384335
-0.049850937
0.027680013
0.13588844
-0.097282
0.08888781
-0.15343736
0.09661169
0.17241718
0.06415604
0.054287586
0.04928659
-0.15136573
0.04208069
-0.05910781
0.03759651
0.103835754
0.07400349
0.103261374
0.0184233
-0.008124022
0.024705194
-0.02313377
-0.09042963
-0.08085433
0.036409263
0.03958625
0.011525904
-0.05348837
0.084629565
-0.07109061
0.03846979
-0.035181124
-0.008601981
0.12047406
-0.008530221
-0.022954213
-0.09090233
-0.08990641
-0.08574321
0.120389834
-0.13804035
-0.04951569
0.03654262
-0.06180096
0.079575635
0.08661077
-0.03173572
-0.07221121
-0.09098384
-0.0065667797
0.17968638
0.11188786
-0.097444646
-0.06938583
-0.032713443
-0.04229946
0.0943734
0.041403808
0.012159901
0.13243946
0.10534047
0.12919776
-0.15315245
0.07480346
0.009717742
0.11012424
0.297859
0.103351705
0.22494674
0.019316508
-0.3561347
0.27116933
-0.03911103
0.113410935
0.40371558
0.09193145
0.07305148
0.14508866
-0.03457214
0.13683674
0.14850669
0.042230267
-0.0542466
0.04830117
0.25736335
-0.07136802
-0.032722417
-0.010816054
-0.046533
-0.10160915
-0.21717142
-0.008038737
0.075647615
-0.009018933
-0.06474504
-0.05767729
0.061933298
-0.14895678
0.33738717
0.3338815
-0.10815164
-0.21895555
0.047466014
0.12578607
0.10023314
0.18545863
0.20031881
0.082473315
-0.0024321326
-0.048802588
0.019200334
-0.22817798
0.0033950908
0.20394093
-0.036152914
0.08552756
0.17449778
0.14747764
0.06285567
0.11332183
-0.0009895482
-0.08991766
-0.00713482
0.08846191
0.034994923
-0.07053614
0.15698093
0.048439953
-0.27764085
-0.10396591
-0.22374569
0.09670587
-0.06325143
0.0031419962
0.082792744
-0.19188261
-0.28992698
0.45687222
-0.044660136
0.046100058
0.28274316
-0.2181942
-0.15568502
0.11157481
-0.095504865
0.3039111
0.15132368
-0.25178835
0.021804202
-0.44980538
-0.25162143
-0.061878264
-0.26695955
-0.039346166
-0.014375144
0.39469627
0.18902653
-0.033530846
-0.10085356
0.14727789
0.37226892
-0.24379288
0.018976463
0.35050496
-0.13321632
0.24985777
0.37505043
-0.20913807
-0.023658337
0.20017956
-0.098934576
-0.20042671
0.17306066
-0.09787404
0.20483637
-0.116786346
0.018357325
0.033076648
-0.23314027
0.027727392
-0.13225126
-0.16409135
-0.21711728
-0.16650313
0.2845355
0.10169748
0.15834127
0.43664452
0.028019615
0.3454524
0.06705391
0.2192482
0.12149215
-0.3069314
0.086847186
0.23778853
-0.32692567
0.06073979
0.2593948
-0.071677476
0.029256491
0.032842036
-0.09417464
0.032828726
-0.2270541
-0.04282022
-0.118686855
0.090583734
0.2958341
0.05302684
0.03251139
0.17441377
0.16623771
-0.007202153
-0.50939834
-0.0014992852
-0.26377344
-0.062390577
0.32746437
0.048314415
-0.017574754
-0.27200297
-0.09598392
0.0909921
-0.21702705
-0.008242383
-0.014282621
0.16819815
0.29633686
-0.08262955
-0.03134615
0.28463373
0.02695246
-0.4598587
-0.10180148
0.04876091
-0.12967055
0.12820654
0.18111643
-0.08593418
0.032703638
-0.087498255
0.15426277
0.0012751569
-0.0024832077
-0.26368144
0.2151773
-0.059881404
0.079371296
0.25898042
0.13537227
-0.023513293
-0.17542854
-0.008717093
-0.25816053
-0.47451147
0.048915293
-0.14701831
-0.15571935
0.13996848
0.042167988
0.0650658
0.15130459
0.01544529
0.013797521
-0.1118281
0.16427901
-0.0016996135
-0.27299592
-0.021745216
0.17403425
-0.027162991
0.071403876
-0.071337536
0.08641655
0.14544733
0.053032834
0.03830959
-0.13016692
-0.05428871
-0.015807912
0.137652
-0.0028555624
-0.4956561
0.0047820364
-0.119914755
-0.10221481
-0.1677475
0.07893236
0.39258212
-0.22267173
-0.13592781
0.2756081
-0.573497
-0.10570611
-0.15512107
0.17661163
0.4470911
0.23157047
0.20328061
0.27611282
0.21680915
-0.4182389
-0.08605376
0.16370413
-0.15053193
-0.20681985
0.0047342093
-0.3171135
-0.028142
0.26905584
-0.31586888
-0.10765501
0.32062873
-0.35981625
0.043823324
-0.02025656
-0.20484899
0.074560314
0.091042094
0.08137614
-0.19419935
-0.08098475
-0.19163176
-0.053046327
0.07082364
-0.038617883
-0.2791296
0.12065217
0.36943477
0.11487032
0.28187338
0.1491219
0.111270085
0.0846868
0.22505993
0.3541608
-0.25119248
0.11921627
0.2380348
0.08635484
0.1881732
0.17379871
0.043549404
0.25112882
0.16666383
0.20327023
-0.13702081
-0.0117694475
-0.091762625
-0.22044446
0.18784548
0.39207903
-0.46652856
-0.006976322
0.36585018
-0.35386622
0.31313887
0.090095155
0.30762976
0.2657242
0.019538801
0.27732682
0.17629576
-0.28695452
0.43006283
0.14422576
-0.17645325
-0.20069686
0.19988798
0.13179809
-0.4227292
-0.31181905
0.014748593
0.002617792
-0.11496952
-0.053773146
0.13918562
0.18096532
0.13642377
-0.042928737
0.08530145
-0.08484941
-0.015370471
0.26547658
-0.076144636
-0.08219623
0.16479371
0.16959396
0.28992864
0.13489975
0.13539568
0.27986473
0.256471
0.0101967715
0.2927949
0.23675801
0.14263484
0.27858523
0.07631286
0.024203794
0.13619754
0.070843406
-0.0957534
0.09634656
-0.030293722
-0.020138225
0.12419513
0.31316125
0.37053087
0.13155246
0.06416069
-0.17474137
-0.12808485
-0.09206165
-0.30339417
-0.15383604
-0.06820087
-0.13376386
-0.19228186
-0.17368917
-0.36573118
-0.058085483
-0.1455557
-0.01795102
-0.41417533
-0.57252824
0.07523143
-0.42771903
-0.13359715
0.32720667
0.106817365
0.12412206
-0.16850802
-0.004654292
0.1047822
0.06585382
-0.08944233
-0.3094235
-0.07598283
-0.45885184
-0.043911528
0.2819794
-0.06956382
-0.2594432
0.049149018
-0.00023094952
-0.20008954
-0.14256817
0.24022263
0.12780225
-0.0439553
-0.014143944
-0.3019556
-0.1206446
0.05785775
-0.039328568
-0.07540559
-0.003750555
-0.14664768
-0.24247022
-0.23023643
-0.41007766
-0.6863699
-0.37194762
-0.3119427
-0.39895228
-0.36478692
-0.16976936
-0.20739788
-0.17139384
0.049755502
-0.22000378
-0.1811285
-0.08931054
-0.4781601
0.084072106
-0.018899972
-0.22230053
-0.10357888
0.32031655
0.13040926
-0.020954832
-0.035918318
-0.29164636
-0.10684895
-0.27596024
-0.56033176
0.13482359
0.17149265
0.19517922
0.10445145
0.15964586
0.23220965
0.16729265
0.09351513
0.15595618
-0.6698986
-0.45191053
0.24878077
-0.27279645
-0.09509586
0.26256448
0.08904445
0.3232345
0.00028496212
0.4180423
0.18453331
-0.27621424
0.2970959
0.24177082
-0.06408367
-0.28984916
-0.32151514
0.120035425
-0.04777242
-0.38645425
-0.05918947
0.32995042
-0.07561619
0.109172024
0.15024927
0.21982089
0.31974417
0.19653027
-0.021592606
0.18650842
0.05476953
0.2281267
0.30092278
-0.047595136
-0.18758236
0.03612593
0.19982196
0.16518332
-0.2132024
0.043807358
0.06308915
-0.16675097
-0.012991448
0.20062916
0.12895599
-0.043292884
0.25387093
-0.2071926
-0.13854823
0.24492173
-0.3515075
0.15739976
0.012376338
-0.12829499
-0.08617024
0.3198444
0.29204983
0.14533034
-0.09626677
-0.16334316
-0.003909297
-0.23623511
-0.47679895
0.043675497
-0.16964784
-0.19119571
-0.054164138
-0.19815673
-0.24133544
-0.07134094
-0.109365806
-0.07691431
-0.50789326
-0.17197743
0.3555232
-0.15639815
0.3348915
0.26994386
0.2469568
0.31926933
-0.017630374
0.3798432
0.005144097
-0.4425236
0.37726435
0.08693207
-0.028089657
-0.32259706
0.028258909
0.15674864
-0.2800628
-0.30616188
0.06417866
0.19869277
0.19405553
-0.09713039
0.30011457
0.3652531
0.1867601
-0.022833023
0.065285765
-0.083830476
-0.012053994
0.3540991
0.026427992
-0.12837274
-0.07484452
-0.0006615384
0.13817789
-0.030925453
-0.049724422
0.22566839
0.02687435
0.03260204
-0.04190848
0.3413252
0.13537854
0.20891705
0.14274365
-0.13798924
0.16073507
0.20995077
-0.22835265
0.089729816
0.16532257
0.16997524
0.21789114
0.39529288
0.05896502
-0.020614713
-0.0066838046
-0.23659223
-0.0318759
-0.2673548
-0.39560986
-0.13082506
-0.023758698
-0.16974863
-0.13090988
-0.020418363
-0.104862876
-0.053553164
-0.2013571
-0.056983616
0.1718784
-0.15959537
0.40318725
-0.58568484
-0.48589796
0.13269182
0.11596276
0.13625275
0.34213603
-0.7297916
-0.0577799
0.68179923
-0.16041818
-0.18578006
-0.28739917
-0.15010808
-0.018851219
0.35725188
-0.23061325
-0.13016629
-0.21225198
-0.10186293
-0.44467613
-0.12763035
0.037400022
-0.19201829
-0.09800575
0.1165209
-0.32162797
-0.43479276
-0.26909313
-0.29028067
-0.2528661
-0.21895076
-0.114858426
-0.18118776
0.0972535
-0.17270042
-0.029162072
-0.23470949
-0.6097037
-0.67270225
-0.40263763
-0.38722044
-0.48801798
-0.056273278
0.08501884
0.2895409
-0.13423353
0.038840026
-0.06696778
0.34682238
-0.029793346
0.013996173
-0.045037627
0.11667409
0.112328716
0.083296895
0.12743023
-0.077024765
-6.6904526e-05
-0.055911195
-0.080353044
0.20982704
0.38512343
0.59899396
0.38571635
0.22991118
0.56586194
0.1635398
0.08747799
0.65064216
-0.5250006
-0.51374567
0.27114686
-0.27618203
-0.0508709
0.25817317
-0.014007381
0.34515485
0.106353715
0.1230483
0.019305272
0.010814735
0.00992225
0.15258339
-0.09539621
-0.32594228
-0.23145258
0.24058998
-0.2304592
-0.1749158
-0.09068161
0.114832446
-0.105929255
-0.07757672
0.27550972
0.009610394
0.15988868
-0.14524163
-0.27720666
-0.29254764
-0.029675223
0.04164464
0.1567368
0.1579122
-0.032259386
0.01322919
-0.06601103
-0.15501982
-0.3119079
0.023992328
-0.051100254
-0.49769762
-0.20612125
0.0778619
-0.10735585
-0.22788161
0.0530759
-0.33024994
0.12638855
0.17281261
-0.43493238
0.18686949
0.2902402
-0.25318295
0.09187819
0.24615791
0.19238177
-0.049979202
0.06410237
-0.25868776
0.037342217
-0.2868868
-0.1306003
0.23589715
0.020065883
0.2975321
0.0760544
0.054697216
0.15663004
-0.01986749
-0.0076809167
0.2974253

View File

@@ -1,51 +1,51 @@
50
-0.24530283
-0.073897995
-0.067673266
-0.043941643
0.339086
-0.2782574
-0.16835077
-0.01852681
0.3498275
0.38015145
-0.016264258
-0.14133461
0.24981335
-0.025037237
0.736614
-0.1785015
-0.040974453
0.2144458
0.23580065
-0.115499295
-0.09057627
0.28634802
0.58878446
-0.12215623
-0.10074399
0.32165715
0.39080995
0.26881945
-0.14676444
0.50808805
-0.053912967
-0.111540824
-0.10144225
0.0035003617
-0.010641405
0.3912463
0.06348127
-0.11809033
-0.024349451
0.4927379
0.23499253
-0.042348947
0.44671503
0.23698664
-0.18389338
0.10498202
-0.12768361
-0.03513563
0.14860639
0.22698319
0.27732438
-0.42984757
0.77958596
0.50327533
-0.4008876
-0.013967511
0.2507846
-0.22089948
-0.074136175
-0.69092935
-0.016178658
0.3531398
0.017891733
0.46746168
-0.14891404
0.22245038
0.16725647
-0.01826465
0.30017307
-0.13458814
-0.03478663
-0.017660717
-0.40806273
-0.030123862
0.2801973
0.27446425
0.5195524
0.64331424
0.008353927
0.35976186
0.59728014
-0.061037164
-0.5944482
0.569236
-0.36547965
0.8237916
0.32342234
0.32420716
-0.012236862
-0.030580053
0.48695275
-0.5278198
-0.329191
0.72754157
-0.013564502
0.30172536
-0.44324636
0.6108572
-0.10568087
-0.19255634

File diff suppressed because it is too large Load Diff

View File

@@ -1,16 +1,16 @@
15
0.45424584
-0.028361967
-0.06438486
-0.15962061
-0.20572336
-0.111016475
0.24467993
-0.012314044
-0.11952816
-0.20754007
-0.18928203
-0.10316595
-0.33859444
0.15107821
0.022365652
0.6056967
-0.13792518
-0.21883932
-0.20325783
-0.43291906
-0.25540975
0.39662966
-0.1248626
0.011282514
-0.27768156
-0.27011594
-0.06521889
-0.46317244
0.37428737
0.1406347

File diff suppressed because it is too large Load Diff