|
发表于 2009-9-19 12:42:58
|
显示全部楼层
楼上的朋友,那你就把原来的程序先改成可以用8547传感器使用的程序吧,发出来也是一种对大家的贡献哦
糖伯虎 发表于 2009-9-13 17:12 
这个……惭愧呀。
除了上述机械故障,颜色识别也是一个问题。
改了好几个版本,不过颜色识别好像还总是有一些误差……
这里先把我的修改思路告诉大家吧。
第一种修改思路:
原作者的程序用的ColorSensor读取的颜色值是RGB,我不太清楚范围是多少,所以不知道怎么迎合他的程序修改LEGO的传感器的程序。
LEGO传感器的颜色读取,用下面的函数:
ReadSensorColorEx(_port, _colorval, _raw, _norm, _scaled)
其中_raw, _norm, _scaled分别是三个int[3]数组。分别存储RGB值。
根据文档,_raw的值应该在0-600,_norm和_scaled的值没找到,不过测试结果显示应该在0-255之间。两个值相同。
取出这三个数组值之一,根据原作者程序的颜色值的处理按比例进行调整。(这个比例不清楚…………)
第二种修改思路:
因为标准魔方只有:红黄蓝绿橙白六个颜色。而LEGO的ColorSensor可以识别红黄蓝绿黑白六个颜色。
所以只需要将橙色从红色和黄色里面分离出来即可。
用上述函数取出RGB值,转化为HSV值,用色调的H值来判断红橙黄。
我想得很美好,实际误差也不是很大,但总无法做到100%没问题。
其实,还有一个办法,修改最少。可以把魔方的橙色面全部贴成黑色。不过我没有尝试。
另外,国内比较流行的好一些的魔方,只有国甲二可以满足需求。其他的都比较大。因为好魔方比较贵,所以提前告诉大家一声,免得花冤枉钱。另外,魔方要调松、上油才行。
附件压缩包里面是我的各个版本的程序。
主目录下的程序,是后来改用8547里面第二大的齿轮带动最小小齿轮,再带动大齿轮的运行程序。组装方式与前面的图不同。
1_1_backup是等大齿轮带动的程序,与上图相同。
aLittleColorProblemVersion是第一种颜色修改方案的结果。
color_backup里面是什么我也记不清了。呵呵……
有修改部分代码看不懂的,可以随时咨询我。
最近我已经从NXC转投LeJOS了,而且机器人也拆了。所以没法继续调试了。希望能给各位仍在奋斗的朋友们一些启示。要是有人调通了,一定告诉我一下哟。顺便把方法也介绍介绍!先谢谢一下! |
|