November 17, 2005

史賓機器人紅外線遙控器實作 RoboSapien IR remote controller implementation

看了前面兩篇
史賓機器人紅外線碼 RoboSapien IR Code

如何用電腦控制史賓
是不是對於如何用電腦控制史賓有概念了呢?
接下來繼續將紅外線遙控器的部分真正的實作出來
並且進一步達到無線控制史賓機器人

史賓機器人紅外線碼 RoboSapien IR Code這裡面提到史賓機器人的紅外線載波為39.2kHz,
以及史賓機器人的紅外線控制資料碼。
遙控器發射時是用載波和資料碼作AND,即為紅外線的輸出波形。

載波的電路可參考機器人DIY這一本書中的pp.2-22圖2.32紅外線發射電路。
要注意的是這個電路的電阻和電容配合是載波38.kHz,需調整為39.2kHz。

有了這個電路之後搭配一組可以接收RS232的訊號的電路,即可接收電腦由RS232傳出來的資料格式。
用8051來實作接收RS232的電路在很多書或是網路上都可以找的到,
或是市面上就有RS232的Chip也是可以拿來使用。
因為我們選擇了用8051來實作RS232的部分。
為了傳輸資料碼方便,我們在RS232裡面建了相對應的史賓機器人的控制資料碼表格。
在電腦端這邊只需要傳輸對應ASCII code即可。

如此的作法也讓電腦端程式的開發方便許多,
也可減少傳輸資料時可能會產生的錯誤。

未來目標為整合史賓機器人家族的所有的機器人,變成通用的遙控器。

史賓機器人二代國外已經上市了,功能更強大。
也更有趣多了,目前手邊只有史賓機器人和機械雷霸龍。
所以將先繼續整合機械雷霸龍的紅外線控制,
等到整合所有的家族系列之後,再來看如何與機器人同好們分享。


IR01.jpg

為了讓史賓機器人可以達到真正的無線控制,
所以下一篇將繼續來談加入藍芽模組。
使用藍芽模組的好處是,現在很多的筆記型電腦都有藍芽模組了,
之前有些網友提到,RS232接頭在筆電不出現的機率已經越來越大了。
所以希望是否有改成USB介面的方式。
現在使用藍芽模組之後,不但可以解決沒有RS232接頭的問題,
也可以真正省卻一條線,進而達到無線控制。
對於沒有藍芽模組的電腦或筆電,可以加上一個大小如隨身碟的USB藍芽模組。

透過藍芽的傳輸,甚至可以使用手機或是PDA的藍芽裝置來控制史賓機器人。
to be continue...

由 tabo 發表於 06:46 PM | 迴響 (8) | 引用

October 27, 2005

Dancing Sapien 與史賓共舞

有了可以從電腦控制史賓機器人的紅外線發射器之後
接下來我們要如何讓史賓活起來呢?
很多的機器人展示場合裡都可以看到機器人在跳舞
但是為了讓機器人跳舞,
都必須將機器人的跳舞動作一一編排,
想要看看史賓機器人如何能即時的將你跳舞的動作學起來嗎?
或是史賓機器人能根據你的動作而做出互動來
想看史賓跟你一起跳跳舞機嗎?

Dancing Sapien 示意圖
dancing_sapien02.jpg


使用攝影機擷取人體的動作的影像
使用影像處理(Image Processing)的技術處理所擷取的影像
相較於其他的影像擷取人體動作的方法,
我們的方法不使用藍幕等特殊環境,可在一般的環境下使用
而且使用者不需配戴任何穿戴式的設備

將處理過的影像擷取特徵點,
並設計一模糊系統來分析辨識人體動作


Dancing Sapien 流程圖
dancing_sapien03.jpg

此系統只需要一個平常用的視迅攝影機就可以囉!
達到低價的目的,
根據這樣的系統除了教史賓跳舞之外,還可以做什麼呢?
歡迎大家一起來分享一下

由 tabo 發表於 12:40 PM | 迴響 (0)

October 13, 2005

史賓機器人紅外線碼 RoboSapien IR Code

看過前面介紹的直接對原始的遙控器作修改,
讓我們可以達到使用電腦來控制史賓機器人的目的。
但是有沒有辦法自己來實作一個紅外線遙控器來直接發射呢?
以下這份文件詳細記載了史賓機器人遙控器的紅外線資料格式、載波、編碼格式
參照此份文件就可以實作出紅外線控制器啦!
因為有了這一份文件讓我們實作的過程難度降低了許多
我們也實際使用示波器量測過訊號...
是和這份文件是相符的
這份文件說的蠻詳細的...
有興趣的人可以照著他的描述試著自己實作看看囉!

下圖為紅外線收發感測器,電子材料行都購買的到

ledr-1.jpg

文件出處:
http://robosapien.tk/

The IR Carrier is 39.2kHz. Data is modulated using a space coded signal with 8 data bits (data clock is 1200Hz, but actual data rate varies depending on the data).

You can skip the IR and IR modulation by wiring directly into the main PCBoard. This can be encoded easily by almost any small microprocessor. For modulating the signals yourself, the signal looks something like this:
Timing based on 1/1200 second clock (~.833ms)
Signal is normally high (idle, no IR).
Start: signal goes low for 8/1200 sec.
Data bits: for each of 8 data bits, space encoded signal depending on bit value
Sends the most significant data bit first
If the data bit is 0: signal goes high for 1/1200 sec, and low for 1/1200 sec.
If the data bit is 1: signal goes high for 4/1200 sec, and low for 1/1200 sec.
BTW: The first bit (msb) is always 1 (valid codes are from $80 to $FF)
When completed, signal goes high again.
No explicit stop bit. Minimal between signals is not known.

Movement Commands (no shift)
$80 - turn right (on left side of remote)
$81 - right arm up (upper left button on remote)
$82 - right arm out
$83 - tilt body right
$84 - right arm down
$85 - right arm in
$86 - walk forward
$87 - walk backward
$88 - turn left (on right side of remote)
$89 - left arm up (upper right button on remote)
$8A - left arm out
$8B - tilt body left
$8C - left arm down
$8D - left arm in
$8E - stop
Programming Commands (no shift)
$90 - P (Master Command Program)
$91 - P>> (Program Play, the one on the bottom)
$92 - R>> (Right sensor program)
$93 - L>> (Left sensor program)
$94 - S>> (Sonic sensor program)


GREEN shift commands
$A0 - right turn step
$A1 - right hand thump
$A2 - right hand throw
$A3 - sleep
$A4 - right hand pickup
$A5 - lean backward
$A6 - forward step
$A7 - backward step
$A8 - left turn step
$A9 - left hand thump
$AA - left hand throw
$AB - listen
$AC - left hand pickup
$AD - lean forward
$AE - reset

$B0 - Execute (master command program execute)
$B1 - Wakeup
$B2 - Right (right sensor program execute)
$B3 - Left (left sensor program execute)
$B4 - Sonic (sonic sensor program execute)

ORANGE shift commands
$C0 - right hand strike 3
$C1 - right hand sweep
$C2 - burp
$C3 - right hand strike 2
$C4 - high 5
$C5 - right hand strike 1
$C6 - bulldozer
$C7 - oops (fart)
$C8 - left hand strike 3
$C9 - left hand sweep
$CA - whistle
$CB - left hand strike 2
$CC - talkback
$CD - left hand strike 1
$CE - roar

$D0 - All Demo
$D1 - Power Off (drop snow-globe and say "Rosebud")
$D2 - Demo 1 (Karate skits)
$D3 - Demo 2 (Rude skits)
$D4 - Dance

NOTES:
add $08 to go from right-side commands to left-side commands.
add $20 to command bytes for the GREEN shift (ie. $Ax and $Bx range)
add $40 to command bytes for the ORANGE shift (ie. $Cx and $Dx range)

--------------------------------------------------------------------------------

SECRET UNDOCUMENTED CODES

Several different launch codes (Executing the main program)

$B0 - standard "EXECUTE" on remote
Robot says "uh-huh" before starting Main program
No subroutines called [Execute sensor commands (Green Shift) cause error sounds to be played instead of what they should do -- bug or feature you decide]

$97 - appears to be same as $B0

$98 - Quiet execute main program
Robot does not say "uh-huh"
No subroutines called

$9A - Quiet execute main program with subroutines !!
Robot does not say "uh-huh"
Subroutines are called (as documented in the manual). This is the one to use.
Execute feature appears to be same as $91 (regular remote Program Play). $91 button also does other things like end the current recording. $9A code doesn't.

Useful? secret codes

$F6 - feet shuffle
$FB - nothing (useful as NO-OP)
$FC - raise arm throw
$D6 - karate chop


WORK IN PROGRESS, not useful [or at least no significant difference detected]
$95,$96 - Program main again (like $90)
$99 - like $98
$9B - like $90 ?
$9C - do nothing
$9D,9E,9F - like $90 ?
$B5 - like $97 ?
$B6 - like $90 ?
others - looks like these repeat as well (eg: record/execute one of the program areas) or do nothing

$E0 - $EE (looks like the $A0 range)
$EF - nothing
$F0 - like $97
$F1 - like $98
$F2 - Execute right program
$F3 - Execute left program
$F4 - Execute sonic program
$F5 - like $F0/97 ?
$F7 - like $F0/97 ?
$F8,F9,FA - like $F1/98 ?
$FD,FE,FF - program main again (like $90)

由 tabo 發表於 03:13 PM | 迴響 (1)

October 11, 2005

如何用電腦控制史賓

史賓算是市面上一個頗為成功的機器人產品
First,史賓並不會太貴
對很多人而言,他是一個很不錯的改造平台。
於是我們便動起了改造的念頭
國外已經有許多的改造都可以在網路上可看到,
但是台灣這方面並不多...SO...
好囉!我們來建立中文版的史賓改造資訊吧!

sapien_cilab.jpg

史賓改造計畫第一步就是要能從電腦控制史賓

國外有許多改造史賓RobotSapien的網站
這裡先提供一資料還算完整的網站
http://robosapien.tk/
這個網站提供了改造史賓的許多基本資料
裡面也有不少國外玩家改造的網站連結喔!

其實國外已經有人開發出程式及套件。
程式是可以供大家下載的,但是硬體就必須自行購置。
OpenSource的程式
Project: Robosapien Dance Machine

硬體:
USB-UIRT
UIRT.jpg


不過這個硬體要從國外購買,所以我們就興起自己來作一個的念頭囉!
一開始受到很大的挫折,但是我們又必須在短時間將史賓控制器實作出來
(原因是我們要參加展覽和比賽)
所以我們想了一個折衷的辦法,就是直接對原始的遙控器下手...
雖然是這麼想...但是我們還是搞壞了一個遙控器,
本來是想跟台灣的代理商博寶行購買一個新的
沒想到他們直接寄了一個新的遙控器給我們,真是太感激囉!
廢話不多說來看看史賓改造第一版吧

基本上的想法是希望能經由RS232發出控制信號,
達到進一步控制史賓的功能
所以要設計的電路部分包含兩個部分
一個是接收來自電腦端的RS232的訊號,這一段的電路比較沒有問題。
另一個部分是發射紅外線的控制訊號。
由於史賓的紅外線訊號跟市面上常用的3.8kHz的不大一樣
再加上初期我們對紅外線控制的不瞭解
所以我們在嘗試了一些方法之後,改採使用原始遙控氣得發射電路,
而不是自行設計發射電路。

於是第二部分的電路就變成是要代替用手按遙控器按鈕的這個動作。
作法就是在原本的遙控器上拉出線來,
當我們要控制某一個按鈕時我們就讓他導通。
藉此來達到按鈕並發射紅外線訊號。

軟體的部分...
任何程式語言皆可以。
只要能對RS232送出訊號即可。

下圖為實際成品圖。

IRcontroler1.jpg

實際的成本大概是不到兩百吧!
不過這個作法只能說是過渡期的作法。
因為史賓一,史賓二,機械雷霸龍,Robopet等都跟著要上市了
而且這是屬於破壞性的改造...
雖然可以完全達到控制史賓的效果。

接下來的才是重點...
因為要是只是把史賓的控制改成由電腦,那跟用遙控器我看不出來有什麼差異
所以接下來電腦端要成為的就是史賓的大腦囉!

to be continue....

版權所有:
計算式智慧暨人機互動實驗室 Computational Intelligence and Human-Computer Interaction Lab.

機器人大寶

由 tabo 發表於 04:28 PM | 迴響 (3) | 引用

June 01, 2005

史賓恐龍 Roboraptor

第二代史賓的寵物,本來預計是九月上市
不過有目擊者聽說已經在SOGO看到了
有在預售...

看來褲袋要勒緊一點囉!3980...嗚嗚!
準備敗家!
今天下了Knodo的訂單
接下來要來買史賓恐龍
哇哈哈!
好多機器人要玩喔!哈哈...
但是恐龍可以拿來幹嘛啊!
不管啦!
先衝了再說...

121222_2.jpg

由 tabo 發表於 02:00 AM | 迴響 (5)

April 14, 2005

My Sapien

This is SapienRobot.

I'm trying to control the Sapien by ARM. First, I will design a IR controller to replace the original IR remote controller.
If there's anyone who have any idea about hack the SapienRobot, please be free to discuss with me.


sapien.JPG

由 tabo 發表於 02:47 PM | 迴響 (0)