toppers / athrill-target-v850e2m

v850e2m Target dependencies for Athrill
Other
6 stars 4 forks source link

athrill側がbusyループした際でも実時間で通知を行う仕組みの導入 #12

Closed ytoi closed 4 years ago

ytoi commented 4 years ago

現状EV3RTl側でbusyループを行うと、Unity側に10msec通知ではなく、PCの速度によって通知に数百msecかかってしまう。 Unity側を止める場合でも、時間での差が大きくなるため、一定時間EV3RTトリガの通知がない場合には、athrill側に用意した通知補完用スレッドにて通知を行うようにする。 送られるデータセットはEV3RT側の時間軸で10msec毎に設定されるため、補完される通知ではしばらく同じ内容(シミュレーション時間含む)のデータが送信されることになる。Unity側では通知に対して時間が進んでいないことを検出してタイムスケールを調整することでBusyループでも時間差の補完を少なくすることができる。

本機能はdevice_configで有効化できる。 以下の指定が必要。これらの指定がない場合は従来の動作で動作する。

DEVICE_CONFIG_COMPLEMENTAL_TX_SENDING 1 DEVICE_CONFIG_RESET_AREA_OFFSET 68 DEVICE_CONFIG_RESET_AREA_SIZE 20

従来モードでCPU Busyにした場合の通信。ひしがたのマークがathrill側からUnityへの通信回数。1秒間に2回くらいしか通信できていない。

別スレッド モードOFF  cpu busy fps可変

今回の動作モードでCPU Busyにした場合の通信。CPU Busyでも1秒間に90回くらいの通信ができるようになっている。

別スレッド モードON  cpu busy fps可変

--

tmori commented 4 years ago

以下でマージしておりますので,クローズします. https://github.com/toppers/athrill-target-v850e2m/pulls?q=is%3Apr+is%3Aclosed