系列文章
智能车复工日记【1】——菜单索引回顾
智能车复工日记【2】——普通PID、变结构PID、微分先行PID、模糊PID、专家PID
智能车复工日记【3】:图像处理——基本扫线和基本特征提取和十字补线
问题1:环岛判断函数,last方差,find_guaidian()函数放置位置不同
在上位机中,每帧图像的处理放在ImageProcess()函数中,
void ImageProcess()
{
//int straight_search_line = 13;
//int curve_search_line = 11;
//int feedback = 0;
findcenterline_mode5();//找拐点
if (break_hangshu <= 0) break_hangshu = 50;
juge_right_succesive_and_if_k_limit();
juge_left_succesive_and_if_k_limit();
//将方差记录
last_rou_of_left = rou_of_left;
last_rou_of_right = rou_of_right;
//small_guaidian();
//small_s_jiaodian_fangcha();
//if (curve_guai[0] != 0 && flag_small_S != 1) SetText("弯道拐点: " + curve_guai[0] + " " + curve_guai[1]);
//只有在不是环岛的时候才判断道路,才启用判断小s和中s
if (huandao_flag == 0)
{
//SMALL_s_line();
find_guaidian();
//juge_street(5, 20);
}
SetText("centerline:" + centerline[1]);
//【计算PID】
//feedback = LocPIDcalc_new(1, (centerline[straight_search_line - 1] + centerline[straight_search_line] + centerline[straight_search_line + 1]) / 3);
//if (steer_middle_pwm - feedback >= steer_left_pwm) feedback = steer_middle_pwm - steer_left_pwm;
//else if (steer_middle_pwm - feedback <= steer_right_pwm) feedback = steer_middle_pwm - steer_right_pwm;
//SetText("feedback" + feedback);
//【展示当前道路状态】
show_road_type();
SetText("没有卡循环!!!");
}
而下位机中只有一个findcenterline_mode5();
所以导致修改ImageProcess()函数中程序时,下位机的程序并没有调整到位,这里做个记录并且进行修改,将上位机调整成和下位机一样:
void ImageProcess()
{
findcenterline_mode5();//找拐点
//【计算PID】
//feedback = LocPIDcalc_new(1, (centerline[straight_search_line - 1] + centerline[straight_search_line] + centerline[straight_search_line + 1]) / 3);
//if (steer_middle_pwm - feedback >= steer_left_pwm) feedback = steer_middle_pwm - steer_left_pwm;
//else if (steer_middle_pwm - feedback <= steer_right_pwm) feedback = steer_middle_pwm - steer_right_pwm;
//SetText("feedback" + feedback);
//【展示当前道路状态】
show_road_type();
SetText("没有卡循环!!!");
}
注意上位机中的juge_street保留在 findcenterline_mode5()中,而下位机则不需要(下位机的juge保存在电机控制中)
。修改完毕,明天去实验室看看是不是这样的问题,如果还有调整其他问题,则继续保持记录。
评论(0)
您还未登录,请登录后发表或查看评论