android...
TRANSCRIPT
Android端末によるヒト型ロボットの歩行制御
Walking motion control of humanoid robot using Android
杉本大樹,小枝正直 (大阪電通大)
Daiki SUGIMOTO, Osaka Electro-Communication UniversityMasanao KOEDA, Osaka Electro-Communication University
In this study, we developed Android-based controller for humanoid robot. In conventionalhobby robots, a specialized controller with low-performance microcomputer was mounted, so itis not suitable for high-load computation, such as image processing or real time gait generation.Then, we attempt to replace it with a Android terminal. Android terminal are easily obtainable,lower cost, highly performance, and quick release cycle. We conducted some experiments towalk on a slope using an acceleration sensor on Android terminal by solving real time inversekinematics for leg motion.
Key Words: Robot, Android, Smartphone, USB Host API
1 はじめに
ホビー用のヒト型ロボットで使用されている制御用マイコン
は処理能力が高くない. マイコン自体がロボットのサーボモータを駆動させることに特化しており,あらかじめユーザーが作成
したロボットの動きを記憶する等といった単純な処理しか行えな
い.また,マイコンの内部プログラムなどは一切公開されてい
ないことの方が多く,ユーザーは自由にプログラミングを行うこ
とが困難である.Android 端末は内部で高性能な部品が使われているにもかかわらず,大量生産品のため比較的安価な価格で販売
されている.これは高性能で高価なマイコンを使用するよりも,
Android 端末を使用した方がコストパフォーマンスに優れていると言えるだろう.本研究では従来のマイコンを取り除き,代わ
りに Android 端末をロボットに搭載し制御を行うことで処理能力の向上をさせることを目的とする.
2 Anroid端末と他のマイコンの比較
Android 端末は近年著しい発展を遂げている.米国分析調査会社 Strategy Analytics の調査によると OS 別世界シェアではAndroidが 83.6%を占めていると公表している.これを鑑みると世界で最も普及しているのは Android 端末と言えるだろう.Android端末は大量生産品なので比較的高性能な物が多く使われているにも拘らず安価で販売されている.そして,Androidは開発環境が充実しており開発がしやすいので一般ユーザーでも簡単
に Androidアプリケーションを作成することができる.その他にも Android 端末には標準機能として高画質カメラ,加速度センサ,ジャイロセンサ,WiFi,Bluetooth等多岐にわたる機能が付いている.外部機器等とは USBポートを使うことで簡単に接続ができる.しかしながら,他のサーボモータ制御ボードはセン
サ類を標準で備えていない場合が多い.以上の点を踏まえた上で
他のマイコン等と比較してみる.Table.1は Android端末と他のサーボモータ制御ボードを比較した表である.
3 システムの構造
3.1 全体像
Android 端末に逆運動学を解かせ,その計算結果をサーボモータ用のデータに変換し角度値を送信している.サーボモータへ変
換したデータを送信する際に USB シリアル変換アダプタを用いているがこれは送信データを中継しているだけである.Android端末から外部機器へシリアル通信を行うために FTDriver[1]を使用した.これによりヒト型ロボットの脚部を協調的に駆動させ歩
行制御を行っている.
Fig.1 System Image
3.2 使用したAndroid端末
本研究で使用した Android端末はサムスン電子によって開発された docomo NEXT series GALAXY NEXUS SC-04Dである.世界モデル「GALAXY NEXUS」GT-I9250の日本モデルとなる.docomo NEXT seriesのひとつ.製品番号は SGH-N044.GALAXY NEXUS SC-04D は,グローバル版 (GT-I9250) とバックカバーが異なる.また,グローバル版は Android 4.3までアップデートが行われたが,SC-04Dはアップデートが行われず,Android 4.2 のままである (Verizon/Sprint 版も同じく).SIMロック解除は,ドコモ公式で有償にて受け付けている.一方非公
式では FuckDocomoというアプリで可能となっている.IMEIの書き換えによって,永久的に SIMロックを解除する機能も備える.GALAXY NEXUS SC-04Dで USB Host APIを使う場合は SIMロックを解除しなければならない.
Table 2 GALAXY NEXUS SC-04DOS Android4.0
ROM 16GBRAM 1GB
CPUコア数 デュアルコア
重さ 72gサイズ 35.6mm x 50.6mm x 35.5mm
Bluetooth Bluetooth 3.0 + EDRメインカメラ画素数 510 万画素
Table 1 Specification Comparison製品名 OS I/O 開発言語 RAM ROM カメラ センサ Wi-Fi CPU
Raspberry Pi LinuxUSBHDMI C,C++
256MB512MB SDcard × × ×
ARM1176JZF-S
Arduino ×USBPWM Arduino
32KB512KB 1,4KB × × × ATmega
BeagleBoard Linux USB C,C++128MB512MB 2GB × × ×
ARMCortex-A8
VS-RC003 ×USBPWM C 64KB 512KB × × × LPC2148FBD64
KCB-4WL LinuxUSBSerial C 64MB 64MB × × × ARM9 400M
Android Android USB java1GB3GB
16GB64GB ○
加速度
ジャイロ ○ Krait 400
3.3 逆運動学による歩行制御
本研究ではロボット脚部を空間 5自由度マニュピレータと仮定する.ただし,今回は考えやすくするために一旦 Fig.2と Fig.3の軸関係を基に x,y 平面における 3自由度マニピュレータと y,z 平面における 2 自由度マニピュレータに分離して考える.第一関節の回転角を θ1,第二関節の回転角を θ2,第三関節の回転角を θ3,腰から膝,膝から足首の長さを aと定義する.原点から目標座標 (x,y,z) までの直線距離を Lと定義する.ただし,前提条件として足裏は地面と常に平行であると仮定する.Fig.2,Fig.3より
L =√
x2 + y2 + z2 (1)
α = cos−1(L
2a
)(2)
δ = sin−1(x
L
)(3)
β = sin−1(L
2a
)(4)
が求まる.式 (1),(2),(3),(4)を使って θ1,θ2,θ3 を表すと
θ1 = α+ δ (5)
θ2 = 2β (6)
θ3 = α− δ (7)
となる.次に,y,z 平面におけるロール軸の 2 自由度マニピュレータを考える.腰ロール軸の回転角を θ4,足首ロール軸の回転角を θ5 と定義する.Fig.3より
γ = tan−1(y
z
)(8)
が求まる.式 (8)を利用すると θ4 は
θ4 = γ (9)
となり,前提条件として足裏は地面に対して常に平行であるので
θ5 は
θ5 = θ4 (10)
となる.
Fig.2 axis of x and y plane
Fig.3 axis of y and z plane
3.4 足先位置の軌跡
ヒト型ロボットが歩行する際の足先位置が通る軌跡を関数 y =sinxを基準にし,その軌跡を推定した.ただし,歩幅を x
′,脚
の上げる高さを y′,足先位置が通る点の数を p,通る点の順番を
iとする.Fig.5より,i回目に足先が通る座標 (x, y)は
x = i ∗ x′
p(11)
y =
(y′∗ sin
(i ∗ π
p
))∗ sin
(i ∗ π
p
)(12)
と求めることができる.
3.5 加速度センサによる傾き検知
Android 端末には標準で加速度センサ,ジャイロセンサ等の機能が備わっている.今回は加速度センサのみを利用し簡易的な
Fig.4 Relationship of each axis
Fig.5 Trajectory of feet position
傾きの検知を行う。加速度センサを水平に配置した時の値を基準
として考える.本実験中では加速度センサが水平時に表す値を
X = 0,Y = 0,Z = 10と定める.これにより,Fig.6におけるAndroid端末にかかる重力加速度 gは Z = 10と等しくなるので
g = Z = 10 (13)
が成り立つ.
次に,加速度センサがある方向に傾いた時の角度 θ1 を求める.θ1 は Fig.6の関係より
θ1 = cos
(Z
g
)(14)
と求めることができる.
Fig.6 Axis representing acceleration
Fig.7 Axis representing acceleration
4 実験
4.1 平地歩行
Android 端末でヒト型ホビーロボットを制御する第一歩として,自作ロボットの腕部のみを逆運動学を用いて脚の目標位置を
計算し前進歩行を行うものとする.具体的には,Android端末で逆運動学の計算を行い,計算で出た値を USBシリアル変換アダプタ経由でサーボモータに送信する.サーボモータが受信した値
を読み取り逆運動学で計算した各軸の角度を基に平地歩行を行っ
た.このとき,Android端末に入力する値は足先の座標値 x,y,z である.
4.2 斜面歩行
Android 端末には標準で加速度センサ,ジャイロセンサ等の機能が備わっている.この実験では加速度センサを用いて傾斜面
での姿勢補正を行い姿勢を保てるか検証する.姿勢の取り方は人
間が坂道を歩く時を基準に考える。また,逆運動学の計算による
歩行制御と加速度センサを用いての姿勢制御が同時に行えてい
るか検証した.このとき,斜面は 15 度と仮定している.また,Android端末に入力する値は足先の座標値 x,y,z である.
4.3 実験結果
Android 側で逆運動学の計算を行い,計算で出た値をサーボモータに送信することができた.今回,逆運動学を用いてヒト型
ロボットをを平地歩行させたが,遅延等の問題は確認されなかっ
た.これにより,Android端末でも他のサーボモータ制御ボードと同様に,サーボモータにデータを送り駆動させることが十分で
きると確認ができた.また,従来のヒト型ロボット制御ボードで
は出来なかった逆運動学の計算といった高度な処理とAndroid端末に標準で備わっている加速度センサを用いた姿勢制御を同時に
行うことができた.同時に二つの処理を行った場合でも,データ
送信の遅延は見られなかった.
5 まとめ
本研究では,初めに Android端末とサーボモータ間の通信方法に USB Host API を用いた.AndroidAndroid 端末と USBHost API による外部ディバイスとの通信の確立と,Android端末で逆運動学の計算を行い,算出した値を USB シリアル変換アダプタ経由でサーボモータに送信し各軸を協調的に駆動させた歩
行制御を行った。次に歩行制御と同時にAndroid端末に標準で備わっている加速度センサを用いた姿勢制御を行った.これにより,
Android端末で歩行制御を行い,同時に姿勢制御をすることができた.これらの研究成果により,Android端末を搭載したヒト型ロボットシステムの基礎は確立できたと言える.今後は加速度セ
ンサ以外のセンサを利用するなど更なる利便性の向上を目指す.
References[1] FTDrvier http://ksksue.com/wiki/doku.php?id=wiki: an-
droid:hardware:usb:ftdriver
Fig.8 Walking in the slope
Fig.9 Walking in the slope