LoginSignup
3
0

Websocketで、異空間通信。その4

Posted at

概要

メタバースを使った、ライントレースシュミレーターを提供します。

写真

image.png

詳細

エージェント(ローバー)が環境で、ライントレースするシュミレータを作り、結果をwebsocketに出力、neosvrで受け取り、BOXを移動させる。
websocketサーバーは、elixirで準備します。
エージェントと環境は、Plunkerで提供します。
設定は、ローバーが、ライントレースを続けるシュミレーターです。

var Agent = function() {
  this.act = 2;
};
Agent.prototype.get_action = function(observation, reward, done) {
	var res = this.act;
	if (observation[3] < 100)
	{
		res = 0;
	}
	else
	{
		res = 1;
	}
	return res;
}
Agent.prototype.l = function() {
  this.act = 0;
}
Agent.prototype.r = function() {
  this.act = 1;
}

画面の下にある5つのグレーがセンサーです。
ちなみに、aは、回転角、xyzは、座標です。

image.png

10ミリ秒毎にagentが呼び出されて、アクションを求められます。
その際、センサーの値だけが送られます。

r = agent.get_action(observation, reward, done);

observation: [255, 255, 0, 0, 0]
reward: 1.0
done: false
その値でagentがアクションを返します。
アクションは、2が真っ直ぐ、0が右、1が左です。

環境は、60fpsで更新し、ローバーを移動し、位置を更新します。
image.png

ローバーは、センサーの値を受け取り、方向量ベクトルを出力します。

さらに、ローバーの位置情報をwebsocketで、垂れ流しします。
neosvrは、ローバーの位置情報をwebsocketで受け取り、BOXを移動させます。

成果物

以上。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0