| |
|
|
|
|
|
タカラトミー「Omnibot 17μ i-SOBOT」分解・解析レポート
|
|
|
Reported by
石井孝佳
|
|
|
|
|
|
|
10月24日に発売されたタカラトミーの「Omnibot 17μ i-SOBOT」。17もの自由度を持ちながら、従来では考えられなかった低価格を実現したロボットトイだが、その構造に興味を持っている方も多いだろう。今回は、約1日という短い時間だったが、i-SOBOTを実際に分解し、可能な限り解析を試みた。写真を中心に、その模様を見ていこう。
■■ 注意 ■■
・分解/改造を行なった場合、メーカーの保証は受けられなくなります。 ・この記事を読んで行なった行為(分解など)によって、生じた損害はRobot Watch編集部および、メーカー、購入したショップもその責を負いません。
・内部構造などに関する記述は編集部が使用した個体に関してのものであり、すべての製品について共通であるとは限りません
・Robot Watch編集部では、この記事についての個別のご質問・お問い合わせにお答えすることはできません。
|
● 電源
まずは電源から見ていこう。
|
|
本体はエネループ単四×3本直列。エネループはNiMH(ニッケル水素)の充電池で、1.2V。単四タイプは750mAh。NiMHは満充電で1.4~1.6Vぐらいまで上がり、終止電圧は0.9V~1Vぐらい。3本直列だと公称3.6Vだが、満充電で4.2V~4.8V、バッテリ切れの状態で2.7V~3Vになる(※後の実験で、3本直列で3.6V付近がi-SOBOTの動作限界であることがわかった)
|
コントローラ側は単三乾電池×3本直列(今回はエネループを使用)。コントローラの方が電力を使わないので大きな電池である必要は無いが、単純に基板が大きい(操作上の問題)ので、大きなタイプにしているのだと思われる。容量が大きい方が充電する回数が少なくて済むというメリットもある
|
● サーボ
|
|
サーボを取り外してみたのがこの写真。出力軸は金属製。分解は、1.5mmの六角レンチで行なった。添付のものは短い方が使えない(力を入れられる方が使えない)ので1.5mmのL型レンチを買ってきた方が良いだろう。電子回路の電源は3Vもしくは3.3V系であると推測できる。実際には後ほど測定する
|
出力軸の受け側はこのようにしずく形のプラパーツになっており、圧入する。ギア(RCサーボで言うところのセレーション)などは特にきっていないようだ
|
|
|
反対軸はこのようになっている
|
サーボケースはRCサーボのように3段になっており、下ケースにピンが2つ圧入されている。今回はラジオペンチでこれを抜き取ってみた。出力軸に近い方のピンはケースを少し削らないとラジペンで挟めない。かなりキツく圧入されている
|
|
|
下ケースを取ったところ。線が4つ出ている。これは後ほど解析してみる
|
上ケースを外したところ。RCサーボと同じような構造だが、モータが逆に付いており、無駄な空間ができないような工夫がされている。目視では一枚プラギアが見える(後で2枚プラギアがあるのがわかった)。出力軸のケースの中にはポテンショらしきものが見える。また、真ん中のギアの上下の間に謎の部品が見える(これがクラッチか?)
|
|
上ケースの出力軸の受け部は金属パーツになっている。全体的に、ケースもギアも、小型サーボのわりには厚めに作られており、精度も良いようでガタつきはサーボ間のバラツキは見られない(中国産などの安価なRCサーボと比べた場合の話)
|
● サーボの線
サーボの線は、ツクモロボット王国で売られている高屈曲ワイヤーに似ているが、線数は少ないようだ。
エナメル線なので、皮をむいただけではハンダがのらない。筆者が実験で行なった手順は、
1) 0.3mmのワイヤストリッパで皮をむく
2) ハンダゴテで芯材を熔かす
3) 番目の細かいサンドペーパ(600~1,000番ぐらい)でエナメルを軽く削る(下の写真)
4) ハンダを付ける。一カ所付いたらコテを左右に動かして熔けたエナメルを上手くズラす。
という感じで結線をした。結構細かい作業なので、これをやりたくない場合は、i-SOBOTを全部分解して、基板にハンダ付けされている部分を外した方がよいかもしれない。筆者も途中で切ってしまったことを少し後悔。
|
|
サンドペーパーでエナメルを軽く削っていく
|
エナメルを上手く取り除くとハンダ付けすることがでる
|
● サーボの信号波形をオシロで測定
サーボの線を次のように呼ぶことにする。
R:赤線
G:緑線
B:青線
O:オレンジ線
● R線の波形
|
電源投入直後のRの波形。チャタリングの後、3.6~3.7V付近まで上がり、その後一定となった。立ち上がった後の雑音も多いので、レギュレータを通していないバッテリ直の感じ。(1マス1V)
|
|
サーボ動作中の波形。他のサーボも含めて、サーボが大きく(多く)動いた時に波形が乱れるのが激しくなる
|
この実験の後、すぐにバッテリ切れになった。よってこのあたりの電圧が最低動作電圧と予測できる。サーボ非動作時で3.6V以上なのでまだまだいけそうな気配だが、サーボを駆動すると上の波形のように3Vを割る場合がある。サーボ動作中に瞬停して基板がリセットするような動作もしていた。ということで、エネループの性能の限界までは使い切ることはできないようだ。
ということで、Rはバッテリ直接、つまりモータへの電源ではないかと推測できる。
● O線の波形
|
電源投入直後のOの波形。きれいな単調増加を示し、レギュレータの出力の立ち上がりに似ている。電圧は3.3V付近で一定
|
|
サーボ動作中のOの波形。サーボの動きに引っ張られることなく、3.3Vを一定に保っている
|
ということで、Oは電圧レギュレータICを経由した電源、つまりサーボ基板への電源ではないかと推測できる。
● B線の波形
Bはずっと0Vのまま。よってBはGNDと推測できる。
● G線の波形
|
電源投入直後のGの波形。非同期シリアル通信の波形に似ている
|
|
左ヒジの待機時(脱力)時の波形。一定の間隔で同じ波形が出ている。動作時は波形が細かく変わる
|
ということで、Gはサーボへの信号線ではないかと推測した。以後、G線を中心に解析してみる。
● G線の解析
とりあえず、ここでは非同期シリアル通信であると仮定して検証していく。
|
一番短い間隔のパルスの波形がこのようになる。HIGHの時間が約420μS(1マス200μS)と読める。
420μS=0.00042S
1/0.00042=約2,381Hz
の周期となる。つまり、一秒間に約2,381bitを通信している。ということで、2,400bpsの非同期シリアル通信と仮定する
|
|
左ヒジの待機時(脱力)時の波形を少し拡大したのがこの波形。見ていくと、途中が周期的に2,400bpsの幅でHIGHになっているのがわかる。非同期シリアル通信でよくある設定が「スタートビット=0、ストップビット=1」なので、この定期的に必ずHIGHになる部分をストップビットと仮定し、そこから逆算した部分が下記の画面の注釈だ。
ピンクの部分は「LSBファースト」の論理であった場合の16進数の値。1バイト目……と書いてあるが、この時点では0xFFが先頭なのかどうかはまだわからない。0x05や0x85の可能性もある。但し、どうやら8バイト周期で同じデータが送信されるので、1パケットが8バイトの通信であることが推測される(後で、8バイトパケットではないものも発見された)
|
|
別のサーボの波形も見てみよう。下は左肩ロール軸の波形で、上のヒジの時と同じく待機時のもの。これを見ると、まったく同じであることがわかる
|
動いているときも、動いていないときもデータは常に流れつづける。ということで波形を見ていてもラチがあかないので、シリアル通信モニタを作ってみた。
下は起動時からのログ。通信設定は「2400bps、ストップビット1」の設定。「パリティ」は無いとし、「フロー制御」もフロー制御線自体が無いので“無し”の設定。10進数表示なので注意していただきたい。ここに表示した範囲で、電源投入時から起動時の説明モーションが終わるかおわらないかまでの時間となる。これをみると、やはり0xFF、10進数で255が周期性があるのでこれが先頭のシンクロバイトと思われる。
一番多いパターンが [255] [5] [?] [?] [?] [?] [?] [?] のパターンだ。先にオシロで見た待機時に [?] のところに0が多いのと、上の起動時に128が多いということで、[?]のどこかは位置データであると推測できる。128は1バイト値の中間値、つまり中心位置を指しており、0はおそらく停止(脱力)を表しているのではないかと思われる。1つのポートから3つ分(後でわかったがおそらく5個分)を出しているので、各サーボには何バイト目が自分のデータかという設定がされており、8バイト全て読み込んで自分の位置のデータで制御しているのかもしれない。[5]は位置制御コマンドと推測される。
次に、最後の値だが、例えば待機時は、
(1) [255] [5] [0] [0] [0] [0] [128(0x80)] [133(0x85)]
起動時の例で
(2) [255] [5] [38] [53] [128] [128] [128] [225]
(3) [255] [5] [39] [128] [128] [128] [128] [46]
となった。簡単なところで、(1)が、先頭の[255]を除いて1~7バイト目までを足すと、
5+0+0+0+0+128=133
と、8バイト目と同じになる。(2)と(3)は
(2) 5+38+53+128+128+128=480、オーバーフローで255を引くと残り=225
(3) 5+39+128+128+128+128=556、2回オーバーフローして255x2を引くと=46
つまり最後の1バイトはチェックサムであることが推測できる。上のモニタだと、ずっと見ていると気持ち悪くなってくるので表示を変えてみる。
[255]で改行したのが次の画面。
もう一発とって見た。
[255] [53] [16] [16] [?] [?] [?] [165] ...
というパターンも見受けられる。2回起動したところをとったが、数値が微妙に違うので起動時に何かの値(ジャイロ?)を測定してバイアスをかけているのかもしれない。
次は、起動後、腕が脱力するところ。値に0が出始めるときから脱力(高周波音が消える)したので、やはり値0が脱力と思われる。
次に、脱力>P1動作時を見ていく。まず、脱力状態から先の起動後ポーズの値に変化する。その後、[5]の後の3バイトの数値が変わる。このモニタは左腕の信号だが、P1では左腕全部が動くので、おそらく[5]の後3バイトが腕のサーボ3つに割り当てられているのではないかと推測した。
動作時間だが、P1は「ヤッ」とやっている時間は約3秒ほどだ。2,400bpsで1バイト送るのに10ビット(スタートとストップビットを含むのでデータ8ビット+2ビット)、1命令8バイトなので、
1秒間に転送できる命令数=2,400/10/8=30個
となる。下のログの後、約80行ぐらいまでの間に大きく値が変化したのが3箇所あった。P1の動作は3ポーズの組み合わせなので大体合っている。この間、[255] [5] ……以外のコマンドは発行されていない。
以上から、位置制御命令は、
[255] [5] [サーボ1の位置] [サーボ2の位置] [サーボ3の位置] [?] [?] [チェックサム]
ではないかと思われる。P1動作時にサーボ1~3の値しか変化しなかったので、左腕はサーボ1~3であると思われる。
起動後の“きをつけ”状態の値が、
サーボ1:38
サーボ2:58
サーボ3:128
となった。128はおそらく中心位置と思われるが、この状態の時に明らかに中心位置だったのはヒジサーボだった。よってサーボ3がヒジだと思われる。
では、このフォーマットを実際に左ヒジサーボに送って、動くかどうか確認してみよう。
● サーボの駆動実験
左ヒジサーボを取り出して、下のように結線した。マイコンも3.3Vで動くものを使用。3.3V電源は、エネループとは別に3.3V安定化電源を構成して接続した(GND共通)。
マイコンでは、とりあえず位置制御データであると思われるものを30回づつ送信してみた。ヒジサーボはサーボ3(5バイト目のパラメータ)であると推測しているので、まずはサーボ3の位置だけ動かすために、次のようなプログラムを作った。send( )関数は引数を1バイト送信する関数だ。
実験の結果、これだけで動作した。[5]の後の5バイトのうち先頭3つは位置データだと推測できていたが、その他もどうやら位置データのようだ。サーボ3の位置以外の数値を変えても動きに変わりはない。足は5軸なので、おそらく5バイト全てが位置データで、個々のサーボにあらかじめ自分のサーボ番号はどこかが決められているのではないかと思われる。上記の128と40の位置を変えると、この左ヒジサーボは動かなかったので「何バイト目か?」で自分のサーボへの命令かどうかを判定しているのは間違いないだろう。
動作スピードは、ギア比が高いのでRCサーボと比べるとかなり遅め。上の駆動方法が正しいかはわからないが、ここまでの内容だと速度を指示する命令が無い(と思われる)ので、上の方法が最速の駆動方法だろう。90度回転するのに体感で1秒弱かかる感じだ。スピードの面からすると、ROBO-ONEのような競技にはあまり向かないと感じられる。まあ、説明書にもバトルはしないようにと書いてあるので仕方のないところか。
一般的なマイコンは、UART(非同期シリアル通信機能)が多くても2chなので、自作マイコンボードで動かそうとした場合は、足サーボだけ集めて10軸のロボットは作れそうだ。ただし、それ以上の軸数にしようとすると、GPIO(General Purpose Input Output)を使ったシリアル通信のプログラムを自作しないとならないので、ちょっと難易度は上がりそうだ。
● サーボの駆動のまとめ
・赤線:サーボのモータ用電源(エネループ3本直)
・青線:GND
・橙線:サーボの基板用電源(3.3V)
・緑線:信号線(非同期シリアル2,400bps、ノンパリティ、ストップビット1、フロー制御なし)
・サーボ駆動以外にも、命令がある様子。(解析できず)
・8バイトパケットのサーボ駆動命令だけでサーボは動かせる。
・サーボ駆動命令のフォーマットは次の通り(だと思われる)
[255] [5] [サーボ1] [サーボ2] [サーボ3] [サーボ4] [サーボ5] [チェックサム]
※チェックサムは、8ビットの符号なし変数を用意し、桁あふれを気にせずに[5]~[サーボ5]の値を単純に合計すれば求められる。
※サーボ位置を0にすると、現在位置で脱力する。
● メインボード
次は本体を分解して、メインボードまわりを見てみよう。
|
|
背中カバーを取ったところ。5ピンのヘッダピン(2mmピッチ)が未接続のまま出ているが、おそらくJATGなどのデバックポート又はインサーキットプログラム用ポートであると思われる。CPUらしきものが2段重ねの基板上に実装されている。大きな電解コンデンサは220μF、小さい電解コンデンサは10μFで、ノイズ対策用と思われる。基板のいたるところにはRoHSの文字が入っており、ハンダのテカりも鈍いので鉛フリーの実装だろう。ヨーロッパでも売るようなので当然か
|
メインボードはピンヘッダで本体にささっているだけなので上にひっぱると抜ける。手足に対しての4ピンのポートで接続されている。頭だけはLEDが2個あるので+2線でコネクタが6ピンになっている
|
|
|
メインボードの裏側。U1と書いてあるIC付近にインダクタ、ダイオード、タンタルらしき電解コンデンサがあるのでこの辺りがスイッチング電源であると思われる。基板と直角にささっているボードにはジャイロと思われる素子がのっている。スピーカ端子近くのICはアンプだろう。こちら側にあるもう一つの大きなICは不明。こちらがCPUで、逆側に二段になっている基板の大きいICの方が音声認識ICかもしれない。センサリの音声認識ICだとすると、逆側の大きい方がそれで、こちら側がCPUだと思われる(CPUの方が小さい)。こちら側の近辺にT1~T5のテスト端子が出ているので、やはりこちら側がマイコンのような気がする
|
ジャイロ部。隣のICはLMV358で、デュアルタイプのレールtoレールオペアンプだ。ジャイロの信号を増幅しているのだろう。ジャイロは刻印されたマークから推測するに村田製作所のジャイロスターだろう。この取り付けだとピッチ方向(おじぎ/のけぞりをする回転)の回転を検出している可能性が高い
|
ブラックボックスが多いので、これ以上のことは分からない。
● サーボをさらに分解してみる
最後にサーボをとことん分解してみた。
|
|
サーボ基板の裏側。右の四角いのがポテンショ。出力軸とDカットで圧入される
|
基板を取った裏側。出力軸のDカット(右)が見える。モータのピニオン(左)が7歯なのがわかる。ピニオンギアの次の1段目は見えないようになっている
|
|
|
|
1段目ギアのカバーを外したところ
|
その一段目を取り出したところ。大きな方で34歯、小さい方で6歯
|
順番がわからなくなりそうなので記録。ピニオンを入れないで5段ギアになっている
|
|
|
|
2段目ギア。大きい方が31歯、小さい方が6歯
|
3段目ギア。大きい方が20歯、裏側の見えないところに小さいのが8歯
|
4段目ギア。大きいほうが24歯
|
|
|
4段目ギア小さい方が8歯。このギアには金属の部品が入っている。コレがクラッチか? 上の写真をあらためて見ると、外と内の材質が違うような気もする
|
5段目最終ギア。24歯
|
ということで、ギア比は、
1段目 7:34
2段目 6:31
3段目 6:20
4段目 8:24
5段目 8:24
となり、単純に計算すると約1:826、効率70%としても1:578の減速比になる。
|
|
モータを抜き出してみた。直径6mm、長さ14mm
|
さらに分解するとこうなる。筆者は専門外なのだが、コアレスモータというものか? 金属ケースの中には磁石が入っており、コイルの内側に磁石がくる構造
|
● 最後に
今回はとりあえずサーボを中心に解析してみた。読者の中にはすでにi-SOBOTを入手して、多少なりとも分解してみた方がいるかもしれない。今回レポートした内容以外にも解析ネタ満載の素材だと思うが、「トルクはいくつなのか?」「赤外線リモコンの送信パターンは?」「クラッチはどれなのか?」「音声認識はどうやってるの?」などなど、興味はつきないところだ。興味はつきないが、力が尽きてしまったようで、今回はこのあたりで一段落とさせていただきたい。
■URL
タカラトミー
http://www.takaratomy.co.jp/
i-SOBOT公式サイト
http://www.isobotrobot.com/
■ 関連記事
・ タカラトミー「Omnibot 17μ i-SOBOT」緊急レポート ~31,290円のヒューマノイドロボット、ついに発売(2007/10/27)
2007/11/08 00:28
- ページの先頭へ-
|
|
|
|
|