すごいひまつぶし

メモ書き用

特定のソフトの文字化け

ランス10や、vocalshifter_le.exeが文字化けしたので対処方法をメモしておきます。

(Windows11)
1. コントロールパネルから時計と地域をクリック

 

2. 地域をクリック


3. 管理タブから「システム ロケールの変更」をクリック


4. 赤枠のチェックを外して、OKを押すと再起動を促されるので従う。


これで治りました。

 

【VRChat】工学ド素人がDIYトラッカーを作ってみたよ【SlimeVR】

VRChatで使えるトラッカーを自作する!!!!

こんにちは。えねこのきつねです。

今回は、低コストでトラッカーを作ることはできないか?と思い立ち、実際に作ってみました。

時は2025年8月

VRChatを楽しむためにフルボディトラッキングを実現したいなぁ、と思っておりました。

しかし、私自身はすでに「Meta Quest 3」を持っているものの、「トラッカー」はとにかく値段がする。既存の専用トラッカーがある「PICO4」においても、最初から買うにはお高い金額(トラッカーセットで10万近い)という現実がありました。

PICO 4 Ultra + 足首用Motion Tracker + 腰用Motion Tracker フルボディセット

※トラッカー単体購入しようかなと思いましたが、「Meta Quest 3」に対応していなさそうだったのでやめました。

参考情報の収集

調べていると最初に目についたのは以下の記事でした。

【SmileVR】というソフトを通しつつVRChatでトラッキングするという記事をみつけました。
xxxcloss.hatenablog.com

留意:ジョイコン、スマートフォンによるトラッキングは可能ですが、使用するデバイスに制限されるため、結果が大幅に劣ると【SlimeVR】のDocsに記載がございました。

「へぇ、そんなことできるんだ…」と思っていましたが、
【SlimeVR】ってなんだ…?

より【SlimeVR】について詳しく調べてみると、Docsに以下のような内容が書いてありました。

「SlimeVR は、仮想現実(VR)における全身トラッキング(FBT)を実現するオープンハードウェアセンサーとオープンソースソフトウェアのセットです。」
「このプロジェクトは、カスタマイズ可能でハック可能、ユーザーのニーズに合わせて変更できるシステムの構築を基盤としています。」

 

……

 

えねこ「…つまりどういうことですか?」

謎の声「VRのトラッカー作れるってことだよバカ。」

 

……

 

VRのトラッカー作るってマジ?」(情弱)

 

さらに調べると、実際に使ってみた動画があるようでした。

※以下は、 2022年10月に投稿されたSlimeVRと「BNO08X」のセンサーを使ったトラッキングの動画の様です。

www.youtube.com

※決してケモノむちむちもふもふアバターに釣られた訳ではない

 

えねこ「…すげぇ、全然動いてるやん……」

 

……

 

「もうこれでよくないですか?」

 

と思った瞬間、私の中で自作トラッカーへの挑戦が始まりました。

(とはいっても、SlimeVRコミュニティ既存のDIYしたやつをそのまま実践してみただけではありますが…)

材料を集め、組み立てる過程は決して簡単ではありませんでしたが、達成感は格別です。自分の手で作ったトラッカーがVRChatで動く姿を想像すると、ワクワクが止まりませんでした。

以下、作成する前に必要になりそうな知識をクソど素人ながら書いていきます。

ですので、クソがなんか言ってるなーと思うような感覚で見たり見なかったりしてください。

IMUとマイコンボードについて

トラッカーを作るためには、いくつかの重要な部品が必要です。

その中でも特に大事なのが、IMU(慣性計測装置)とマイコンボードです。
それぞれについて詳しく説明します。

IMU(慣性計測装置)とは?

IMUは、体の動きを測定するためのセンサーです。これを使うことで、どの方向に体が動いているのか、どれくらいの速さで動いているのかを知ることができます。

docs.slimevr.dev

※上記のリンクには、IMUの性能がDIYコミュニティ内で調査された結果が記載されています。

 

今回は、SlimeVRが販売している「ICM-45686」と「QMC6309」というやつを購入しました。

SlimeVR Mumo Breakout Module V1 (ICM-45686 + QMC6309)

shop.slimevr.dev

 

IMUは、主に以下の2つのセンサーで構成されています。

  • ICM-45686
    これは加速度センサーです。
    体がどの方向に動いているか、どれだけ前に進んだかを測定します。

  • QMC6309(ESP非対応の可能性あり)
    これは磁気センサーです。地球の磁場を利用して、体の向きを測定します。
    これにより、どの方向を向いているのかを知ることができます。

…おそらくこの2つのセンサーを組み合わせることで精度を上げているのかと思われます。

マイコンボードとは?

マイコンボードは、センサーからのデータを処理するための小さなコンピュータです。私が使ったのは、「Wemos D1 Mini」というボードです。

マイコンボードの特徴は以下の通りです。

  • Wi-Fi機能搭載
    このボードにはWi-Fi機能がついているため、インターネットに接続することができます。これにより、VRバイスとデータをやり取りすることができます。
  • ESP-12F
    ESP8266を基にしたモジュールの一つ。
    Wi-Fi機能を簡単に利用できるように設計されているらしい…へー。
    (ESP-12Fを調べる場合は、ESP8266とほぼ同義と考えていいかもしれない。)
  • プログラミングが可能
    Wemos D1 Miniは、プログラミングを使って動作をカスタマイズできます。
    これにより、IMUに紐づけて制御できるらしい。
    だが、今まで使ったことないので知らんです。

IMUとマイコンボードを組み合わせることで、体の動きを正確に測定し、それをVRChatなどのゲームに反映させることができるみたいです。


★注意事項★
上記のマイコンボードには技適マークが無い(日本の電波法における「技術基準適合証明」を取得していないもの)ため、使用する場合は
「技適未取得機器を用いた実験等の特例制度」より、事前に開設届出を提出する必要がございます。

事前申請無しで、技適マークがない機器を使用すると電波法違反となり、懲役刑や罰金が科される可能性があります。
 ← これが技適マーク

なお、開設届出後は180日間ご利用でき、ご利用後は廃止届出を提出する必要がございます。

※マークについては以下参照

www.astina.co

トラッカー作成のための準備

以下の表に、必要な素材と費用をまとめました。

物のやつ 選択したやつ 数量 1個当り 合計金額 リンク
マイコンボード

Wemos D1 Mini
※D1 MINI TYPE-C

10 300円 3,000円 Wemos D1 Mini
IMU ICM-45686 + QMC6309
※送料1,200円
10 900円

9,000円

SlimeVR Mumo Breakout Module V1 (ICM-45686 + QMC6309)
バッテリー

※3.7vかつ奥行きが5mm以下
なのが望ましい

10   3,000円 AliExpress 804040
充電基板

TP4056 USB充電ボード

※type C

10   200円 TP4056
電源スイッチ トグルスイッチ
※High 3mm, 20Pcs
20   447円 トグルスイッチ
ダイオード ダイオード(1N5817) 50   420円 ダイオード
抵抗器 抵抗器(180K) 100   310円 抵抗器
はんだ付け用配線 家にあったやつ        
ケース 3Dプリント
※今後3Dプリンタを使う予定があるなら、中古で買った方がよさそう
      詳細は「meowCarrier」を参照してください。
ストラップ 他調達       詳細は「meowCarrier」を参照してください。
ピンヘッダ 他調達
※両端に端子があるやつ

       
チェストマウント
ベルト

options E

    2,059円 チェストマウントベルト
差し込みバックル 50mm 10   374円 差し込みバックル
PCBボード   10   300円 詳細と注文方法は「meowCarrier」を参照してください。
Anker USB Type C ケーブル ※データ通信用であること   1   740円 Anker USB Type C ケーブル

 

上記構成にした理由は、DIYコミュニティのユーザーによって実際に作成されたものをそのまま則れば失敗しづらくなるかな?ということで「meowCarrier」を参考にしました。

meowCarrier

github.com

実際に作成してみる

「meowCarrier」のREADMEに則って、注文とはんだを塗ったものが以下となります。

また、最低5つ作る必要があります。

裏面

※裏面をちゃんとはんだ付けしないと挙動がおかしくなるので注意。
2回連続で上手くいかなかったときは焦ったのだ。

なお、トラッカーの最低必要個数は5つですので、5つ以上作ります。

下記リンク参照。

docs.slimevr.dev 

 

これで、DIYトラッカーは完成です。

DIYトラッカーを作った!さぁ、VRChatをするぞ!

...ここまで出来たら、あとは体に装着するだけ…!!

 

 

ではございません。

 

 

続いて、マイコンボード「Wemos D1 Mini」にプログラミング(をアップロード)をしていく必要があります。

 

SlimeVRファームウェアのビルドと設定方法およびトラッカーへのアップロード方法については下記リンクを参照してください。

 

1. トラッカーファームウェアのアップロード


2. 環境設定

以下のインストール方法について書かれています。すべて必須です。

Visual Studio Code
「PlatformIO IDE
「Gitクライアント」


3. ファームウェアプロジェクトの設定

「platformio.ini の設定」

書き足す部分は以下のみで十分。

SSID_NAMEとPASSWORDを、
おうちで設定しているWi-Fiルータの設定にしてください。

  -DWIFI_CREDS_SSID='"SSID_NAME"'
  -DWIFI_CREDS_PASSWD='"PASSWORD"'

注意:マイコンボードは「Wemos D1 Mini」2.4GHz帯域のみをサポートするので、お使いのWi-Fiルータの設定をご確認ください。

 

「defines.h の設定」

※上記のサイトより、「defines.h」を自動設定するためのやつがあるので確認してね。
※私は 調べるのが面倒 よくわからなかったので、自分が設定した内容は以下の通りです。

#define IMU IMU_ICM45686
#define SECOND_IMU IMU_ICM45686
#define BOARD BOARD_WEMOSD1MINI
#define IMU_ROTATION DEG_90
#define SECOND_IMU_ROTATION DEG_90

#define PRIMARY_IMU_OPTIONAL false
#define SECONDARY_IMU_OPTIONAL true

#define MAX_IMU_COUNT 2

#ifndef IMU_DESC_LIST
#define IMU_DESC_LIST \
    IMU_DESC_ENTRY(IMU,        PRIMARY_IMU_ADDRESS_ONE,   IMU_ROTATION,        PIN_IMU_SCL, PIN_IMU_SDA, PRIMARY_IMU_OPTIONAL,   PIN_IMU_INT) \
    IMU_DESC_ENTRY(SECOND_IMU, SECONDARY_IMU_ADDRESS_TWO, SECOND_IMU_ROTATION, PIN_IMU_SCL, PIN_IMU_SDA, SECONDARY_IMU_OPTIONAL, PIN_IMU_INT_2)
#endif

// Battery monitoring options (comment to disable):
// BAT_EXTERNAL for ADC pin, BAT_INTERNAL for internal - can detect only low battery, BAT_MCP3021 for external ADC
#define BATTERY_MONITOR BAT_EXTERNAL
#define BATTERY_SHIELD_RESISTANCE 180 //130k BatteryShield, 180k SlimeVR or fill in external resistor value in kOhm

#define PIN_IMU_SDA D2
#define PIN_IMU_SCL D1
#define PIN_IMU_INT D5
#define PIN_IMU_INT_2 D6
#define PIN_BATTERY_LEVEL A0

 

4. ファームウェアのビルドとアップロード

プログラムのビルドと、
「Wemos D1 Mini」にアップロードする方法が記載されている。

※ケーブルの差す位置は画像のとおり。
※「Wemos D1 Mini」へのアップロードが成功すると、青いランプが光るよ。
※USBケーブルがデータ通信対応であること。充電のみの場合はケーブル買ってね。
 これのせいで原因突き止めるのに6時間ぐらいかかった。

これを作成したDIYトラッカーすべてに適応させます。

 

DIYトラッカーにプログラムをアップロードしたぞ!!

これより、最終段階に入る。さぁ、【SlimeVR】をインストールするぞ!

docs.slimevr.dev

 

インストールしたら、セットアップしていこう。

基本は上記リンクのセットアップに沿って行けば問題ないです。

 

なお、「VRChat設定に関する警告」が表示されたら、以下からいつでも確認できる。


これらは「VRChat」のオプション画面と紐づいているので、
できるだけ同じ設定にすること。

DIYトラッカーで実際に動いてみる!

youtu.be


以上。

 

※ご質問などがございましたら、コメントやMisskeyのDMよりご返信のほどお願いします!

未割当て領域を拡張する方法

こんにちは、絵猫のきつねです。

今日は未割当領域をCドライブに拡張する方法を記載します。

 

前提

まず前提として、以下の画像のように右側に未割り当て領域がある状態では
簡単に拡張できません。この場合は下部にある『手順1』に進んでください。


もし、以下のように設定されている場合は『手順2』に進んでください。

 

『手順1』

まずは未割り当て領域を、Cドライブの隣に移動しなければなりません。

そこで AOMEI Partition Assistant Standard をインストールして、未割り当て領域をCドライブの隣におきます。

 

まずは、AOMEI Partition Assistant Standardを開き、以下のような画像の状態とします。この時、回復パーティションが邪魔なので、移動する必要があります。

 

回復パーティション右クリックし、赤枠部分「パーティションをリサイズ/移動」をクリック

 

以下のような画面が出てきたら、


右側に移動し、「はい」をクリックします。

 

回復パーティションが右側に移動すれば成功です。

これを、未割り当て領域がCドライブの右側にくっつくまで移動させます。


最後まで移動した状態が以下のようになります。

後は適応など順次押していき、処理を確定します。


未割り当て領域がCドライブの隣に移動したことを確認。

 

以上で、未割り当て領域の移動が完了です。

 

『手順2』

以下をクリックします

 

 

Cドライブの隣が未割り当て領域になっていることを確認して、
赤枠のとおりにクリック

 

 

以下のようにCドライブが拡張できれば完了です。


以上です、お疲れ様でした。

Windows11からVisual Studio Codeを使ってLinuxにリモート接続する方法

こんにちは!えねこのきつねです!

今回は、タイトルの通りリモート接続する方法を記載します。

※画像はイメージ図です。

 

 

目次

pingで接続を確認

② Windows11からVisual Studio Codeを使用して接続確認

 

以下、手順です。

========================================

pingで接続を確認(設定画面から確認する場合)

まずは、ネットワークを使用しているipを確認します。

Windows

※100.XXX.XXX.XXXとします

Linux
ターミナルからhostname -Iコマンドより、アドレスを取得します。

Linux側のipアドレスを100.YYY.YYY.YYYとします

この後、pingコマンドを使用して、互いに通信できるかを確認します。

 

Windows側→Linuxへ通信

Linux側のipアドレス(100.YYY.YYY.YYY)が通るかを確認します。

ターミナルから、「ping 100.YYY.YYY.YYY」を入力

以下の画像のように通信できれば成功です。

 

Linux側→Windowsへ通信

Windows側のipアドレス(100.XXX.XXX.XXX)が通るかを確認します。

以下の画像のように通信できれば成功です。

 

② Windows11からVisual Studio Codeを使用して接続確認

まずは、Visual Studio Codeを開いて設定ファイルを開きます。

設定ファイルを開く手順は以下のとおりです。

1. CTRL + SHIFT + Pを押下
2. "Remote-SSH: Open Configuration File"を選択

3. 赤枠を選択(水色にはユーザー名が書かれているはず)

4. 以下のように設定して保存
(画像は例なので、実際には自身のホスト名、ipアドレス、ユーザ名を設定)

 

この後、以下のようにクリックします。

 

自身で設定したHostの名称が表示されるのでクリックします。
※なければVisualStudioCodeをすべて閉じた後、再度確認してください。

 

新しくVisualStudioCodeが立ち上がり、パスワードが求められるので
普段Linuxでログインしているユーザーのパスワードを入力します。

 



リモートに接続できれば、以下のような画面が出ます。


ディレクトリ配下を設定すれば完了です。


以上です。お疲れさまでした。

 

UbuntuにQt4を構築する方法

復習用。Qt4で構築する用。

 

公式リポジトリにqt4-qmakeが含まれているため、Ubuntu 18.04を使用。

 

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y wget build-essential ibssl1.0-dev qt4-qmake

sudo apt-get install -y \
    libx11-dev \
    libxext-dev \
    libxtst-dev \
    libxi-dev \
    libxrender-dev \
    libxcb1-dev \
    libx11-xcb-dev \
    libxau-dev \
    libxdmcp-dev
    
sudo mkdir /inst
sudo mkdir -p /src/qt

cd /inst

sudo wget https://download.qt.io/new_archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz -O qt.tar.gz
sudo tar -xzf qt.tar.gz -C /src/qt --strip-components 1

cd /src/qt

sudo ./configure -prefix /usr/local/qt -release -opensource -confirm-license \
    -no-declarative \
    -no-accessibility -no-qt3support \
    -no-script -no-scripttools \
    -no-javascript-jit -no-audio-backend \
    -no-sql-mysql -no-sql-sqlite \
    -nomake tests -nomake plugins

sudo make -j"$(nproc)" 
sudo make install

ここで環境変数を定義し、Ubuntuを再起動する

(例: 置き方)

vi ~/.bashrc


適応できた場合、以下のように表示される


以上で構築完了。

使用例を閲覧する用。

cp -R /src/qt/examples/ ~/(どこかのディレクトリ)/qt4_example


以上。

Ubuntu上にDockerを用意する方法

忘れそうなので書き込んでおきます。

Ubuntuを立ち上げた後、Dockerをインストールします。

参考
docs.docker.com


以下を実行する。

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Dockerコマンドを実行する際に管理者権限(sudo)を使わずに済むようにするために、以下を実行する。

sudo usermod -aG docker $USER

その後、Ubuntuを再起動し、idコマンドでdockerが存在することを確認する。

以上

 

pandasのgroupbyで指定したカラムごとの累積を作成してみた

こんにちは!
えねこのきつねです!

今回、特定の値毎に累積を詰めないかな?ということで作成してみました。

以下がpythonのソースとなります。


import numpy as np
import pandas as pd
import random 

np.random.seed(1)  # seedを1で固定
pd.set_option('display.max_rows', None) # すべての行を表示

tekitou_df = pd.DataFrame()
tekitou_df["column1"] = [int(i%10)+1 for i in range(100)]
tekitou_df["number"] = np.random.choice([0, 1], size=100)
# すべて1、0で置いたケースを作成 (確認用)
tekitou_df.loc[tekitou_df["column1"] == 1, "number"] = 1
tekitou_df.loc[tekitou_df["column1"] == 10, "number"] = 0 
# column1行の、数値の種類ごとにカウント
tekitou_df['column1_cumcount'] = tekitou_df.groupby(['column1']).cumcount() + 1
# number_cumcount
tekitou_df['number_cumsum_by_column1'] = tekitou_df.groupby(['column1'])['number'].cumsum()
tekitou_df.sort_values(["column1", "column1_cumcount"])

 

column1_cumcountでcolumn1の出現?回数を累積し、

number_cumsum_by_column1では、column1毎のnumberを累積しています。

 

イメージ図

以上、復習用でした!