Routh

使い方

基本操作

視点を回す3Dビューの何もないところをドラッグ
視点を移動・拡大右ドラッグ/ホイール(タッチでは2本指)
物体を押す・引く物体をドラッグ。黄色の線の先に向かって力がかかります
再生・一時停止スペース
1ステップ進める一時停止中に →
最初に戻すR
ロボットを追いかける3Dビュー下の「追従」
パネルを閉じるパネル右上のボタン(3Dビューを広く使えます)

右側のパネルの「操作」タブでは、各アクチュエーター(モーター)の指令値をスライダーで変えられます。「初期姿勢に戻す」を押すと、すべての指令値がモデルの初期姿勢に合わせて設定されます。

モデルを選ぶ・読み込む

上部の「モデル」から、サンプル、実在のロボット、このブラウザに保存したシーンを選べます。

実在のロボット

Google DeepMind の MuJoCo Menagerie からモデルを読み込みます。初回は数MB〜数十MBのダウンロードがあり、2回目以降はブラウザに保存されたものを使います。モデルの権利は配布元に帰属し、それぞれのライセンスに従います。

自分のモデル

「モデル」タブの「ファイルを読み込む」で、MJCF(.xml)とメッシュ(.stl / .obj)、テクスチャ(.png)をまとめて選びます。<include> で分けたファイルも一緒に選んでください。テキストを直接編集して「反映」(Ctrl+Enter)を押すこともできます。

URDF は、MuJoCo の compile ツールなどで MJCF に変換してから読み込んでください。

制御コード

「コード」タブに書いた JavaScript は、物理計算の1ステップごとに実行されます。使える変数は次のとおりです。

tシミュレーション内の時刻(秒)
dataMuJoCo の状態。data.qpos(位置)、data.qvel(速度)、data.sensordata(センサー)を読み、data.ctrl[i] に指令値を書きます
modelMuJoCo のモデル。model.nu(アクチュエーター数)、model.opt.timestep など
routh補助機能(下表)

routh の補助機能

routh.hold(kp, kd)すべての関節を初期姿勢に保ちます。位置制御のアクチュエーターには目標角度を、トルク制御のものにはPD制御のトルクを入れます
routh.joint('名前')関節の { q, v }(角度または位置、速度)
routh.setCtrl('名前', 値)名前でアクチュエーターに指令値を書きます
routh.sensor('名前')センサーの値(配列)
routh.bodyPos('名前')物体の位置 [x, y, z]
routh.keys押されているキー。例:routh.keys.has('ArrowUp')(3Dビューをクリックしてから操作)
routh.axesゲームパッドのスティック [左X, 左Y, 右X, 右Y](−1〜1)
routh.memステップをまたいで値を残すための入れ物
routh.home初期姿勢の qpos

例:倒立振子を立たせる

const x = data.qpos[0], th = data.qpos[1];
const v = data.qvel[0], w = data.qvel[1];
const u = 0.6 * x + 0.9 * v + 6.0 * th + 1.0 * w;
data.ctrl[0] = Math.max(-1, Math.min(1, u));

例:ゲームパッドで二つの関節を動かす

routh.hold();
const [lx, ly] = routh.axes;
data.ctrl[0] += 0.5 * lx;
data.ctrl[1] += 0.5 * ly;

コードでエラーが起きると自動で停止し、内容が表示されます。Ctrl+Enter で書き換えたコードをすぐ実行し直せます。

グラフ・データ・動画

保存・共有・埋め込み

<iframe src="https://routh.ai/app/?embed=1&scene=cartpole"
        width="640" height="480" style="border:0"></iframe>

サンプルは scene=(playground、arm、cartpole、quadruped、double-pendulum)、実在のロボットは robot=(例:unitree_go2、panda)で指定します。

プライバシー

Routh のシミュレーションは、すべてお使いのブラウザの中で計算されます。作成したモデル、制御コード、保存したシーン、書き出したデータや動画が当社のサーバーに送られることはありません。共有リンクは内容をURLに埋め込んでいるため、リンクを渡した相手には内容が見えます。

実在のロボットを選んだ場合、モデルのファイルを GitHub(raw.githubusercontent.com)から取得します。表示用の書体は Google Fonts から読み込みます。

お問い合わせ:info@8-order.co.jp(8-order technology, k.k.)