六甲おろし制作ロボット「ラーテル」をWimmから操作するための実装です。
PC → TPIP4ボード → I2C (0x55) → Arduino Nano → Serial (19200bps) → Arduino (TVRC_main2)
↓
BTS7960 モーター x2
PCA9685 サーボ (カメラ・ベッド)
MPU6050 IMU (ベッド自動水平)
1. ビルド
wimm-implementation/Wimm.Machines.Impl.Ratel.sln を Visual Studio で開いてビルドする。
2. 配置先フォルダを作成
以下のいずれかに Wimm.Machines.Impl.Ratel/ フォルダを作成する。
%AppData%\Wimm\Machines\Wimm.Machines.Impl.Ratel\
または
{Wimmの実行ファイルと同じ場所}\Machines\Wimm.Machines.Impl.Ratel\
3. ファイルをコピー
Wimm.Machines.Impl.Ratel/
├ Wimm.Machines.Impl.Ratel.dll ← bin/Debug/net8.0-windows7.0/ からコピー
├ Wimm.Machines.TpipForRasberryPi.dll ← 同上 (依存DLL)
└ script/
├ definition.neo.lua ← wimm-script/ からコピー
├ control_map.neo.lua
├ on_control.neo.lua
└ initialize.neo.lua
4. Wimm を起動してマシン選択画面にラーテルが表示されれば完了
ラーテルは TPIP4 ボードの ネイティブDLL (TPIP4 SDK) を P/Invoke で呼び出すため、起動時に以下のエラーが出ることがある。
TPIP4 SDK のネイティブDLLが読み込めないときに発生する。原因は2つあり、両方を満たす必要がある。
- 配置場所:
TPJTwr_42.dllとその依存DLL(TPJTc_42.dllなどTP*.dll一式)を、Wimm.exe と同じフォルダに置く。 機体フォルダ(Machines/Wimm.Machines.Impl.Ratel/)に置いても効かない。Wimm は機体をAssembly.LoadFromで読むだけで、ネイティブDLLの検索パスを機体フォルダへ通していないため、OSは Wimm.exe の場所・System32・PATH からしか探さない。 - アーキテクチャ:TPIP4 SDK のネイティブDLLは x86 (32bit) 専用で、
DllImport("TPJTwr_42.dll")もx86のファイル名で固定されている。AnyCPU でビルドすると64bitプロセスで起動し、32bit DLLをロードできずに失敗する。 Wimm を x86 構成でビルド・起動すること(Wimm 本体の<Platforms>AnyCPU;x86</Platforms>で x86 を選択)。 ※ x64版DLL(TPJTwr64_42.dll等)も SDK には存在するが、ファイル名が64付きでDllImport名と一致しないため使えない。
dll/ の参照DLL(特に Wimm.Machines.TpipForRasberryPi.dll)が古く、Ratel.cs が呼び出すコンストラクタを持っていない場合に発生する。
Wimm 本体を更新したら、dll/ の3つ(Wimm.Common.dll / Wimm.Machines.dll / Wimm.Machines.TpipForRasberryPi.dll)を同じビルドの最新版にまとめて差し替えること。3つはバージョンを揃える(片方だけ古いと型・メソッドの不一致でクラッシュする)。
設計・通信仕様・ロードマップについては 仕様書.md を参照してください。