本帖最后由 灰原姐姐 于 2013-7-5 00:41 编辑
*** :
你好! 很抱歉这么迟才回复你。 我查看了你的工程,定位到了 bug 的位置。 这是显示赛道时为了避免 Z-fighting 问题产生的bug。 这个 bug 已经在最新的的 V1.0 版本中修复。 预计在全国赛的时候发布。
有意思的是,我之前是手动检查出这个 bug 的, 而你触发该 bug 的方式是调用 sEnablePath () 函数, 细节不好描述了,总之很有意思,是一个很长的因果链。
在新版本发布前,避免该 bug 的方式是:暂时不要调用 sEnablePath () 函数。 而且由于 final7.trk 赛道较长,sEnablePath () 函数执行的时间较长,也不利于反复调试。 我对此表示歉意,是我编写代码不够严谨、版本维护迟钝,为您造成的损失。
关于 SCS 的底层物理模型,你恰恰猜测反了。
事实上 SCS 是只允许有滑动摩擦,而无法仿真静摩擦的。 只是当仿真时间粒度取的较小,滑动摩擦因数取较大值时,宏观来看比较像静摩擦。 你观察到的现象不是由于物理模型的不精确造成的, 这现象恰恰是符合实际的,主要是由于倒跑的机械模型决定的。
正跑时,前轮的侧滑使得转弯半径变大,转弯圆心靠后, 而倒跑时,后轮(转向轮)的侧滑使得转弯半径变小,转弯圆心靠前。 所以倒跑的行进姿态特别像是正跑时的漂移。
最后,关于阿克曼转角的问题。 阿克曼转角只是一个理论模型,实际的车辆都是不符合阿克曼转角的。 因为车辆转弯时,如果内侧转向轮抓地力不足,则实际转弯半径按外侧转向轮确定。 然后,即使内外侧转向轮符合阿克曼转角,即使他们确定的转弯半径在理论上相等, 实际上,由于机械的不精确和前轮转向时相对底盘受到的摩擦力力矩,实际转弯半径比理论确定的半径大。 内侧轮倾角大,如果内侧轮倾角确定转弯半径,则实际转弯半径比理论半径大一点。 外测论倾角小,如果外测论倾角确定转弯半径,则实际转弯半径比理论半径大很多。 (定量分析就比较麻烦了,我就只说说定性分析)。
考虑到上述效应,实际车辆转向轮,先考虑阿克曼转角,设计转向系统。 而后,在以上角度下,略微增加外侧转向轮的角度。 这使得两轮角度的差值更接近零。 所以,直接将两轮倾角设计成相同的角度,是上述两者综合考虑的一个合理近似。 (最后说一句,我们真车上也是这样考虑的,SCS 这样设计也是依据实际实验结果的)
至于你说的,想分析哪个轮子侧滑,其实很简单。 根据圆周运动相关公式,计算出四个轮子的压力, 哪个轮子压力最小,哪个轮子滑动。 不过这样的分析在 SCS 内是没有意义的, 因为 SCS 内根本没有静摩擦,轮子跟地面时时刻刻是滑动摩擦的。
如果你想了解 SCS 的物理模型,你可以在论坛上搜索一下我的毕业设计 《智能车虚拟现实与路径规划》 其中有对 SCS 底层物理模型的简单介绍。 在你感谢您对 SCS 的支持。
- 灰原姐姐
这个就是复现sgetgraph函数获得的graph数组非第一视角的bug的程序,里面只含有opencv画的图片,车子不带自动循迹的(一是和bug重现无关二是没经过学校同意不得外传,敬请谅解)。
具体触发就是我在论坛上说的“按下6等然后鼠标滚轮拉远到一定程度(比如6基本看到全地图final7的话就会出现),或者拉近到一定程序(看到车子里面去了的感觉)各会出现黑线消失或者反色的现象。”
不过需要安装opencv2.3.2然后更改下property里面的include的地址,另外地图文件trk我是按照绝对路径写的,也要修改下。其他应该没啥问题了,感谢灰原姐姐热心排错- -
另外还有一点- -我昨天尝试了下正着跑(就是开启reverse)- -发现如果pid匀速上2m8以上我觉得转弯就转不过来了,相反倒着跑转弯灵敏得太多,而且在转弯的时候速度如果大幅度下降会让车体一下子过度转动很多很多(比如在90度弯速度从3m降到2m一下子就会转将近180度。。。而不是侧滑。。。所以我想问下灰原姐姐这个仿真软件是不是不允许出现侧滑的?另外我貌似想不通这个没有差速器且不符合阿克曼转角的简单车模以一个固定角度转弯时真的是四个轮子都不滑动的么?我觉得力学分析下貌似必须有一个轮子滑动,但分析不出是哪一个。。。所以希望了解下你的scs的转弯模型是怎样的?)
|