智能车制作

标题: 这种情况中心线咋找? [打印本页]

作者: 小萌小萌    时间: 2016-4-2 22:40
标题: 这种情况中心线咋找?
[attach]84716[/attach]这种情况中心线咋找?

作者: 一个人的浮屠    时间: 2016-4-3 09:37
同问:)
作者: 暴风猎人    时间: 2016-4-3 15:22
补线……
作者: 梦大    时间: 2016-4-3 15:23
暴风猎人 发表于 2016-4-3 15:22
补线……

怎么去很好补线呐?

作者: 暴风猎人    时间: 2016-4-3 15:25
梦大 发表于 2016-4-3 15:23
怎么去很好补线呐?

技术报告……很简单的问题

作者: 梦大    时间: 2016-4-3 15:28
暴风猎人 发表于 2016-4-3 15:25
技术报告……很简单的问题


那兄台是怎么去补线的呐?

作者: 六步上篮    时间: 2016-4-3 15:30
中心线可以按宽度补
作者: 梦大    时间: 2016-4-3 17:19
六步上篮 发表于 2016-4-3 15:30
中心线可以按宽度补

知道的宽度和弯道的宽度不一样。
作者: Sτrīvé___    时间: 2016-4-3 18:27
六步上篮 发表于 2016-4-3 15:30
中心线可以按宽度补

[attach]84725[/attach]怎样补出这种效果???直接加宽度问题很大,有什么好的思路?

作者: 花花世界123    时间: 2016-4-4 15:00
觉得不好补,我想知道你们第一行全白是怎么处理的

作者: Quixote    时间: 2016-4-4 16:12
按照一边当作中心线,加固定线性偏移
作者: 梦大    时间: 2016-4-4 20:37
Quixote 发表于 2016-4-4 16:12
按照一边当作中心线,加固定线性偏移

大神,没看懂。详细讲一下。谢谢!

作者: 花花世界123    时间: 2016-4-4 22:54
我也想知道第一行全白怎么补的,还有弯道赛道中点已经不在数组里的话 还用处理吗
作者: Quixote    时间: 2016-4-5 12:54
梦大 发表于 2016-4-4 20:37
大神,没看懂。详细讲一下。谢谢!

简而来说用一边进行转向。
因为你一边的引导线是可以知道的,所以你可以算出这个线的信息用于转向。
如果你的转向方法很依赖于中线的位置的话,你可以认定此时的中心位置减去单侧线的距离等于上一次中心位置减去单侧线。



作者: 梦大    时间: 2016-4-5 17:12
Quixote 发表于 2016-4-5 12:54
简而来说用一边进行转向。
因为你一边的引导线是可以知道的,所以你可以算出这个线的信息用于转向。
如 ...

如果你的转向方法很依赖于中线的位置的话,你可以认定此时的中心位置减去单侧线的距离等于上一次中心位置减去单侧线。
我是按这个方案来进行的。
弯入直的时候线补的很斜,导致偏差很大。速度快了就跑出去了。怎么解决啊?
谢谢大神指导!



作者: Quixote    时间: 2016-4-5 21:26
梦大 发表于 2016-4-5 17:12
如果你的转向方法很依赖于中线的位置的话,你可以认定此时的中心位置减去单侧线的距离等于上一次中心位置 ...

发下这个时间段、你的中点对应时间组成的曲线和你每个时刻采集到的赛道图

作者: 梦大    时间: 2016-4-5 21:34
Quixote 发表于 2016-4-5 21:26
发下这个时间段、你的中点对应时间组成的曲线和你每个时刻采集到的赛道图

就是上面那三幅图像。

作者: Quixote    时间: 2016-4-5 21:51
梦大 发表于 2016-4-5 21:34
就是上面那三幅图像。

至少也得来30张……
这种我代码里有解决思路,大致是这样的。
if ((1 == LogicCondition.leftSide_isDown) || (1 == LogicCondition.rightSide_isDown))
            {
                lostDouble_TimerCounter = 0;//丢线寄存器清空
        if (1 == LogicCondition.leftSide_isDown)//左边界有效
        {
                    TrkSide[y_ctr] = Sid_Left;
                    x_startPos_n_add_one = (sint16)(number_Trk.n_left_end + perLine_vaild_width*0.45f);//相当于补边
                    if((x_startPos_n_add_one < x_startPos)&&(process_find_timer > 2))//本次数值在上次数值的左边
                    {
                        x_startPos_n_add_one = m_ImageAbstract.Central[y_ctr-1]//路径的PD作用
                                            + (m_ImageAbstract.Central[y_ctr-2]-m_ImageAbstract.Central[y_ctr-3]);
                    }
                    if((process_find_timer < constn_DeadLine_BeWith)&&(process_find_timer > 0))
                    {
                        if(x_startPos_n_add_one < m_ImageAbstract.Central[y_ctr-1]){x_startPos_n_add_one = m_ImageAbstract.Central[y_ctr-1];}
                    }
                }
                else//右边界有效
        {
                    TrkSide[y_ctr] = Sid_Right;
                    x_startPos_n_add_one = (sint16)(number_Trk.n_right_end - perLine_vaild_width*0.45f);//相当于补边
                    if((x_startPos_n_add_one > x_startPos)&&(process_find_timer > 2))//本次数值在上次数值的右边
                    {// 0 1 2 (3)
                        x_startPos_n_add_one = m_ImageAbstract.Central[y_ctr-1]
                                            + (m_ImageAbstract.Central[y_ctr-2]-m_ImageAbstract.Central[y_ctr-3]);
                    }
                    if((process_find_timer < constn_DeadLine_BeWith)&&(process_find_timer > 0))
                    {
                        if(x_startPos_n_add_one > m_ImageAbstract.Central[y_ctr-1]){x_startPos_n_add_one = m_ImageAbstract.Central[y_ctr-1];}
                    }
                }//寻线结束
                if(2 == lr_n_cut_1_isExist)
                {
                    if(process_find_timer > 2)//为了拐弯
                    {
                        m_ImageAbstract.Central[y_ctr - 1] = x_startPos_n_add_one;//赋值给上次
                        m_ImageAbstract.Central[y_ctr - 2] = x_startPos_n_add_one;//赋值给上上次
                    }
                }
                lr_n_cut_1_isExist = 1;//存在一条边               
            }


作者: 梦大    时间: 2016-4-5 22:03
Quixote 发表于 2016-4-5 21:51
至少也得来30张……
这种我代码里有解决思路,大致是这样的。
if ((1 == LogicCondition.leftSide_isDo ...

我只在有问题的地方采集了图像。目前研究的SD卡只能保存没有中心线的图像:'(。还需努力。
谢谢大神指导!!

但我不知道那些字母具体代表什么意思,可否给我发一份完整的资料。397444743@qq.com 非常感谢!!!

作者: Quixote    时间: 2016-4-6 13:22
梦大 发表于 2016-4-5 22:03
我只在有问题的地方采集了图像。目前研究的SD卡只能保存没有中心线的图像。还需努力。
谢谢大神指 ...

我在论坛有开源、http://www.znczz.com/thread-236861-1-1.html

作者: 梦大    时间: 2016-4-6 18:43
Quixote 发表于 2016-4-6 13:22
我在论坛有开源、http://www.znczz.com/thread-236861-1-1.html

嗯嗯。
谢谢大神指导!!

作者: joe230023    时间: 2016-4-10 08:51
Quixote 发表于 2016-4-5 21:51
至少也得来30张……
这种我代码里有解决思路,大致是这样的。
if ((1 == LogicCondition.leftSide_isDo ...

想问下perLine_vaild_width*0.45f这个意思是?

作者: 萌小凡    时间: 2016-4-10 09:59
都采到行消影区了。。
作者: Quixote    时间: 2016-4-10 15:17
joe230023 发表于 2016-4-10 08:51
想问下perLine_vaild_width*0.45f这个意思是?

比宽度的一半少一点





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