diff --git a/doc/5.26/servo_control.c b/doc/5.26/servo_control.c new file mode 100644 index 0000000000000000000000000000000000000000..986c1c788cf817f37b6430f2c21d10d0d9d891be --- /dev/null +++ b/doc/5.26/servo_control.c @@ -0,0 +1,44 @@ + +#include "servo_control.h" + +int gl_iSensorDistance[11] = {-52,-41,-30,-14,-5,0,5,14,30,41,52}; +int GetErr(void) +{ + static int s_iLastErr = 0; + float iPositionErr = 0; + unsigned int sensor = 0; + float lightCount = 0 ; + int i = 0; + + sensor = gl_uiDigitalSensor; + + GetDigitalSensorNum(gl_uiDigitalSensor);//ֵ + + if(gl_ucSensorNumber<4) + { + for (i=0; i<11; i++) + { + if (sensor & 0x0001 == 0x0001) + { + if (gl_iSensorDistance[i] - gl_iNowErr < 30 && gl_iSensorDistance[i] - gl_iNowErr > -30) + { + iPositionErr += gl_iSensorDistance[i]; + lightCount++; + } + } + sensor >>= 1; + } + } + + + if (lightCount > 0) + { + s_iLastErr = iPositionErr / lightCount; + return (iPositionErr / lightCount); + } + else + { + return s_iLastErr; + } + +} diff --git "a/doc/5.26/\350\210\265\346\234\272\345\216\237\347\220\206\344\270\216\346\216\247\345\210\266.pdf" "b/doc/5.26/\350\210\265\346\234\272\345\216\237\347\220\206\344\270\216\346\216\247\345\210\266.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..4b37c4f378b44f9302b6697460a65b1d1d8b8ebf Binary files /dev/null and "b/doc/5.26/\350\210\265\346\234\272\345\216\237\347\220\206\344\270\216\346\216\247\345\210\266.pdf" differ diff --git "a/doc/5.26/\350\210\265\346\234\272\347\237\245\350\257\206\346\261\207\346\200\273.pdf" "b/doc/5.26/\350\210\265\346\234\272\347\237\245\350\257\206\346\261\207\346\200\273.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..22b961ff7a91f950c93c85bfb82e7f5fa34ee749 Binary files /dev/null and "b/doc/5.26/\350\210\265\346\234\272\347\237\245\350\257\206\346\261\207\346\200\273.pdf" differ diff --git "a/\350\226\233\345\215\232\351\230\263\344\277\256\346\224\271.md" "b/\350\226\233\345\215\232\351\230\263\344\277\256\346\224\271.md" new file mode 100644 index 0000000000000000000000000000000000000000..8c3eee7586a5ed2f889dfb0945e6d04fa3183d78 --- /dev/null +++ "b/\350\226\233\345\215\232\351\230\263\344\277\256\346\224\271.md" @@ -0,0 +1,14 @@ +# 2018.5.14 # +## 薛博阳 ## +1. 因为我自己没有参加基础组对arduino不甚了解,建议或许有不合理之处。 +2. 舵机部分也应留出,因为红外对管传感器循迹相对简单,且算法处理效果并不明显,为了给选手更大的发挥空间,可以让选手自己去测试舵机的合适打角值,然后完成舵机部分,或将差速处理去掉,让选手自己添加。 +3. 按照我去年感受,这是一个集机械电路和机械于一体的综合性比赛,甚至更偏向程序。然而由于到手的工程文件封装过于好,只要烧进去电路和机械部分没问题就能稳稳跑完全程,程序上几乎除了优化也没什么能做的,反而是大量选手因为电路和机械问题不能跑完而出局。优化效果也并不明显,我们尝试过PID算法但对方向控制并不十分有效,原因很多,除电路机械问题,赛道不干净也使得测试无效。既然优化并没多大效果,还不如直接将程序中方向控制留给选手发挥。 +4. 决赛赛道和赛制问题,赛道太难,提高程序难度后建议将赛道稍作修改。30米即可,60米有些困难。决赛赛制建议改成初赛赛制,要允许选手有所失误,增加机会,同时最关键的是保证比赛的完成,如果像去年那样前面没几组能跑完都是靠预赛名次晋级甚至拿奖使得这个比赛趣味性和刺激性就大大降低了,因为调试时间本来就短,不应该对精度要求那么高。使得选手单纯追求稳定性不再提速。 +5. 将基础组和提高组分开比赛,各设奖励。 + +# 2018.5.26 # +## 薛博阳 ## +1. 本次主要针对舵机部分进行修改。 +2. 假设初学者对于舵机的控制原理一无所知,想让他根据本项目的舵机介绍对于传感器和舵机之间的控制建立模型还是有些困难的,敝以为应先普及一下舵机的知识为好。 +3. 综上所述找了两份相对浅显适合上手的舵机学习资料。 +4. 附赠舵机代码一份,里面包含了使用类似传感器的舵机控制算法。即在程序中强行规定检测到相应传感器时应设定的舵机打角值。这样做的好处是,避免受传感器位置安装限制。与原项目给的舵机算法相比,可使舵机打角值灵活设定,与传感器检测值成线性或二次关系,对不同赛道适应能力更强。 \ No newline at end of file