こんにちは~~~
ロボコン出身者ならば、DualShockシリーズのコントローラはかなり身近だったのではないでしょうか?私もその一部で、DualShock3の接続設定によく悩まされたのを思い出します。
半年前に、PlayStation 5が発売されたついでにDualSenseというコントローラも新しく新調されましたよね。「もうDualShockって呼ばないのか。。。!」と驚愕した覚えがあります。従来のDualSenseでは、人が受け取れる出力機能がフルカラーLEDと表現力の低い振動だけであり、コントローラを見ずにわかるのは振動だけでした。
それに比べてDualSenseコントローラでは、アダプティブトリガーと触覚フィードバックの機能が追加されました。アダプティブトリガーは、L2/R2にあるトリガーを押し込める強さが変化する機能です。触覚フィードバックは、コントローラの振動の表現力が向上したことで、車の振動感や砂の上を歩く振動みたいなのが表現できる機能です。
DualSenseの特徴は何か
(旧)まず今まで、なぜDualShock系が過去にロボット操作に使われていたかというと、Analog入力機能が非常に豊富だったためだと考えられます。ほぼすべてのボタンが感圧ボタンだったため、移動速度や射出力などを手軽に変更できたことに大きな利点がありました。また、身近に所持している人も多く存在していることから操作性に慣れており、UI設計もしやすいんでしょうね。
(新)それに対しDualSenseでは、入力機能をそのままに備えていながら、機体の曖昧な状態を振動やトリガーから受け取れることもできます。振動やトリガーの硬さ刺激は、手元を見ること無くAnalogな値を直感的に確認できる特徴があります。したがって、今まではロボットへのAnalogな入力のみに特化していたのが、ロボットからのAnalogなフィードバックを受け取れるようになり、遠隔操作の可能性が向上したわけです。
つまりロボットに利用できた場合、より便利になると予想されます!
どんな状況で使えそうか
ということで、どんな場面で使えそうかを検討してみました。下記のアイデアは全部を同時に採用するわけでなく、ロボットの用途に合わせて適宜選択するという感じです。
- モノを把持しているときの強さが、トリガーから伝わってくる
- 距離センサなどで得た値を振動の強さで伝達
- 電池の状態によって、トリガーがスカスカになってくる(トルクの減少通知)
- 車体に加わる振動パタンを手元に再現する
- 車体にかかる傾斜パタンを、左右の振動力の差で表現(段差への乗り上げ)
- なにか射出する際に、タイミングが分かるようにトリガーの硬さが変化
- ロボットの処理内容と振動を関連付けておき、処理段階を伝達
- 複数のロボットが関わる際、別ロボットのタスク終了を伝達
おわりに
こんなことをツラツラと書きましたが、まだ振動フィードバックとアダプティブトリガーってSteamとかじゃ対応していないんですよね。つまりマイコンから弄るすべもあまり明かされていないってことで、すぐに応用できるのか不明です。
ということで、今後はDualSenseをESP32で操作する方法を調査していくことにします。