Categories
Tech

Sony PS3 Eye webcam with v4l2

Finally got this working again.

  1. The two webcams worked perfectly on my old desktop computer with Linux kernel 2.6.30 (which has gspca 2.6.0 built in). I could send commands to them via v4l2 to change exposure etc.
  2. Then I ported the code to a new machine running 64-bit Ubuntu 10.04, kernel 2.6.32 (comes with gspca 2.7.0). The cam still worked, but I had no access to the controls, e.g. exposure, gain and flipping. I spent two days switching back to kernel 2.6.30/31, trying different patches posted on open source forums, modifying the kernels, making an identical OS from the old machine to the new one… no luck.
  3. But the solution turns out to be simple: check out the latest source code (2.9.0) from www.linuxtv.org, compile it and load it into the kernel. Bang. But I still don’t know why an identical OS with identical driver wouldn’t work on the new computer.

Well, at least problem solved, time to move forward.

Categories
Tech

绑定子域名

国内很多主机都不支持绑定域名到子目录上,其实用一段javascript就能实现。

<script type=”text/javascript”>
var str = location.hostname
var domain1 = “domain1.com”
var domain2 = “domain2.com”
if (str.match(domain1) == domain1)
window.location = “new URL#1”
else if (str.match(domain2) == domain2)
window.location = “new URL#2”
</script>

对于Wordpress系统,这段代码最好扔到所用主题的header.php里<body>段的开头,如果直接放在index.php里可能会把WP的RSS弄坏掉,出现”XML declaration allowed only at the start of the document”(Safari下)之类的错误(我到今天才发现RSS已经挂掉一周了……)。

ps. 可以到Feed Validator验证RSS是否有效。

Categories
Once in Canada Tech

2眼

刚刚搞定了对reacTIVision的改造,实现了两个PS3 eye同时采集图像,分辨率翻倍~用现在的代码理论上还可以扩充到4个摄像头,只要USB总线不堵塞,CPU不烧掉。现在两个头就已经把macbook pro 2.4G的CPU跑满了,其中一个头的FPS还掉到了30以下。明天开始看看能不能做点优化。

还算高效,只花了6天。之间也走了不少弯路,比如尝试用UDP进行摄像头驱动和reacTIVision的通信,结果延迟严重,貌似还丢包。接下来就等老板出差回来批钱开工。

心情大好啊,可是天都黑了,没地方庆祝,郁闷。

Categories
Tech

Vista小感

因为用实验室的本子调试tabletop的缘故,用了一个多月Vista,算是可以理解它为何销路不畅了。几个简单的例子:

1. 不时从右下角静悄悄的跳出来个窗口,提示重启以安装补丁,一边开始倒计时。哭笑不得:假设用户愿意重启,立刻就可以保存当前工作,重新启动,倒计时有p用;如果不愿意,你弄个倒计时干啥?要么把他正在用的文档和程序关个一干二净,等他回来给个惊喜,要么逼迫他停下手中的活儿取消倒计时。

2. 干活中,噗的一声,又是个气泡,愉快的邀请你查看windows为电脑问题找到的解决方案。不得不说,任务栏简直沦为一个藏污纳垢的所在,除了各种软件搭配着系统消息不断弹出气泡,不断热心打断你的工作之外,还有什么用。

3. 极其脆弱。那台笔记本上仅仅接了个1394口的摄像头,一个投影机,这两个设备就让vista蓝屏了两三次,还有几次自动重启不知是安装补丁还是崩溃所致了,还有一次甚至无法启动,磨蹭了半小时restore才活过来。

安上了幅漂亮皮囊,各种花哨功能也应有尽有,但UI不仅仅是美观,还需要有背后无数的细节支撑,适当的功能取舍。用户花钱是来使用系统的,而不是来当系统的维护员。Windows 7的消息也越来越多,又是个养眼的东西,不知道会有何改观。

Categories
Tech

Oh, China’s first Artificial Brain

While looking for some papers this afternoon, I surprisingly find a professor Hugo de Garis who is carrying out the first Artificial Brain project in China, more amazingly, he’s granted by Xiamen Univ. with 3 Million RMB to work on the project during 2008-2011, said more millions will be given if needed. Here’s a piece of his speech:

The guy’s trying to evolve a neural network on hardware, to implement a brain to control hundreds of behaviors of robots. But what I cannot understand yet is, is XMU insane or just has too much money getting rot? Does it have enough kids to work on such kind of project? Alright, anyway, it can be a good news for me…

Categories
Tech

ActionScript notes

OpenGL好几天没碰了,这些天扬在准备申请用的作品集,摄影专业的人自然是一堆照片要展示,然后就叫我帮着做个Flash的homepage。一开始打算javascript, html, flash混搭来着,后来实在排版不过来,全站flash了。扬对代码之类的东西不太熟悉,所以我就一直在打包,as3.0的好处真是体现得淋漓尽致。最后把读图、缩略图浏览、放大、滚动这些东西包好,他只要两行代码就能调用。

一些问题记录一下。

1. 判断Loader读取结束的时候,EventListener要加在Loader.contentLoaderInfo上面。

2. 做好的MC要在as里面建实例的话,先写个.as,做个flash.display.MovieClip子类出来(只要有个类定义就行),然后在Library里把MC链接到这个子类上面。用的时候建立那个子类的实例就可以得到MC了。当然,MC用到的Library里的东西得手动复制到新的fla里面。

3. 需要持续移动之类的效果最好还是弄个Timer来,在Timer的event handler里面做事。

4. 注册点要统一,不然一堆MC调来调去的,不断的算相对坐标,疯掉。

Categories
Tech

OpenGL之纠结

今天开始配OpenGL的编译环境。

目前,根据我的理解,OpenGL并没有提供统一的SDK,所以有GLUT, freeglut之类的东西并存,安装之后,它们就能提供OpenGL编译所需要的一系列接口。

首先试了Mac OS X。其实没多想就放弃了。这姑娘长得那么漂亮,就没个编程的氛围……

然后就开Parallels拿Ubuntu 8.04出来。很轻松的apt-get install一下,就装上了libglut和freeglut等4个包。网上抄了一段测试代码,写好makefile,编译,通过,跳出来一个渲染后的窗口。但是console里很显眼的报错:freeglut: unable to create direct context rendering for window ‘xx’。google了一下,问题在于显卡的硬件加速没有发挥作用。从跳出来的窗口上也可以感觉到确实有些不顺畅。于是,找了nvidia的驱动来装。估量着Pro的显卡还是比较新的,8600M GT,所以装了nvidia-glx-new(-dev)。而且这个new的东西也确实是为8.04的新内核而生的。

但是,装完之后又出现新问题,连运行都不能了。编译、链接通过,运行直接报错:freeglut: OpenGL GLX extension not supported by display ‘:0.0’。再google,说是freeglut,libglut的库和nvidia驱动自带的库不能共存。!×·&……#¥×(!……#

之后看到有一篇文章,面对这种情况时,某人用mesa编译了库来用软件加速,直接无视nvidia的东西。于是照猫画虎,我也弄了mesa来编译。不见起色……怀疑是nvidia还在的缘故,于是又删了驱动,重装freeglut & libglut,重启,又弄出来新的问题,找不到-lGL。手动跑了一次ldconfig,还是死样。又把驱动装回来,编译过了,运行又是unable to create……回到原点。这时候真是严重的心烦意乱,懒得再折腾LIBRARY_PATH啥的了,估计是用虚拟机跑的时候显卡驱动比较土吧。

最后收拾收拾,还是回到Mac下了。正好翻到NeHe的OpenGL教程,里面居然有专门针对OS X的说明!OS X里也有自带OpenGL Framework。nnd。。。正好之前也装了Xcode,就下了一段sample code来。结果……一下通过……运行顺利……出现了一个可爱的红色三角形……

叹,虽然是绕了个大圈,花了大半天时间,最后的结果还是成功的,不仅可以动手写东西了,而且能舒服的呆在Mac下享受漂亮的界面而不必忍受Parallels上面奇怪的Linux(btw, Parallels跑Linux居然不能与OS X之间copy/paste,官方的解释也是无能为力。这叫人怎么用……)。

发泄完毕。

Categories
Tech

决策错误

拖拖拉拉研究了半个月的wordpress和ActionScript,指望做一个披着Flash外皮的WP博客。现在代码完成,已经能和WP的后台结合使用了,于是又回到页面的设计上,越发体会到Flash不适合作为博客的界面。

Flash剪辑的尺寸过小,则影响阅读,过大则体积臃肿。况且要想把wordpress现有的其他功能,如RSS和统计保留下来,又得一番大改。此外,虽然Google声称已经可以提供Flash内容的索引了,但要达到它的索引要求还得在外观上做一些妥协,否则效果不见得好。

综上,做出来的半成品就放着了,反正也算有收获,AS3.0相比于2.0的变化实在很大,很多函数都做了替换,也更倾向于所谓的面向对象了,以至于离校那天要给纪念相册的按钮加响应函数都写不出来,现在就熟悉多了。

Categories
Tech

g++静态库调用

研究了一个下午,总算能调用libjpeg.a了。
总结一下,正确步骤如下:

  1. 正确安装libjpeg。按照自带的方法安装并不会把.a和.so生出来。需要用./configure --enable-static --enable-shared --prefix=/usr 这个命令让libjpeg在/usr下建立共享和静止的两种库。然后确保库文件的路径如 /usr/lib/usr/local/lib 应该在 /etc/ld.so.conf 文件中,这样 ld 才能找到这个库。在检查了这一点后,要以 root 的身份运行/sbin/ldconfig更新缓存。
  2. 编译命令中加入库名。Eclipse的工程属性里,linker设置的库路径会自动加上-l前缀,这个前缀是用来自动扩展库名的。由于第一步已经把libjpeg.a放到指定路径里了,所以这里写上jpeg它就能自动找到库。
Categories
Tech

bat不能运行?

te: bat不能运行?

C&C的时候才发现bat都不能运行了,试着关联到命令行,不能用。

google了半天,搜索结果里尽是些废话,最后才找到正解:

ftype batfile=%1 %*空格 [回车]

assoc .bat=batfile [回车]

备忘。