Example 2021.9.15

周回ロボ / 落ちないロボ

テンプレロボ4号機
   第一弾

使っているVIVIWARE Cell VIVIWARE Cell

  • Core
  • Measure
  • MotorDriver
  • Mounter

その他使っているもの Other Parts

変幻自在?テンプレロボ4号機

テンプレロボとは、VIVIWARE Cellを搭載するオープンソースハードウェアのロボットです。

VIVITA ROBOCON では毎回参加者にテンプレロボの組み立てマニュアルが提供されています。
ロボットとしての基本的な機構・要素を備えていながら、ロボコンでは高得点が絶対に取れないロボットとして、名前はあえてそのまんま「テンプレロボ」としています。

テンプレロボ4号機はそれの亜種となります。
1号機〜3号機はアームを備えた手動操縦ロボットであったのに対し、4号機はアームを廃し、代わりにVIVIWARE Cell Mounter(以降、Mounterと呼びます)をたくさん備えた、VIVIWARE Cell実験機としての性格が強くなった機種になります。


(底面)
本体は立方体(サイコロ型)に近い形状をしており、6面全てにMounterを備え、どの面にもVIVIWARE Cellをくっつけることができます。
車輪は駆動輪としてギヤードモーターを左右に、補助輪としてキャスター2基を備えています。
今までのテンプレロボとはやや性格が異なり、この本体そのものは改造を前提としていないことから、場所やイベントによって愛称を付与されることがあります。
「6面マウン太」「KI-TA」など。

ちなみに僕(かっしー)が考えた愛称は「パンドラロボ」です。
カッコいいですね。
カッコいいですよね...?
誰かカッコいいって言ってください...

 

テンプレロボ4号機 発進!

早速このロボにVIVIWARE Cellを搭載し、プログラミングをしてみます。
まずは障害物の周囲を周回するロボットを作ってみます。

VIVIWARE Cell搭載




進行方向左側面にVIVIWARE Cell Measure(以降、Measure Cellと呼びます), 他2箇所(場所不問)にVIVIWARE Cell Motor DriverVIVIWARE Cell Coreをセットします。

ではプログラムを組みます。

ポイントはMeasure Cellの値から壁の存在を検知し、
・壁がある=直進
・壁がない=旋回
と2つのシーケンスを繰り返すことです。



結果、以下のようなプログラムになりました。



動きはこのようになります。

 

テンプレロボ4号機 換装!

このテンプレロボ4号機は他にもさまざまな遊び方が考えられます。
同じくMeasure Cellを使った事例をもう一つ紹介します。

今度は下向きにMeasure Cellを搭載し、「机から落ちない動き」を目指します。

下面にMeasure Cellを搭載し、先ほどと同じくMeasure Cellの値から床の有無を検知し、
床がない=落ちそう、となったら方向を変えて落下を回避します。

ここで問題点が。Measure Cellが床の端を検知したときには既に本体が脱輪してしまい、復帰が困難なのです...

しかし、テンプレロボ4号機の必殺パーツがあるのです!


Mounter取付部を前方に延長することができるエクステンションパーツです。
形状がカブトムシのようになることからカブトホーンと呼ばれています 僕(かっしー)が勝手に呼んでいます。
これを取り付けたあとの本機は「カブトパンドラロボ」と呼びます。
カッコいいと思っていただけた方、お便りいただけると僕が飛んで喜びます...
ではプログラムを組みます。 
ポイントはMeasure Cellの値から床の存在を検知し、 
・床がある=直進 
・床がない=一旦バックして旋回 
と2つのシーケンスを繰り返すことです。 先程よりも少し難しいですね...




プログラムの完成図です。まず全体は以下のようになります。


ポイントは床の端を検知後の挙動をRoutine Moduleを使ってプログラムしているところです。
Routine Moduleは決められた秒数にしたがってデジタル信号を順繰りに出す Moduleで、順序ある動きをプログラムするときに便利です。

(...Routine Moduleの3つめの出力は特に意味がなかったですね...)



次にRoutine Moduleからの出力をLogical Operation ModuleORと、Not Moduleとつなぐことで、「(床を見失った後の)後退・旋回が終わったら」という条件を作ることができます。

これと「床がある」条件とで、Logical Operation ModuleANDを組んだ先を「前進」につなぎます。
 



複雑ですが、このようにしないと行けない理由があります。

単純に 「床がある=前進」 としてしまうと床を見失って後退中に床を検知したら再度前進になり、床の端で永久に短い周期で前進後退を繰り返してしまうのです...

つまり「床がある、かつ、後退・旋回のルーチンを終えている、という場合のみ前進」という条件にする必要があるわけです。

では完成動画を見てみましょう。

 いかがでしたでしょうか。 本機は他にも楽しい遊び方が開拓できそうで楽しみですね。

 

(Created by Masatoshi Imai & kassy)

 

Share

share
close

Share