東京工業大学 ロボット技術研究会

東京工業大学の公認サークル「ロボット技術研究会」のブログです。 当サークルの日々の活動の様子を皆さんにお伝えしていきます。たくさんの人に気軽に読んでもらえると嬉しいです。
新歓特設ページ        ロボット技術研究会 HP        ロボット技術研究会 twitter公式アカウント

アカテツ科

「ロボット技術研究会」通称「ロ技研」は、その名前の通りロボットの制作や研究はもとより、電子工作や機械工作、プログラミングなどの幅広い分野にわたるものつくり活動を行っています。

カテゴリ一覧: loading

【AIの旅】追跡、群知能に挑戦した。

初めまして僕ロギーくんだロギ~


捨て置いて、こんばんは、アカテツ科です。 

めっちゃ突然ですが人工知能(AI)あるじゃないですか、最短経路を求めたりするアレです

HAL_9000とかSiriとかそういうのです

その内の一部として、LOS追跡やBoidsってのがあるんです 

オライリーの「ゲーム開発者のためのAI入門」なる本の序盤を読んでてよさ気だったのでUnityで シミュレーションすることに挑戦しました。以下がその道程です。



◆LOS追跡
LOS追跡とは、要するにただの追跡である。
まずそれっぽい物体を用意
この船的な物体にRigidbody2Dを付け、物理動作を実現。
船的な物体は、直進するための推進力と、曲がるための操舵力のみを持っている。(任意の方向に力をかけることが出来ない。)
boatc
この場合、追跡したい物体を向くように操舵力をかけ、距離に比例するような感じで直進すれば良いだけ。
以上、色々と調整したら、こうなった。

los
お~ちゃんと追いかけている。かわいい。






◆Boids(フロッキングアルゴリズム)
渡り鳥は集団で飛んでいる。そして集団で一斉に向きを変える。そんな集団の動きをシミュレーションするのがBoidsである。

3つの規則がある。

1・結合: 各ユニットを隣接ユニットの平均位置に向かって誘導する。
2・整列: 各ユニットの向きが隣接ユニットの平均的な向きになるように誘導する。
3・分離: 各ユニットが隣接ユニットのと衝突しないように誘導する。 

先ずそれっぽい物体を用意
この船的な物体にRigidbody2Dを付け、物理動作を実現。
この船的な物体は、直進するための推進力と、曲がるための操舵力のみを持っている。(任意の方向に力をかけることが出来ない。)
hune
船には視界がある。(図の赤斜線の部分) 

この範囲内に入った物体の位置と速度を調べて平均値を出した後視界内物体の数で割って平均の位置と向き情報を入手する。その向きと位置に行くように推進力と操舵力をかければ結合と整列ができているはず。
分離、これは船的な物体に近付き過ぎたら遠ざかるような操舵力をかけることで可能らしい。
以上、色々と調整したらこうなった。
無題
お~集団行動してる。かわいい。


 プレイヤーが赤い物体を動かしている。他の全ての物体は赤いのを先頭とした集団についていっている形となる。結合と整列はできていると思われる。しかし、

ray2
 
この密集率!「分離」が上手く行ってない! AIの難しさを感じさせられた。





でも眺めていると、スイミー的な何かを感じますね。かわいいと思います。 

BoidsはUnityGameUploaderにアップしたので実際にやってみて楽しんでください。
http://unitygameuploader.jpn.org/game/4383.html 

新歓展示でも展示します。新歓展示は4月8日と4月10日S516にて! じゃんけんに勝ち続けるゲームもよろしくお願いします。



( ͡° ͜ʖ ͡°)AIを感じていただければ

( ͡° ͜ʖ ͡°)幸いです。 




ご清聴ありがとうございました。 



次回は何スターのアルゴリズムなんだ、、、、

Unityにおける天地創造のおはなし




はじめましてアカテツ科(赤鉄科、学名:Sapotaceae)です。稚拙ながらブログを書きます。
CG^2とCG^3の統合後の研究室名は"RogyGames"となったそうですよ。最高のゲームをつくろう。

私は4月よりロ技研に入り、プログラミングとそれによるゲーム作りの勉強をしています。使っているのはUnityです。何故かというと楽だからです。勉強している言語はC++です。UnityではC#とJavascriptとBooしか使えないのですが、なんかかっこいいので取り敢えずC++の勉強を続けます。技術的な事はC++で学ぶことになりそうです。C++では今のところこんなものしか作っていません


先月(10月上旬)に開催されていた工大祭においては、ソルダー棒()、太陽系シミュレーターSpace Journeyというゲームを展示していました。 ゲーム名から飛べるので遊んでみてください。




Unityの導入っぽい記事が見当たらなかったので宣伝兼ねて紹介します。 Unityではドラッグアンドドロップでいともたやすくモーツァルトを表示することができます。すごい。

mozart


UnityにはRigidbodyという物が存在します。これをモーツァルトにつけることによって、モーツァルトが物理的な力の影響をうけるようになります。ここでは2Dゲームを作る設定にしているので、Rigidbody2Dを付けてみます。質量を1に、重力加速度を1に設定してみます。

mozart

そうすると、画像のようにモーツァルトが元の位置(上)から落ち始めます(下)。重力のせいです。これまでの操作はマウスだけで行うことが出来ます。Unityすごい。

Unityには他にも多数のゲーム作りに必要な機能があり、それらを無料で使うことができます。Asset Storeなる所謂素材を外部から手に入れられる所もあります。私は使ったことがありません。mozart
↑Spring Joint 2Dで無残にも振り回されるモーツァルト
 

モーツァルトをボタンによって自分で操作したい場合、スクリプトを書きます。工大祭まで私はJavascriptを使って書いていたのですが、これからはC#で書くことに決めました。見た感じあまり変わらないので多分大丈夫だと思います。
例えば
transform.Rotate(/*Vector3.eulerAngles*/);
という文字列を書き込むと、モーツァルトが回り始めます
詳しいことは日本語字幕付きのスクリプト講座が公式であるのでそこで学ぶことができます。


マルチプラットフォームもUnityの強みでしょう。Unityで作ったゲームはWindows、MacOSX、Linux、コンソールゲーム機、iOS、Android等用に簡単にビルドすることが可能です。 

ゲーム作りに興味がある けど何をすればいいのか分からないという皆さん、Unityを始めてみてはいかがでしょうか。おすすめです。




今度の冬コミでRogyGamesが出展します。多分私も出します。私は円が存在理由を求め旅に出るゲームを 作っています。以上です。
ギャラリー
  • ABUロボコン結果報告
  • スマホから部屋の電気をつけてみた
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • たのしいロボット帝国 製作物紹介
記事検索
最新コメント