设计失误

好久没来写,发现wordpress的界面居然有点陌生了。白天几乎没做什么,一直在看boost,被它的多线程和消息挂住了。回到寝室想设计一下Walk函数,没想到,发现一个严重的设计错误,机器人行走任务应该优先指定目的地或者子级目的地,而不是优先指定速度控制的动作序列,之前好几周的脑筋白伤了。走点弯路倒是不算什么,关键是时间紧迫,区区半年时间,真让人恼火,即便是早半年告诉我做机器人,也不至于窘迫成现在这个样子。

晚上做player的多线程总算是有点了眉目,其实对于boost的多线程根本一窍不通,完全照葫芦画瓢,线程间通信到时候该怎么办还一点数都没有。之前为了设计运动Task的Generator和Interpretor困顿了好几天,最后把程序的抽象层次一降再降,最后还是回到了switch的模式,Generator还没写,暂时搁置一下。

重新审视了一下,最初硬生生把运动分成MoveStraight, TurnAround, Turn, Stand几个基本运动貌似其实画蛇添足。原来这么设计是为了复杂曲线或者复杂的加速过程留条活路,但是现在一想,暂且不说精确的速度加速度控制实现的难度怎样,其必要性也很值得怀疑。白天的时候考虑了一下路径规划的方式,预先设置好一条精确的路线然后执行的思维是自动化的思维,在智能的行为方式其实很强调外界的反馈,人并不会首先考虑按照原定计划怎么走,而是先观察环境,再考虑是不是按照原计划进行,甚至只是先执行一部分的预定计划再说。对于速度控制,精确的速度和加速度过程控制只能属于自动化的范畴,智能化只求方向正确,最终达成目标即可,中途有多少意外情况其实都是次要的,只要不超过忍耐限度就行了。

晚上做player的多线程总算是有点了眉目,其实对于boost的多线程根本一窍不通,完全照葫芦画瓢,线程间通信到时候该怎么办还一点数都没有。之前为了设计运动Task的Generator和Interpretor困顿了好几天,最后把程序的抽象层次一降再降,最后还是回到了switch的模式,Generator还没写,暂时搁置一下。
重新审视了一下,最初硬生生把运动分成MoveStraight, TurnAround, Turn, Stand几个基本运动貌似其实画蛇添足。原来这么设计是为了复杂曲线或者复杂的加速过程留条活路,但是现在一想,暂且不说精确的速度加速度控制实现的难度怎样,其必要性也很值得怀疑。白天的时候考虑了一下路径规划的方式,预先设置好一条精确的路线然后执行的思维是自动化的思维,在智能的行为方式其实很强调外界的反馈,人并不会首先考虑按照原定计划怎么走,而是先观察环境,再考虑是不是按照原计划进行,甚至只是先执行一部分的预定计划再说。对于速度控制,精确的速度和加速度过程控制只能属于自动化的范畴,智能化只求方向正确,最终达成目标即可,中途有多少意外情况其实都是次要的,只要不超过忍耐限度就行了。

贴几张照片,解解闷

 看着这幢新楼堵住视野,闹心

又到一年毕业时

One comment on “设计失误

Comments are closed.