2010年06月 文档列表

当爹啦

快讯:6月15日,代号为“圈圈”的智能生命体在北京问世。该产品由知名科学家“动力老男孩”及其夫人共同开发研制,重量为6斤3两,设计性别为女性。该产品发音响亮,力量惊人。一经问世即获得海淀妇幼专家们的一致好评,产品性能和智商处于国内外领先水平。

解魔方的机器人攻略28 – 总结

经过这么长的时间,终于把萝卜头的制作攻略全部发完了。这次发攻略的过程,我把萝卜头重新搭建了一遍,把所有的代码也整理重写了。新版的小萝卜头看上去更好看一点(个人感觉,呵呵),代码容错能力也强了很多。现在在各种不同的灯光条件下,基本都可以正确识别颜色,并且转动过程中,魔方掉下来的情况也很少见了。终于松了一口气,对博客和对萝卜头都算有一个交代了。

我家圈圈很快就要降生,接下来的一段时间博客可能会很少更新。小爱的进度看来已经远远落后,目前还只是一个可以用手机遥控的小车。不过来日方长,我会继续制作并且和大家分享的。

NXT端的程序下载(源代码)

PC端的程序下载(exe)

下面转几个国外达人制作的魔方机器人,其中最快的已经可以在十秒左右解出魔方。据说人类的世界记录是7秒多,有志于突破人类极限的朋友,可以参考参考,我非常愿意为此贡献一点力量。

世界最快的乐高魔方机器人

目前最快的魔方机器人

目前最快的魔方机器人

作者把视频发在了youtube上,无法转载,有兴趣的同学请自行翻墙过去看看:
http://www.youtube.com/user/RoboticSolutions
介绍文章:
http://singularityhub.com/2010/02/17/lego-robot-solves-any-rubiks-cube-in-less-than-12-seconds-video/

五阶魔方机器人
用的也是Lego studio摄像头+NXT,5阶魔方还原算法自然是这个机器人的核心,但并非lego范畴,这里可以看到David Gilday愈加成熟的PC端处理程序,看起来相当酷。此外玩过多阶魔方的朋友都知道,这种魔方的翻转定位是最大的问题,所以这款机器人采用了一个相对丑陋的框式造型来帮助解决这个问题,气势上差了一点,但毕竟是第一款,6分43秒185步的测试水平也算世界纪录了。

视频地址

URL:
http://www.tudou.com/programs/view/HXeCwaDdXW0/

大型魔方机器人
大型机械臂,从取魔方,识别,到翻转,放回,仿佛可以看见不远将来家里的小机器人接过你随手拧乱的魔方,咻咻复原的可爱场景。
视频地址:

URL:
http://www.tudou.com/programs/view/TLuTp8mWLPM/

四阶魔方机器人
这是一款用NXT+N95手机的魔方机器人,旋转的结构很酷:
http://blog.izxg.com/?tag=%E4%B9%90%E9%AB%98

解魔方的机器人攻略27 – 让萝卜头开口说话

上次提到了“甜美的声音”,今天介绍一下如何让萝卜头发出声音。NXT的发声装置就是盒子上那个小喇叭,因为喇叭质量不是很高,所以别太指望萝卜头能演奏世界名曲。从开发角度来说,NXT内置了很多种发声的方式,详细内容可以参考leJOS中文教程 – 播放声音。例如,我们用下面的代码就可以让NXT蜂鸣两声:

Sound.twoBeeps();

NXT还可以直接播放8位的wav文件,播放命令是:

Sound.playSample(new File("Start.wav"));

下面介绍一下如何制作这样的wav文件。

首先要录制声音,用手头的任意录音工具都可以,例如手机,mp3,其实电脑本身也可以录音。萝卜头一共需要三句台词:“开始”、“结束”和“出错啦”。可以一次录完,把三段声音录在一起,每句台词之间留一点停顿,后期容易裁剪。

录好音之后,一般会生成*.wav或者*.mp3的文件。这种直接录好的文件一般都是双声道,而且采样频率比较高。这种高级音频萝卜头是没法识别的,要适当压缩成萝卜头可以处理的格式。

强烈推荐一款叫“CoolEdit”的音频处理工具,打开录好的音频文件,可以看到有声音的部分是波形图,中间停顿的部分几乎是平的直线。可以用鼠标拖动选择相应的音频,然后在菜单中选择“选中部分另存为..”,保存的格式选择“Wave PCM unsigned 8 bit,8000HZ,64kbps,单声道”,就可以生成相应的wav文件了。最后可以生成以下三个文件:

Start.wav
End.wav
Error.wav

下面把这几个文件下载到NXT中,在命令行中运行:E:\lejos_nxj\bin\nxjbrowse.bat。如果萝卜头开机的话,这个工具的“download”功能,依次把三个文件都保存到NXT中。

最后在程序的相应地方加入播放代码即可,上一篇中已经看到了出错信息的播放,“开始”和“结束”的播放程序为:

if(hasCube && isChaotic)
{
	//The cube is read, init the error status
	hasError = false;

	//Play some sound to notice the "Start"
	Thread.sleep(1000);
	Sound.twoBeeps();
	Thread.sleep(1000);
	Sound.playSample(new File("Start.wav"));

	//Ignore solve cube codes......

	if(!hasError)
	{
		//The cube has been solved
		isChaotic = false;

		Sound.playSample(new File("End.wav"));
		Thread.sleep(1000);

		//Rotate the cube two circles for annoucement
		Robot.RotateBottom(8);
	}
}