LoginSignup
2
1

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

Last updated at Posted at 2024-02-22

概要

メタバースを使った、ドローン自動運転シュミレーターを提供します。

詳細

エージェント(ドローン)が環境で、自動運転するシュミレータを作り、結果をwebsocketに出力、neosvrで受け取り、BOXを移動させる。
websocketサーバーは、elixirで準備します。
エージェントと環境は、Plunkerで提供します。
設定は、ドローンが、8の字飛行運転を続けるシュミレーターです。
各ポイントは、以下です。

var point1 = {
  'x': 50,
  'y': 100
};
var point3 = {
  'x': 50,
  'y': 200
};
var point2 = {
  'x': 250,
  'y': 100
};
var point4 = {
  'x': 250,
  'y': 200
};

ドローンは、ステートマシンを持っていて、ポイントをクリアすれば、次のポイントに向かいます。
ドローンは、X,Yを得て、自分で判断します。
環境は、60fpsで更新し、ドローンを移動し、位置を更新します。
環境は、Box2dです。2軸しかありません。
環境には、重力をかけています。
ドローンは、位置を受け取り、方向量ベクトルを出力します。
ドローンは、PID制御されています。
2個使っています。

var Agent3 = function() {
	this.err2 = 0;
  this.err = 0;
  this.P = 0;
  this.I = 0;
  this.D = 0;
};
Agent3.prototype.get_action = function(setPoint, input) {
  var Kp = 100;
  var Ki = 22;
  var Kd = 22;
  var dt = 0.01;
	this.P = setPoint - input;
  this.I += this.P * dt;
  this.D = (this.P - this.err2) / dt;
	var u = Kp * this.P + Ki * this.I + Kd * this.D;
	this.err2 = this.err;
	this.err = this.P;
	return u;
}

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

写真

2024-02-22 02.08.26.jpg

成果物

以上。

2
1
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
2
1