マスキングテープで4年越しの壁紙修理

去年、TVを見てたら、マツコ・デラックスの番組でマスキングテープの世界、みたいな放送がありました。 ふーん、マスキングテープもいろいろオシャレになって、それじゃマスキングじゃなくて、ラップングテープとかデコレーションテープとか呼んだようがいいんじゃないか? と思って見てたら。 幅のひろーいマスキングテープが出てきまして。 これで壁にアクセントつけて云々という話題に。

そういえば、うちのトイレの壁紙。実は、4年前にドアの枠が一部、シロアリにやられまして。隣の浴室のドアの部分は業者に頼んで直してもらったんですが、また1年後に見つかったものだから、もったいないし自分で直してあげようかと、工事してあげました。

Nec_0750_2
Nec_0752_2

このドアを挟んで内側と外側の木材がやられてたので、削って掘り出して、新しい木材に入れ替えて、つなぎ目をパテで埋めて。

Nec_0753

最後に塗装して木部の部分は殆どわからなくなったんですが、そのとき壁紙を少し剥がしたもんで、そこんところが手付かずのまま4年経過。 いや、途中、壁紙を取り寄せて直そうともしたのですが、いつものまにかそのまま。
それが、あのTVを見ていて、このマスキングテープの幅広のやつ。これなら幅も丁度いいし、いくつか柄の種類もあるし、試してみてもいいな、と。 ネット画面で見てると、どうやらとても薄いみたいで。 そりゃそうですよね。だって元はマスキングテープなんだから。 壁紙じゃないもん。

P3164737

で、買ってみたのはこれ。銀色。いまの壁紙なら、この銀色にしとけば、なんとなく縦のラインに見えて違和感が少ないかも。とは勝手な想像。

P3164739

とっても薄いので、試しに壁に貼ってみてどうなるのか試してみることに。この壁は猫が引っ掻いても傷がつかない腰壁なので、ここで試しを。 うーん、かなり薄い。

「P3164729.JPG」をダウンロード

4年経過の再スタート時点はこんなです。ぜんぜん変わってない。

P3164742

まずは1枚め。1枚だけだと薄すぎて裏写りするし。下地の凸凹がそのまま見えるし。

P3164745

下地がよくてシワが出なければ、まあまあ見た目はあるんですけど。これじゃもう2枚ぐらい重ねないと。

P3164747

これで2枚め。どうですかねぇ。もっと明るいキラッとした銀色かと想像してたんですが、なんか暗い。

P3164754

3枚目。10m巻なのでまだまだ余ってますけど、結局、薄いから下地の凸凹がなかなか目立たなくなるまでは難しい。 もっと分厚い壁紙をつかって、下地を作ってから出ないとダメだな。 というわけで、ストップ。
しばらく、このまま使ってみて、奥様の感想も聞きながら、もう1回、ちゃんとした壁紙でやり直すかどうか考えます。

| | コメント (1)

EPSONのインクカートリッジにリセッターを試してみる

今年の年賀状は実家から回収してきたエプソンのEP-808AWを使いました。それまでは3000円で売ってるキャノンのプリンタ。この3千円プリンタ、インクタンクは小さいけど、ドリルで穴を開けて、補充インクを足してたら、コストパフォーマンス最高。 でも、せっかくスキャナもついてネット経由で印刷できる、このEP-808AWをメインプリンタにしたわけです。

P3164759

そうするとまた、インクの問題が出てきまして。とにかくインクが高い! いくら本体を安くしたからといって、ランニングコスト考えると、2年ぐらい使うと本体が買えるほどインク代が掛かりそう。 なので、今回もインク補充作戦を実施するわけですが。 前のキャノンのプリンタは、インクがなくなって補充しても、残量が分からないだけで、そのまま印刷を続けることができました。 今度のはそうは行かないです。

さて、印刷しようかと起動したら、イエローがインク切れ。印刷したいのは黒なんだけどなぁ。印刷以外の機能は動くけど、印刷はまったく動こうとしない。 買っておいたインクを補充したけど、やっぱろ残量がZEROのままなのでうんともすんとも。 ということで仕方なく、インクカセットについているICチップをリセットするリセッターを買いました。

Img_20170315_101724

これと同じようなこと、3Dプリンタのフィラメントでもやったことがある。あのときは、Arduinoにプログラムを入れて、3本だったかの端子をカセットのICに押し当ててリセットして240m入っていることにした。 でも、結局、純正のフィラメントでないと調子が安定しないので、純正を買い続けていますが。

これも同じで、インクカセットのICを装置の端子にちょっと押し当てると、ランプが赤から緑に変わって書き換え終了。ものの1秒ぐらいのこと。 ついでに減っている黒も補充してリセット。

ここから、脅しの画面が続きます(^^)

Img_20170315_101845

Img_20170315_101906

Img_20170315_101912

Img_20170315_101917

Img_20170315_101931

ハイ終了。無事、インク残量は復活して印刷できるようになりました。3千円プリンタのときは残量がわからなかったから、まだ、このほうがいいや。 あとはリセットしたカセットでどれだけ正確にインク残量が出るかですね。
インクも1個300円ぐらいまでなら、毎回買い替えてもいいんだけど、6本で6千円となると、ちょっとお高いのよねぇ。

| | コメント (4)

クロネコのロッカー受け取りを試してみたよ

はい、ご無沙汰してます。ここんところ面倒くさいことが多くて提供できる話題もありませんでしが。年末あたりから宅配業界は通販の荷物でパンク寸前で大変だという話も聞こえてきます。 そうするうちに、我が家の近くのクロネコセンターでロッカーで受け取れるサービスを開始したよ! とクロネコの荷物と一緒に紙が入ってました。 我が家の最寄り駅にはロッカーないので、このサービスは試したことがなかったのですが、とうとう使える日がやってきましたよ。では、さっそく。

不在通知が来たので再配達先に近所のセンターを指定できるようになっていました。 ロッカーと家との距離が2km以内でないと使えないそうです。 で、さっそく再配達先をロッカーにして待つと、受け付けたメールが1通。それから、荷物がロッカーに入ったことを知らせるメールが1通。 あとのメールには4桁のパスワードが2個書いてあります。

Img_20170211_102011

これがそのロッカーらしい。結構、立派なんだけど、こんなサイズでいいのかな。すぐ満杯になりそう。

Img_20170211_102043

人と比べるとこれぐらいの大きさね。一体どこから荷物が出てくるんだか。

Img_20170211_102053

パスワードを2個入れます。それ以外に入力するものはありません。

Img_20170211_102115

すぐに扉が開いて、中にAmazonの箱が。これが扉かぁ。ということは、高さの違う扉が一杯あるんだな。けど右側に扉っぽいのが10個。左側も開くとしたら20個。 荷物の大きさは最大で縦横高さの合計が100cmまでらしいけど、大きな荷物がたくさん来たら扉足りないよな。

Img_20170211_102129

はい、そんな感じで、とても簡単に受け取り終了。うち、去年はAmazonの注文が200件ぐらいあったので、遅くなる再配達は、なるべくこれを利用してあげることにしましょう。近くだから簡単だし。

P2114330

荷物の中身はこれ。LEGOのBMWバイク。べつにバイクがほしいんじゃないけど、そのうち分かるか。

| | コメント (2)

BricRoboでブロック並べを解いてみる(6) - BricRoboモデルとソースコード一式

さあ、今回で最終回にします。BricRoboモデル、C#でコード生成したもの(中身を実装済み)、UI画面のC#コード、それら全体をビルドできるVisual Studio 2015のプリジェクトをZIPにして公開します。

まずは以下のZIPファイルをダウンロードして展開してください。
  
  block_narabe.zip

中にあるETR2016.eapはEnterprise Architect(EAと呼びます)のEAPファイルです。BricRoboモデルを見たいという人で、EAを持ってない人はEA+BricRoboをセットにしたインストーラーがあるので、これをダウンロードしてインストールすると、EAでBricRoboモデルを編集して、BricRoboでコード生成することができます。下記のページの一番上の「統合ダウンロード(BricRobo V1.7β+EA)」のダウンロードから入手できます。

  統合ダウンロード(BricRobo V1.7β+EA)

とりあえず、Visual Studio 2015(VS2015と呼びます)があればブロック並べ解法のアプリをビルドできます。展開したblock_narabe.zipの中にあるSlover.slnをVS2015で開いてビルドしてください。最初の章で紹介したアプリができます。

EAPファイルを開くと下の図のような画面構成になります。アルゴリズムのパッケージのなかに、迷路法を解く順序をアクティビティ図で書いたフローチャートがあります。Sloverパッケージはコード生成するためのモデルで、ここからコード生成したC#コードと、別に作ったUI画面のC#コードを一緒にビルドしてアプリが出来てます。
BricRoboパッケージはBricRoboモデルに必ずあるメタモデルで消してはいけません。
見かけないツールバーがありますが、これはEAに追加されたBricRoboのアドインで、BricRoboでモデルを書くときに使います。

Photo_2


EAPファイルのアルゴリズムには下の図のようは感じで、どんな手順で処理していけば解けるのか、フローチャートっぽく書いてます。あとでBricRoboモデルでコマンドを増やしていくとき、どんな処理が必要なんだっけ? と考える拠り所になるので、知らないものを作るときは、ちゃんと書いたほうが後で困りませんからね。

Photo_3

そんなわけで、今日で正月休みも終わるので、これにて終了にしたいと思います。最近、なにか作るときは、BricRoboモデルで作ったらどうなるんだろう? 真っ先に考えるようになりました。慣れなんでしょうね。水中ロボットなどはピッタリ当てはまるので簡単なんですが、こういう解法アルゴリズムとかでも、まずは役目のブロックを書き出して、関係を決めて、全体をどう動かしたら完成するのか? と考えると、大抵のものはできると思えてきました。
異論もあるようですが、オブジェクト指向っていうんだから、まずは実体のあるオブジェクト=ブロックで仕組みを作って、そのブロックを作るためのクラス=部品を考えていくほうが、ずっと簡単。 で、反復しながらクラス=部品を洗練(抽象化したり細分化したり)していくしてくのが王道じゃないかと。

| | コメント (0)

BricRoboでブロック並べを解いてみる(5) - BricRoboモデルへの落とし込み

さて、画面上のサークルの1つ取り上げると、下の図のような形をしてます。真ん中の四角はサークル、上下左右に移動できる経路。迷路法では距離の数字を上下左右に書き込んでいき、その数字を頼って経路を求めたり、数字をクリアしたり、ローバーを移動させたり。なので、今回の考え方は、サークルに能力を持たせて、サークルがいろんな情報を管理して、お互いにやり取りすることで、迷路法を実現させようというもの。

サークルは勝手に動いたり判断しないので、外部から命令を与える必要が。そのために、青のコマンドを外部から与えます。コマンドには情報が付いていて、サークルはコマンドと情報を元に、なにかする。それを全部のサークルに一通り行き渡らせるために、処理したコマンドを次のサークルに投げる。そのとき情報は変化しているかもしれない。

例えば、「ローバーのいる場所を教えて!」というコマンドがあり、情報に-1(知らないという意味)を設定して、サークルに流す。受け取ったサークルは「おれ、知らない、次へ」とコマンドを次のサークルに流す。知っているサークルは「俺のところに居る、10番のサークルだよ」と情報に10をセットして次へ流す。 そうすると、巡って最後に流れてきたコマンドには情報に10が書いてあるので、10番のサークルにローバーがいるな! と分かるわけです。

別の例で言うと、「距離計測してるんでよろしく」というコマンドを作り流す。貰ったサークルは赤矢印の自分の方にどこからか番号が流れてきたかなぁ、と見てみる。 「あ、5が届いてるわ。じゃ、自分の距離は5とおぼえて。+1して6を緑矢印の向きへ流さなきゃ」 これをすべてのサークルが繰り返すと、迷路法でやった数字を埋めるのと同じことができる。

こんなコマンドをたくさん作って、サークルが受け取ったときにどんな処理をするかをサークルに仕込んでおくわけです。

Zukai_2

この方式のいいところは、上下左右という形に左右されない。星型につながっていてもいいし、6方向でも8方向でもいい。どんな形にしてもサークルのやることは変わらないところです。これ大事ね。 それからサークルにさせたいことが増えたら、コマンドを増やして対応する。これもアーキテクチャが変わらないから大事。

そこで図の下側になるんですが、BricRoboモデルの1つのサークルへ対応させてものが、これ。BricRoboモデルの読み方を知らない人のために、ちょっとだけ解説しますが、青と赤の小さい四角はポートと呼んで、データをやり取りする接続口です。青はデータ型といって、ポートに届いた情報を何回読み出しても読み出せる性質。赤はイベント型といって、ポートに届いた情報を読み出すと、空っぽになって2回目以降は届かない限り読めない性質。
そして白抜きの△は受信、塗りつぶし▲は送信の性質。 このブロックがたくさん繋げて4x4の形にしたのが、前の章で出てきた、あの複雑に線が引かれたBricRoboモデルなわけです。 そして、コマンドを画面から入れるためのブロックが左側の黄色ブロック。最後に流れ着いたコマンドを拾い上げるのが右下の緑ブロックってわけ。
なんとなく、仕組みは分かってもらえましたかね?

Field


>>BricRoboでブロック並べを解いてみる(6) - BricRoboモデルとソースコード一式

| | コメント (0)

あけましておめでとうございます

2017s

今年も宜しくお願い致します。

なんと! 大晦日から足が痛くなり、また痛風が右足に出てきました。4月に大変なことになったので、あれから薬を飲み始めて、尿酸値も下がっていて、もう痛風にはならないと思ってたのに。ナンテコッタイ。

去年は、水中ロボコンや海洋ロボコンでいい勉強をさせてもらいました。やっぱり、緊張する場面でないと面白さが分からない。

実は今年に向けて、すでに新しい水中ロボットを作り始めてますが、大晦日の昨日。設計不良が見つかって、新年そうそう、また胴体の作り直しをしなきゃいけないことが判明。 でも、凄いよね。元旦だというのにAmazonで部品届くし。

そろそろ新しいことも始めたくて、電動車椅子も準備しました。いや、痛風を予見してたんじゃないです。今度は地上を走る系の開拓を始めてみたいな、と。テストで近所を走り回っているとき、すれ違うお年寄りがたくさん。スーパーに買い物いくのに結構たいへんなようで。これあったら結構楽だと思うんだけど、自分から乗るのは恥ずかしいかな。みんなで乗れば大丈夫だって。

ま、そんなことより健康第一ですかね(^^)

| | コメント (5)

BricRoboでブロック並べを解いてみる(4) - 迷路法をブロック並べに応用

前の章では複雑に線が入り組んだBricRoboモデルが出てきました。これに画面の絵を当てはめると次のよな図になります。ブロック並べのフィールドそのものですが、黒線は移動できる経路を示したもの。本来は一番右端に縦に黒線が1本ありますが、最後はそこに抜け出たいので、その場所をゴールとして、右側へ抜ける4本の経路を引いておきました。(これはあとでちょっと問題があるんですが)

Photo

そして、この配置は次の図のように、一番最初に迷路法を説明したときの四角が連なった迷路とみなすことができますよね。だから、この図を元にして、どうやってブロック並べを解いていくか、例を使って説明していきます。

Photo_2


最初はこんな配置だとします。一番左にローバー、4つのブロックは緑、黒、青、赤。みんな違う色のサークルの上にあります。-1の数字は、その場所になにも距離の値、迷路法で数字を入れていないことを表しています。

Photo_4


まずはスタート地点であるローバーの位置に0を入れます。

Photo_3


次に0の回りに1を入れていくのですが、黒線で繋がった場所にしか動けないので、黒線で0と繋がった枠に1を入れるとこんな感じ。

Photo_5


次に1と黒線で繋がった枠に2を入れます。するとこんな感じ。青ブロックのところに2が入りました。

Photo_6


次に2と黒線で繋がった枠に3を入れます。ここで注意しないといけないのは、青ブロックは要するに壁なので、青ブロックにある2は無視すること。そうしないと壁を突き破って進んで行けることになるので。

Photo_7


次に3と黒線で繋がった枠に4を入れます。緑ブロックも黒ブロックも3が入ってますが、それは壁なので伸びません。下の赤いサークルの3だけが右に伸びて4が入ります。

Photo_8


次に4と黒線で繋がった枠に5を入れます。赤ブロックにも5が入って、ブロックは全部埋まりました。もうブロックまでの経路はわかったのですが、一律の動作にしたいので、枠に数字が入れられなくなるまで続けます。

Photo_9


次に5と黒線で繋がった枠に6を入れます。

Photo_10


次に6と黒線で繋がった枠に7を入れます。あれ?右側の楕円のサークルに7が入ってしまいました。これがまだ細工が足りないところで、ここはゴールのサークルなんですが、特別扱いしてないので7が入ってしまいました。つまり経路の1つとして使ってしまったわけ。これはあとで条件を加えれば回避できるので、とりあえずほっときます。

Photo_11


次に7と黒線で繋がった枠に8を入れます。これで-1の枠はなくなり全部に値がはいりました。-1が消えたということはローバーがいけない場所はないということです。

Photo_12


さて、ローバーから一番近いブロックはどれかというと、数字を0から1つずつあげてブロックのある場所を探すと、それは2の入っている青ブロック。青ブロックの2から数字を1つずつ小さくしながら枠を辿るとローバーのところまで戻ってこれます。これがローバーから青ブロックまでいく経路。

Photo_13


経路が分かったので、青ブロックまで移動。

Photo_14


次は青ブロックを運ぶ場所を探します。やり方は一緒で、ローバーのいる位置を0として、これまでと同じ方法で数字を書き込んでいきます。するとこんなふうに枠に値がハマって、青サークルで一番数字が小さいところが青ブロックを運ぶ場所で、1から値を小さくしながら辿るとローバーのところに戻ってこれるので、これが青ブロックを運ぶ経路なわけ。

Photo_15


これで青ブロックの移動終了。あと緑と赤を運ばないと。

Photo_16


これまでと同じようにして、ローバーのいる場所に0をいれて、そこから全部の枠に数字を入れていきます。そうするとこんな感じになります。

Photo_17


黒以外で、ブロックとサークルの色が合っていないので、数字が一番小さいのは2の赤ブロック。次はこれを運ぶために経路は2から数字を小さくしながら戻るとこんな経路。

Photo_18


赤ブロックまでローバーを移動します。

Photo_19


ローバーのいる場所を0としてまた数字を埋めていきます。赤サークルで一番数字が小さいのは2の場所。そこが赤ブロックを運ぶ場所で運搬ルートです。

Photo_20


赤ブロックを運びます。だんだん面倒くさくなってきたね。あと緑ブロックだけ。

Photo_21


同様にしてローバーの場所に0を入れて回りを埋めていきます。この時、緑ブロックまでのルートは2つあります。4,3,2,と辿ってくると、2から1へは2通りあります。どちらも0まで戻ってこれるのですが、どちらを選ぶかは数字の探す順番できまります。いまのプログラムは下側が選ばれました。 で、緑ブロックまでのルートが見つかりました。

Photo_22


緑ブロックまでローバーを移動させます。

Photo_23


また、ローバーのいる場所を0にして回りの数字を埋めていきます。緑サークルで一番小さい数字の場所が緑ブロックを運ぶところ。経路も分かります。

Photo_24


緑ブロックを緑サークルまで運びます。

Photo_25


さあ、ブロックは全部運び終わったので、ゴールまでの経路を求めます。ローバーの場所を0として回りの数字を埋めていきます。するとゴールまでのルートが求まります。

Photo_26


ローバーをゴールまで移動させます。 これで終了。長かったね。

Photo_27


やることは同じで、

1.ローバーの場所から数字を埋めて、一番近いブロックを探す。
2.ブロックまで移動する。
3.ブロックの位置から数字を埋めて、一番近い同じ色のサークルを探す。
4.サークルまでブロックを移動する。

これを繰り返して、動かすブロックがなくなったら、最後はゴールまで経路を探して出ていく。
ローバーをターンさせたりブロックの向こう側に更に進めたり、そういう制御の難しさはぜんぜん考慮してないけど、一応、迷路法を使ってブロック並べは解けることは分かりました。

次は、数字を埋めたり、経路を探したりするのに、サークルに機能を持たせて、それをどうやって駆動して全体を動かしていくのか、の話ですかね。


>>BricRoboでブロック並べを解いてみる(5)

| | コメント (0)

BricRoboでブロック並べを解いてみる(3) - アプリの仕組み

何ができるかわかったところで、仕組みがどうなっているか見てみます。画面でちょこまか動いているのはローバーやブロックを動かした結果を表示しているだけで、実際の情報はBricRoboのモデルとして作られた中にあります。
この図の上の部分が見えている画面。画面上のサークルやローバーやブロックは、BricRoboモデルで作成した中身を反映しているだけです。

では色分けした部品が何をしているかというと、

■青色
サークルを表しています。サークルが持つ情報には、自分はどの位置なのか、何色なのか、ブロックが乗っているのか、ローバーが乗っているのか、ゴールなのか、迷路法で計算した距離、などです。


■黄色
サークルに対してコマンドを発行します。あとで説明しますが、サークルはコマンドを受け取ると何か処理をします。そのコマンドを画面からもらってサークルに流す役目をします。

■緑色
サークルから流れてきた最後のコマンドを受け取り、画面側に提供します。黄色から流れたコマンドは、サークルを巡って最後にここに流れ着きます。調べるコマンドは、この流れ着いたコマンドの中に知りたい値が入っています。

■ピンク色
サークルにブロックを置きます。ブロックを置く場合にはサークルと同じ色のところに同じ色のブロックを置かないとかいろいろ置き方があるので、その辺の処理はここで受け持ちます。


Photo_2

この下側の実際に迷路法を解いている部分。BricRoboモデルの実物は次の図になります。凄い複雑そうに見えるでしょ。でも、書いてあることは上の図の通りで、4x4マス目の上下左右の繋がりをポートの結線で表しているので、こんなにたくさん線が引いてあるのです。

しかし、ここで気づきますよね。サークルの繋がりを結線で表しているので、どんな形でも関係ないんですわ。平面の2次元でなくても3次元でもOK。複雑になるなら、3次元の層ごとに別のダイアグラムに分けて書けばいいわけで。

なんで、こんなもので迷路法が解けるのか? という仕組みについては、次回で解説します。

Field


>>BricRoboでブロック並べを解いてみる(4) - 迷路法をブロック並べに応用

| | コメント (0)

BricRoboでブロック並べを解いてみる(2) - ブロック並べ解法アプリ

さて、経路探索のアルゴリズムは決めたので、これを使って実際にどういうものが出来上がるかのビデオ。 最終的にこんな風になります。純粋に経路を探してブロックを運ぶだけなので、実物のロボット制御がない単純なもの。この通りにロボットを制御するのは、また別の難しさになるので、それは今回の目的じゃないです。

画面にはサークルとブロックとローバー(つまり走行体です)があって、最初にブロックをセットして、ローバーを進入口にセットして、一番近くのブロックから順番に、同じ色のサークルへ移動して、最後はゴールするというもの。
ボタンの意味は、

RESET BLOCK:ブロックを消し去って初期化する
OMMIT:使わないブロック色の選択
NEXT BLOCK:次のブロック配置
RAND BLOCK:乱数でブロック位置を決定
SET ROVER:ローバーを進入口へセット

SEARCH ROUTE:ローバーから一番近い移動が済んでないブロックまでのルートを探す
GOTO BLOCK:見つけたブロックまでローバーを移動する
SEARCH ROUTE:ローバーの位置からサークルまでの距離を計算する
CARRY BLOCK:一番近い同じ色のサークルまでブロックを運ぶ
AUTO:上記の4つを順番に自動で行う

ALL PATTERN:全部のブロック配置についてやってみる
画面更新:そのとき画面を更新する(計算を速くするには画面更新を止めるのがいい)

ひみつ:じつは昔、この画面を流したとき何をしているか分からないように、ルートの距離を非表示にする機能をつけた

LOG:ブロック配置に対してローバーがゴールできたか、できたらその移動数はどれだけか、のログをファイルに保存する

Ui

ログファイルにはこんな形式で記録されていきます。
左から黄緑赤青黒の位置、ブロックが置かれた位置を16進表記にしたもの、ブロックの移動回数、最後まで解けたかどうか。

Log

位置に関しては、こんな風に番号を付与してあります。今回は4x4マス目で、丁度、0-15に対応させると表現し易いのでこのようにしてますが、結果をどう表現するかの問題なので、解法とは関係はないです。

Photo

この迷路法で近くのブロックから手当たりしだいに移動すると、考えなしなので、手詰まりが発生して、解けない! というブロック配置が出てくるのですが、それがどれぐらいあるのか?とか、どれぐらいの移動距離のバラつきがあるのか。ということを調べたりしていたわけです。 巷ではダイクストラ法というのが流行りみたいですね。そんなの知らんかったです。 けど、どのみち、経路探索にしか使わなければ、手詰まりが発生するのは同じでしょうけど。 手詰まりが発生したらどうするか? ブロックを動かす優先順位を遠くからに変えてみるとか、なるべく遠くのサークルに置くような評価にするか、なんか変化を加えてみれば解ける場合もあるんでしょうね。

>>BricRoboでブロック並べを解いてみる(3) - アプリの仕組み

| | コメント (0)

BricRoboでブロック並べを解いてみる(1) - 迷路法とは

最近、水中ロボコンの開発にBricRoboというソフトを使いました! と書いたら、だんだんとFacebookやHPのアクセスが増えてきているので、ここらで、ロボット制御ではない分野で使うとどうなるか? という例を公開してみようかな、と。 じつは2016年のETロボコン(ロボットのソフトウェアコンテストがあるんですけど)のお題に、ブロック並べというのがありまして。 これ、真面目に考えるとどれぐらい手間が掛かるんだろうと試しに作ったことがありまして。走行経路を求めるのにBricRoboで解くとどんなふうにモデリングするのか、その事例です。

まず、最初にどんな方法で経路を解くかアルゴリズムを決める必要があるんですが、今回はやったことのあるやつで、電子回路の配線のアルゴリズムに使われる「迷路法」を採用してみることにします。
迷路法を知らない人は、うーん、どうしようっかなぁ。マインスイーパーみたいな感じで、始点からどんどん輪を広げていって、終点に到達したときの経路を反対に戻れば、それが最短経路ってやつなんですが。
ネットで検索しても、いい感じの図解が見つからないので、書いてみますか。

例えば、次の図のような迷路があったとします。赤が始点、青が終点。赤から青までの到達する最短経路を求めるとします。

1

赤の始点に0を書きます。上下左右にしか移動できないルールだとします。すると0の上下左右で空いているところに、+1した1を書き入れます。次に1の回りの上下左右で空いているところに、+1した2を書き入れます。これを青に到達するまでずっと続けると、青に到達したときには22が青に入ります。

2

今度は青の22から-1して21の場所を探します。探すときには順番を上下左右の順番に探すとしましょう。0になるまで探し続けると、その通ったルートが赤から青への最短ルートの反対向きということになります。
ということは、赤から青に行くときは、これを反対向きに進めば最短ルートで到達します。

3

このアルゴリズムは水面を輪が伝わって行くのに似ているので、水面法とか勝手に呼んでたんですけど、ネットでは迷路法って名前が付いてます。

ということで、くじけなければ、正月休みに最後のソースコード公開まで解説できると思いますけど、今日はここまで。


>>BricRoboでブロック並べを解いてみる(2) - ブロック並べ解法アプリ

| | コメント (0)

«レンジローバー イヴォーク コンバーチブルを見てきました