本文へスキップ

クイックスタートVerseGripスタイラス

VerseGripsは、Inverse3 。この記事では、VerseGrip Stylusのセットアップ手順とその機能について概説します。

ヴァースグリップ・スタイラス

VerseGrip StylusInverse3 、独自の高速ワイヤレス通信技術により、オリエンテーショントラッキングとインハンド入出力(I/O)を提供します。様々なアプリケーションに対応できるよう設計されています。

主な特徴は以下の通り:

  • 2つのユーザー入力ボタン
  • 1キャリブレーションボタン、
  • 電源/スタンバイボタン×1
  • 2インジケーターRGB LEDライト
  • 10-12時間のバッテリー寿命
  • 充電用USB-c接続
  • 最大1KHzのワイヤレス通信速度
  • 1つのバンドで最大8個のVerseGrip Stylusをドングルにペアリング可能

VerseGrip Stylusの外観は、(1) Inverse3 ジンバルに装着するボールコネクター、(2)(3)入力ボタン、(4)USB-C充電ポート、(5)キャリブレーションボタン、(6)ステータスLED、(7)電源ボタンの7つの主要機能を備えている。

カスタマーサポート

お使いのデバイスやその操作についてご質問やご不明な点がございましたら、弊社サポートチームまでお問い合わせください。VerseGripスタイラスには、複雑な独自のワイヤレス技術が搭載されています。デバイスを開けると保証が無効になり、操作できなくなる場合があります。輸送時間の延長や高額な修理を避けるため、デバイスを開けないでください。

VerseGripスタイラスのセットアップとキャリブレーション

このセクションでは、ドングルの接続、VerseGrip Stylusの電源オン、キャリブレーションの手順について説明します。

セットアップ

  • ドングルをコンピュータのUSBレセプタクルに差し込む。
  • ハンドルは動かないように平らな場所に置き、ボタンは上に向け、ボールコネクターはスクリーンに向ける。

電源オンとキャリブレーション

  • 電源ボタンを1回押します。ステータスランプが赤色に変わり、その後青色に変わります。青色は、デバイス内のIMUが自己校正中であることを示します。
  • 自己較正後、ステータス・ライトは0.5秒に1回赤色に点滅します。これはスタンバイモードです。
  • いずれかのボタンを押して、スタンバイモードからデバイスを起動します。起動中はステータスライトが緑色に点滅し、その後緑色の点灯に変わります。ワイヤレスにデータを送信中です。
  • 電池残量が少なくなると、VerseGripスタイラスは2分ごとに電源が切れますので、すぐに充電してください。

再校正

  • 再キャリブレーションを行うには、キャリブレーションボタンを3秒間、またはシミュレーションで方位がずれたことが確認できるまで押し続けます。

スタンバイと電源オフ

  • 電源ボタンをもう一度押すと、スタンバイ・モードに戻ります。ステータス・ライトが赤くなり、2秒ごとに点滅し、データ通信が停止します。
  • VerseGrip Stylusの電源を切るには、電源ボタンを5秒間押したまま放します。離すと、ステータスランプが消え、何も表示されなくなります。データの送信は停止します。

充電

  • USB-C充電レセプタクルでVerseGrip Stylusを電源に接続します。
  • 電源に差し込むと充電ランプが青く点灯し、満充電になると急速に青く点滅します。電源に接続すると、デバイスが起動し、スタンバイ状態になります。

警告:バッテリーを完全に放電させないでください。電池が消耗すると、充電が維持できなくなることがあります。この場合、VerseGrip Stylusはプラグに接続されている限り動作し続けます。これは、2024年8月から12月の間に出荷されたVerseGrip Stylusデバイスのみの問題です。この問題を修正するファームウェアのアップデートをご希望の場合は、Haply サポートまでご連絡ください。

ステートとライト・インジケータ

ステータス・ライトの色と動作
赤、ソリッドコンポーネントの初期化保留
ブルー、ソリッドハンドルのIMUが自己校正中
赤、2秒ごとに点滅スタンバイモード。データ通信はできない。
緑、2秒ごとに点滅ノーマルモード、自動的に無線にデータを送信する。
ライトなし、表示なし電源が切れている。
充電表示灯の色
ブルー、ソリッド充電
青色、急速に点滅これは、デバイスが完全に充電されていることを示す。
ライトなし、表示なしデバイスが充電されていない

サンプルコード

C++でヴァースグリップ・スタイラスを使う簡単な例を紹介しよう。

#include <external/libhv.h>

#include <nlohmann/json.hpp>

#include <chrono>
#include <cstdio>
#include <string>

using namespace hv;
using json = nlohmann::json;

// Procedure to get the first detected and available Wired VerseGrip Stylus device id
std::string get_first_verse_grip_device_id(const json &data) {
const auto& vgs = data["wireless_verse_grip"];

if (vgs.empty()) {
return "";
}

return vgs.items().begin().key();
}

int main() {
const auto print_delay = std::chrono::milliseconds(100);
auto current = std::chrono::high_resolution_clock::now();
bool first_message = true;
std::string device_id;

WebSocketClient ws;

ws.onmessage = [&](const std::string &msg) {
json data = json::parse(msg);

if (first_message) {
first_message = false;
const std::string first_id = get_first_verse_grip_device_id(data);

if (first_id.empty()) {
printf("no Wireless VerseGrip found.\n");
ws.close();
return;
}

device_id = first_id;
}

if (device_id.empty() || !data["wireless_verse_grip"].contains(device_id)) {
return;
}

const auto now = std::chrono::high_resolution_clock::now();

if (std::chrono::high_resolution_clock::now() > current + print_delay) {
current = now;
const json state = data["wireless_verse_grip"][device_id];

printf("Rotation : { x:%f, y:%f, z:%f, w:%f }, Hall:%i, Button : [%d, %d, %d], Battery: {%f}\n",
state["orientation"]["x"].get<float>(),
state["orientation"]["y"].get<float>(),
state["orientation"]["z"].get<float>(),
state["orientation"]["w"].get<float>(),
state["hall"].get<int8_t>(),
state["buttons"]["a"].get<bool>(),
state["buttons"]["b"].get<bool>(),
state["buttons"]["c"].get<bool>(),
state["battery_level"].get<float>());
}
};

ws.open("ws://localhost:10000");

printf("Press ENTER to stop...\n\n");
while (std::cin.get() != '\n') {
}

if (ws.isConnected()) {
ws.close();
}

return 0;
}