Robot Watch logo
記事検索
バックナンバー
【 2008/12/19 】
高橋敏也の「KHR-2HV“超”初心者入門」
-Mission11-
「最終回 さあ、ロボットと歩き出そう!」
[19:00]
【 2008/12/12 】
高橋敏也の「KHR-2HV“超”初心者入門」
-Mission10-
「オリジナルモーションを作る&Tipsみたいなもの、その2」
[18:14]
【 2008/12/08 】
高橋敏也の「KHR-2HV“超”初心者入門」
-Mission09-
「KHR-2HVをどんどん動かす&Tipsみたいなもの、その1」
[16:45]
【 2008/12/01 】
高橋敏也の「KHR-2HV“超”初心者入門」
-Mission08-
「加速度センサーの設定と、サンプルモーションの活用」
[16:02]
【 2008/11/26 】
高橋敏也の「KHR-2HV“超”初心者入門」
-Mission07-
「ジャイロセンサーで無敵の歩行をゲットしよう」
[00:02]
【 2008/11/14 】
高橋敏也の「KHR-2HV“超”初心者入門」
-Mission06-
「KHR-2HVの基本姿勢、ホームポジションを設定する」
[19:10]
【 2008/11/07 】
高橋敏也の「KHR-2HV“超”初心者入門」
-Mission05-
「KHR-2HV、怒濤の組み立て編、パート3」
[23:13]
【 2008/11/04 】
高橋敏也の「KHR-2HV“超”初心者入門」
-Mission04-
「KHR-2HV、怒濤の組み立て編、パート2」
[18:39]
【 2008/10/24 】
高橋敏也の「KHR-2HV“超”初心者入門」
-Mission03-
「KHR-2HV、怒濤の組み立て編、パート1」
[20:00]
【 2008/10/17 】
高橋敏也の「KHR-2HV“超”初心者入門」
-Mission02-
「買ったぞロボット、さあ組み立てよう! でもその前に……」
[14:27]
【 2008/10/10 】
高橋敏也の「KHR-2HV“超”初心者入門」
-Mission01-
「ホビーロボット、二足歩行ロボットとは何ぞや?」
[16:33]

高橋敏也の「KHR-2HV“超”初心者入門」
-Mission09-
「KHR-2HVをどんどん動かす&Tipsみたいなもの、その1」

Reported by 高橋敏也

 それは深夜の静けさをぶち壊す、電話の呼び出し音から始まった。我が愛すべきロボット仲間(新入り)の友人からである。極めて標準的なビジネスマンなのに、なぜ我が家には午前2時に電話をしてくるのか? 友人がいつ寝ているのか、不思議でならない今日この頃ではある。

 それはそれとして、電話の内容はというと、本連載に間違いを見つけたというものだった。開口一番、彼は言った。

 「お前さあ、バッテリの入れ方、間違えてない?」

 ブツブツ言いながら、本連載の写真をチェックして気がついた。確かに間違えている……ように見える。そう、Robot Watchスペシャルセットに含まれている、標準付属のものより一回り大きい「ROBOパワーセルHV Dタイプ」の向きがおかしい。透明なフロントカバーからうっすら見えるバッテリのセルが、立った状態になっている。通りでフロントカバーが閉じづらかったはずだ。


前回まで筆者は、このような状態で「ROBOパワーセルHV Dタイプ」をフロントカバーに格納していた。間違いである コネクタ部分を首の下のスペースに入れる。ただし無理をして突っこまないように。常にケーブルの曲がりや、コネクタの刺さり具合に注意すること

ケーブルをうまく取り回すと、このようにバッテリを正しいポジションで置くことが出来る これが正しいバッテリの格納状態。フロントカバーの形状と、ピッタリ合って収まりがいい

ボディピンのカーブしている部分を、ちょっと引き起こすように曲げると、脱着が容易になる。ということはフロントカバーの脱着を、スムーズに行なえるということだ
 正しく収納、すなわちバッテリのセルを横にすれば、バッテリの形状とフロントカバーはピッタリ合うようになっている。ちなみに、バッテリとコントロールボードを接続するコネクタは、KHR-2HVの首下に収納するといいようだ。しかしまあ、我が友人もよく見つけたものである。感謝していいやら、午前2時の電話は勘弁して欲しいやら。そんな友人にはお礼も兼ねて、フロントカバーを固定するボディピンに関するTipsを送ろう。

 フロントカバーは3本のボディピンで固定されているが、そのままだと取り付けづらく抜きにくい。そこでちょうどカーブしているところを、少し起こすような形で曲げるのである。ボディピンはかなり固いワイヤーなので、ペンチを2つ使って曲げるといいだろう。別に大きく曲げる必要はない。曲げることでボディピンを掴みやすくなり、脱着が容易になるのである。

 実はこれ、筆者が思いついたものではなく、あるホビーロボットのプロに教えてもらったのである。このように主要な機能と関係無い部分を、自分のアイデアで使いやすく改造するのも楽しいと思う。ただし、コントロールボードやサーボモーターなど主要な部分に手を出すときは慎重に。「やったはいいけどダメでした、元に戻りません」というのは、絶対に避けたい。「やったはいいけどダメでした、元に戻します」というレベルから、手をつけて行くべきだろう。


サンプルモーションをどんどん使って、KHR-2HVと遊ぶ

 前回、サッカー用モーションをKHR-2HVに書き込み、活用できるようになった。これでKHR-2HVは自由に動かせるようになったと思うが、やはりサッカー用モーションである。二足歩行ロボットのサッカー競技に参加する準備も、これで出来上がったと言っていいだろう。だが、しばし待たれよ。競技会に参加するためには、もう少しモーションを追加しなくてはならないはずだ。

 まず競技、すなわち試合が始まる前には礼をするのが基本である。そこで「お辞儀」モーションを組み込んでおこう。これは近藤科学のサイトからダウンロードできる「KHR-2HV SP1」の「For RadioControl」フォルダに含まれる、「2HV011RC_お辞儀」を使用する。

 また、自分のチーム、あるいは自分のKHR-2HVがゴールを決めたら、素直に「よろこぶ」のが正しい競技者の姿だ。このモーションもやはり「KHR-2HV SP1」の「For RadioControl」に含まれる「2HV022RC_よろこぶ」モーションを使用する。一方、相手にゴールを決められたりしたら逆に、同じフォルダの「2HV023RC_ざんねん」を使おう。


「お辞儀」「よろこぶ」「ざんねん」などは、KHR-2HVの設定が多少変更されていても、共通して利用できる。すぐに楽しめるので、ぜひ使ってみて欲しい データテーブル上で任意のモーションをダブルクリックしても、データダイアログを表示することができる。ここでコントロール入力の値を変更することもできる

【動画】試合前、試合後の礼は基本である。さらにこのモーション、二足歩行ロボットに詳しくない人に見せると、意外なほどうける 【動画】自分のチーム、あるいは自分がゴールを決めたら「よろこぶ」。競技の基本である

【動画】逆にゴールを決められたら、多少オーバー気味でも「ざんねん」を表現するのが修造的でよろしい

 なお、サンプルモーションを使用する際には、必ずコントロール入力の重複を確認しよう。コントロール入力、すなわち無線コントローラーの、どのボタンが押されたらそのモーションが実行されるかを確認する。これはデータテーブルのウィンドウで確認するのが一番手っ取り早い。もし重複があるようなら、どちらか一方の数値を変更する。サンプルモーションは積極的に組み込み、試してみよう。


「全身脱力」モーションを作ってみる

 既存のモーションデータをKHR-2HVに書き込み、自由に使えるようになれば、もう怖いものはない。あなたは二足歩行ロボットの立派なオーナーであり、KHR-2HVはあなたのパートナーとなった。だが「KHR-2HVを自由自在に使いこなせる」というのには、まだまだ長い道のりが待っている。例えばオリジナルモーションの作成だ。メーカーから提供されているモーションは、素晴らしい出来だが、それは誰でも入手して利用できるものである。自分自身の思い通りの、個性が光るロボットの動きは、やはりオリジナルでなくては実現できない。

 そんなオリジナルモーション作成の基礎は、次回詳しく紹介する。今回はその前哨戦として、オリジナルモーション作成の入り口を覗いてみよう。まあ、モーションというよりは、実際に「役立つことがあるかも知れない機能」をオリジナルで作成、KHR-2HVに書き込んでみようというのである。名付けて「全身脱力」モーション、具体的に言うと緊急時の動作停止機能である。

 例えばKHR-2HVを無線コントロールで歩かせていて、転んだ拍子に何かとからんでしまった。あるいはタイミング悪く動作中のロボットに手を出してしまい、指などを挟んでしまった(ほかの人がそうなる可能性もある)。そんな時にボタン1つで、KHR-2HVの動作を止めてしまい、全身の力を抜いてしまう。KHR-2HVはぐったりした状態になるが、それ以上のトラブルは発生しない。

 ロボット競技、特に格闘技大会などでは、この機能が役立つ時がある。2体以上のロボットが混戦状態となり、ロボット同士が絡み合ってしまった。場合によっては無理な力がサーボモーターにかかってしまい、自分や相手のロボットが破損してしまうことも決して珍しくない。

 考えてみて欲しい。コントロールボードからサーボモーターに送られる「ある角度まで回転するように」は、センサーと組み合わせるか、機能を停止させるまで有効なのだ。もし何か障害物があってそれ以上動けないとしても、それ以上力を加え続けると自分が壊れてしまう状況でも、サーボモーターは回転しようとするのだ。もちろんそんな時は、急いでロボットの電源を切るが、無線コントローラーのボタン1つで機能停止、脱力するようにしておけば便利……かも知れない(全てのシーンで役立つ訳ではないが)。

 ということでさっそくPCとKHR-2HVを接続し、PC上でHeart To Heart3を起動する。COMポートの設定とシンクロスイッチのチェックを確認したら、まずポジション配置ボタン(POS)をクリックする。そのままカーソルをデータシート上に移動し、どこでもいいのでクリックする。すると「POS1」というオブジェクト(データシート上のボタンのようなものは“オブジェクト”と呼ぶ)が配置される。


KHR-2HVとPCを接続して、Heart To Heart3を起動する。そして「POS」ボタンをクリックする 何も無いデータシート上でクリックすると、「POS1」というオブジェクトが配置される

 ちなみにデータシート上にポジションオブジェクトを配置し、それぞれのポジション、すなわちKHR-2HVの姿勢を設定、ポジションを順番に繋げて行くことで「モーション」となる。Heart To Heart3はKHR-2HVを設定、コントロールするだけでなく、モーションを作成するツールだということをお忘れ無く。

 さて、データシート上にポツンと配置したポジションオブジェクトをダブルクリックすると、POSウィンドウ(ポジションウィンドウ)が開く。ここで個々のチャンネル、すなわちサーボモーターに値を設定すると、KHR-2HVかそれに応じてある姿勢となる。だがここでは、個々のサーボモーターを「FREE」の状態にする。各チャンネル上で右ボタンメニューを表示し、メニューから「FREE」を選ぶ。するとシンクロスイッチがチェックされていれば、「FREE」を設定したサーボモーターから保持しようとする力が抜けることが分かる。文字通り、指定したサーボモーターが「フリー」になったのだ。フリーとなったサーボモーターは、手で動かすことができるようになる(ギアを保護するため、緊急時以外は急激に動かさないよう注意)。


「POS1」をダブルクリックすると、ポジションウィンドウが開く。以前設定した通りのチャンネル配置になっているはずだ 任意のチャンネル、ここでは「CH1」上にカーソルを移動、右ボタンを押すとメニューが表示される。ここから「FREE」を実行する

「CH1」がフリーになった状態。「FREE」というのは文字通り、サーボモーターが自由になった状態を意味する。実際、KHR-2HVの頭(CH1)が自由に動かせるようになっているはずだ(シンクロスイッチがチェックされている場合) 全てのチャンネルをフリーにした状態。シンクロスイッチがチェックされていれば、KHR-2HVは全身から力が抜けた状態になっているはずだ

ついでといっては何だが、このポジションに素早く入るため、スピードを速くしておこう。「SPEED」のスライドバーを数字が少なくなるように移動する。何なら「5」とかでもいい

 全てのサーボモーターをフリーにしたら、ポジションウィンドウを閉じる。ちなみにポジションオブジェクトが「POS1」のままだと、何が何だか分からないので、表示をプロパティで調整しよう。「POS1」上で右ボタンメニューを表示し、「プロパティ」を実行する。すると名前や表示する大きさなどを設定できる。また、別のメニューから表示する色を変更することもできる。


「POS1」では何が何だか分からないので、プロパティを使って表示を変更する。「POS1」上で右ボタンメニューを表示、「プロパティ」を実行する 「名前」を入力し、さらに表示のサイズを変更する。表示サイズはいろいろ試して、自分好みの設定を見つけよう

最後に「スタート位置」ボタンをクリックし、さらにオブジェクト上でクリック。赤いフラグが立つ。今回は1つしかオブジェクトが無いのだが、これでこのオブジェクトがモーションの開始位置になる
 後はこのポジションを「スタート位置」に設定する。「始点配置ボタン」をクリックしてから、作成したポジションをクリックすると、赤いフラッグが表示される。これがスタート位置の印だ。各モーションには1つだけスタート位置を設定できるのだが、逆に言うとモーションにはスタート位置が必須となる。スタート位置が無ければ、そのモーションをどこから始めていいか分からないのだから、当然とも言えるのだが。


データシートの何も無い場所でダブルクリックすると、データダイアログが表示される。「コントロール入力」に注目。ついでに「データ名」も設定しておこう
 ここまででたった1つのポジションを使った、「全身脱力」モーションは完成である。これをKHR-2HVに書き込み、実行すればKHR-2HVは全身脱力状態となる。しかし、このモーションは無線コントローラーから実行できなくては意味が無い。そんな訳で無線コントローラーの信号に対応できるように設定してあげよう。方法は至って簡単、データシート上の何も無い部分をダブルクリックすると、データダイアログのウィンドウが開く。そこにある「コントロール入力」に注目して欲しい。数値の入力欄の横に、「受信」というボタンがある。電源を入れた無線コントローラーの任意のボタンを押しながら、この「受信」ボタンをクリックすると、そのボタンの「コントロール入力」数値が自動的に入るのだ。

 ここではKRC-3ADの「シフト4」ボタンを使うようにしたい。そこで「シフト4」ボタンを押しながら、「受信」ボタンをクリックする。すると「4096」という数値が入るはずだ。この「4096」という数値が、KRC-3ADのコントロール入力なのである。もちろん無線コントローラーを使用せず、対応表などを見て「4096」を入力して設定してもいい(注:数値を入力したら最後に必ずEnterキーを押すこと)。なお、データダイアログを開いたついでに「データ名」も入力しておこう。


無線コントローラーの「シフト4」ボタンを押しながら「受信」ボタンをクリックする。するとKHR-2HVが受信(正確にはKHR-2HVの受信機が受信)したコントロール入力の数値が表示される。このモーションは「シフト4」を押すと実行されるということだ 最後にファイルとしてPCに保存する。一目で内容が分かるファイル名がいい

 後は実際に書き込み、KHR-2HVを安全な姿勢にして、無線コントローラーのシフト4ボタンを押してみよう。KHR-2HVの全身から力が抜ければ、全身脱力モーションは完成である。もっともこのモーションが活躍するのは、もう少しKHR-2HVを使い込んでからだとは思うが。最後に作成したモーションは、ファイルとしてPCに保存しておこう。


作成したモーションは、KHR-2HVに転送して初めて使えるようになる。任意の場所に書き込む。なお、こういった時にテーブルを表示しておくと便利(コントロール入力の重複なども確認できる) 【動画】本連載では初のオリジナルモーションだが、なんとまあ地味なこと。だがいずれ、このモーションが役立つ日が来るのである(たぶん!)

「全身脱力」モーションを改造、進化させる

 データシートにポツンと1つ、ポジションオブジェクトがある……。初のオリジナルモーションがこれでは、あまりに悲惨である。手抜きと思われるのもしゃくなので、最後にちょっと改造しておこう。具体的には無線コントローラーの「シフト4」ボタンを1回押すと全身脱力、もう一度押すとホームポジションになるというものだ。絡んだりして危険な状態になったKHR-2HVを全身脱力して救出、離れた場所に移動してからホームポジションにするというシーンを想定したものだ(ジャイロセンサーについては、話がややこしくなるのでここでは考えない)。


【画面1】とりあえず「全身脱力」モーションを改造してみた。たぶんこれでうまく動くと思うのだが……(関係各位、もっとスマートな方法があれば教えてください)
 まずは【画面1】を見て欲しい。これが改造後の「全身脱力」モーションだ。モーション作りに慣れてくれば、これぐらいなら誰でも簡単に作ることができる。ではその内容を、ザッと解説しよう。

 まずスタート位置になっているセットオブジェクトだが、ここでは比較レジスタとして「4096」を設定している。比較レジスタというのは、一時的なものとして記録するデータのことだ。このため「比較レジスタに数値をセットする」に「4096」を入力してある。もちろんこの「4096」というのは、無線コントローラーのコントロール入力の「シフト4」である。セットオブジェクトは「設定値配置ボタン」をクリックして行なう。


「設定値配置ボタン」で配置、比較レジスタを設定したオブジェクト(「SET [4096]」) 「全身脱力」、ポジションオブジェクトは全チャンネルをフリーにするだけ。元の「全身脱力」と同じものだ

 次のポジションオブジェクト「全身脱力」は、先程作ったものがそのままになっている。そして重要なのが、その次の「分岐」というオブジェクトだ。このオブジェクトは「分岐配置ボタン」をクリックしてデータシート上に配置するのだが、この分岐オブジェクトによってその下のポジションオブジェクト、すなわち「HomePos(中身はホームポジション)」へ分岐する。そして分岐の条件は「ボタン入力=比較レジスタならジャンプ」である。

 このため「分岐」オブジェクトから「HomePos」オブジェクトへの配線(矢印がついたライン)は、分岐配線ボタンで行なっている。分岐配線の場合はラインが点線に、通常の接続配線はラインが実線となる。


「分岐配置ボタン」で配置し、「ボタン入力=比較レジスタならジャンプ」を設定した。このオブジェクトから2本、矢印が出ていることが分かる。条件比較して、文字通り「分岐」させるのである 最後のポジションオブジェクトは、KHR-2HVをホームポジションにする。分岐された際に、実行される

【動画】「シフト4」で全身脱力、再び「シフト4」でホームポジション。分かりやすいように倒した状態で実行したが、また地味というか、痙攣的というか……
 要するに1回、「シフト4」が押されてこのモーションが開始されると、まず「全身脱力」のポジションとなる。そして分岐条件で比較レジスタ、すなわち「4096」が来るまでは「全身脱力」に戻る。この状態で「4096」が来る、すなわちもう一度「シフト4」が押されると「ボタン入力=比較レジスタならジャンプ」に従って「HomePos」へと進むのである。

 ただしプログラムをある程度知ってる人なら気づくと思うのだが、このモーションでは一度「シフト4」が押されると「全身脱力」と「分岐」でループに入る。このため次の「シフト4」が押されても、タイミングが悪いと無視されてしまう。もっとも何度か押せば反応するし、反応するまで「シフト4」を押し続けるという手もあるのだが。

 ちなみにこれを見て「ほう、高橋はモーション作りをある程度分かっているのだな」と思ってはいけない。何を隠そうこのモーション、「KHR-2HV SP2」の「For Soccer」に入っているキーパーモーションを「パクった」ものだからだ。「For Soccer」のキーパーモーションはボタンを押すとKHR-2HVがサッカーのゴールキーパーのように、ボールをブロックする姿勢となる。そしてもう一度同じボタンを押すと、ホームポジションに復帰するのだ。このモーションのボールをブロックする姿勢を「全身脱力」にし、ホームポジションに復帰するモーションを、単にホームポジションにして、後は比較レジスタとコントロール入力の値を設定してやれば「パクリベースの全身脱力モーション」が完成するのである。

 このように参考となるモーションをサンプルモーションから見つけ出し、それを自分なりに改造、アレンジして行くのが、モーション作りに慣れる近道だと思う。まずはサンプルモーションを試して、その動きをじっくり観察する。それからそのモーションが、どんな具合に作られているかを、データシート上で確認し、分からないところをマニュアルで調べて行く。比較レジスタとか、分岐とか、そういったことも実際のモーションから探って行くのが一番分かりやすいようだ。

 次回はオリジナルモーションの作成がメインになるので、ぜひサンプルモーションをいろいろ試し、その内容をザッとでいいので見ておいて欲しい。そうしておいて頂くと、たぶん話が早く進むと思うのだが……どんなもんだろう?


「パパ、あたしとロボット、どっちが大事なの?」

-ロボット仲間の娘さんが、冷たい笑顔で言い放った言葉(5歳、ポニョ似)-


関連記事
高橋敏也の「KHR-2HV“超”初心者入門」
-Mission08-
「加速度センサーの設定と、サンプルモーションの活用」(2008/12/01)



2008/12/08 16:45

- ページの先頭へ-

Robot Watch ホームページ
Copyright (c) 2008 Impress Watch Corporation, an Impress Group company. All rights reserved.