智能车制作

标题: 最小二乘法在弯道外侧计算出错。。。 [打印本页]

作者: Shadows    时间: 2013-7-4 13:59
标题: 最小二乘法在弯道外侧计算出错。。。
[attach]47688[/attach]当在弯道外侧时,二值化图和提取出的黑线中线图。
这个时候明明是左转,可最小二乘法算出来的斜率却是相反的方向。结果,你懂的。。。
而且也只在这种情况下是这样,在其他位置计算出的斜率都是正确的。。。
计算方式如下,,求查错,求科普。。。
for(count_row=0;count_row<ROW;count_row++){
      x=count_row+1;
      y=midline[count_row]-mid_colum;
      S_xy+=x*y;
      S_xx+=x*x;
      S_y+=y;
      S_x+=x;
   }
   slope=(S_xy-S_y*S_x/ROW)*1.0/(S_xx-S_x*S_x/ROW);


作者: huiqiang1115    时间: 2013-7-4 13:59
Shadows 发表于 2013-7-4 14:45
我试试

想了想其实和你的差不多。。。还有就是如果定义的都是整形变量,应该适当扩大。。。

作者: huiqiang1115    时间: 2013-7-4 14:28
y=midline[count_row]-mid_colum;
这句不该这么写吧
应该是y=midline[count_row];
另外应该做一下该行有效判断吧,有效的才累加,无效的就该舍去了。。。
个人见解。。。


作者: Shadows    时间: 2013-7-4 14:45
huiqiang1115 发表于 2013-7-4 14:28
y=midline[count_row]-mid_colum;
这句不该这么写吧
应该是y=midline[count_row];

我试试

作者: Shadows    时间: 2013-7-4 15:51
huiqiang1115 发表于 2013-7-4 15:19
想了想其实和你的差不多。。。还有就是如果定义的都是整形变量,应该适当扩大。。。

还是觉得应该是      y=midline[count_row]-mid_colum;

是将y作为横坐标的,以(0,mid_colum)作为原点,需要减的吧、、、


作者: Shadows    时间: 2013-7-4 16:01
huiqiang1115 发表于 2013-7-4 15:19
想了想其实和你的差不多。。。还有就是如果定义的都是整形变量,应该适当扩大。。。

果真是数据长度的问题,当在弯道外侧时,累加超过了int的范围了。。。。谢谢啦

作者: SleepingLJ    时间: 2013-7-4 23:39
楼主Y和X值的选取是不是弄反了 我感觉X应该是midline[count_row] Y应该是count_row 但我们这么做却得不到正确的结果 求指教!!!
作者: m__dd    时间: 2013-7-5 10:09
本帖最后由 m__dd 于 2013-7-5 10:12 编辑
huiqiang1115 发表于 2013-7-4 13:59
想了想其实和你的差不多。。。还有就是如果定义的都是整形变量,应该适当扩大。。。


我也用的最小二乘法拟合直线,除了连续大弯容易冲出去外,其它都可以。速度2.5提不上去了,那个连续大弯是瓶颈!能加qq吗? 我的704711253

作者: 深情、一回头    时间: 2013-7-5 11:48
我们的中线也是和你们的差不多  不知道你们舵机是怎么控制的呢?
作者: Shadows    时间: 2013-7-5 12:47
深情、一回头 发表于 2013-7-5 11:48
我们的中线也是和你们的差不多  不知道你们舵机是怎么控制的呢?

目前直接PD(D=1)

作者: Shadows    时间: 2013-7-5 12:48
SleepingLJ 发表于 2013-7-4 23:39
楼主Y和X值的选取是不是弄反了 我感觉X应该是midline[count_row] Y应该是count_row 但我们这么做却得不到正 ...

[attach]47699[/attach]我是按这幅图来的。。

作者: SleepingLJ    时间: 2013-7-5 13:13
Shadows 发表于 2013-7-5 12:48
我是按这幅图来的。。

图上的X和Y轴的定义,与我们刚好相反。

作者: SleepingLJ    时间: 2013-7-5 13:23
Shadows 发表于 2013-7-5 12:48
我是按这幅图来的。。

楼主最后定义的斜率是什么 形式的啊? float的还是长整形的?

作者: Shadows    时间: 2013-7-5 16:15
SleepingLJ 发表于 2013-7-5 13:23
楼主最后定义的斜率是什么 形式的啊? float的还是长整形的?

float...计算出来的值一般在2~-2之间。。

作者: 天河之外    时间: 2014-5-13 21:45
学习了

作者: matizi    时间: 2014-5-16 15:05
请问mid_colum你定义的是什么量
作者: Shadows    时间: 2014-5-16 16:51
matizi 发表于 2014-5-16 15:05
请问mid_colum你定义的是什么量

提取出的中线啊。。

作者: 阿灰    时间: 2014-5-16 21:57
弯道 是什么样就什么样吧,为什么要做最小二乘法拟合, 我就在十字的时候将中线拟合一下,补出中线;虽然现在速度不是很快,但还凑合吧, 大量的浮点运算势必延长车子的控制周期,我觉得车子算是个实时系统,控制周期越短越好,个人见解!
作者: Shadows    时间: 2014-5-17 10:32
阿灰 发表于 2014-5-16 21:57
弯道 是什么样就什么样吧,为什么要做最小二乘法拟合, 我就在十字的时候将中线拟合一下,补出中线;虽然现 ...

是用最小二乘法拟合出的斜率值来控制转向的,,,

作者: 阿灰    时间: 2014-5-17 16:17
我们还没有用到 斜率,前瞻取长了,拍到其他的赛道,干扰很严重!
作者: matizi    时间: 2014-5-17 21:03
Shadows 发表于 2014-5-16 16:51
提取出的中线啊。。

感觉midline[count_row]是你提取出的中线,那mid_colum是什么量啊?

作者: LSQ_GSQ    时间: 2014-5-18 00:28
可以大概讲解一下最小二乘法的思想吗?谢谢
作者: Shadows    时间: 2014-5-18 07:12
matizi 发表于 2014-5-17 21:03
感觉midline[count_row]是你提取出的中线,那mid_colum是什么量啊?

绝对中点,,,,常数60

作者: 凌轩翼    时间: 2015-4-1 21:32
最小二乘法拟合那舵机怎么控制
作者: 一人分饰两角    时间: 2015-4-5 18:30
最小二乘法拟合那舵机怎么控制    同问
作者: 啊我的大腿毛    时间: 2019-10-10 17:01
Shadows 发表于 2014-5-17 10:32
是用最小二乘法拟合出的斜率值来控制转向的,,,

请问是用斜率作为p来控制舵机吗?






欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2