open-rdc/orne_navigation

yp-spurの制御用プロセスが突然停止する

Closed this issue · 8 comments

ユーザーのプログラムとは別にyp-spurの制御用にypspur-coordinateというプロセスが起動している必要がある。
しかし、以下のメッセージを出して頻繁に停止してしまっているため何らかの対処が必要

Connection to /dev/ttyACM0 was closed.
Command analyzer stopped.
Trajectory control loop stopped.

メッセージを見る限りではUSB接続が寸断されているようにもとれますが、OSのログを確認してもそのような形跡は見られない。
ユーザープログラムではないのでデバッグは困難だと判断し、プロセスが死んだら強制的に再起動をかけることで暫定対処する。

通信障害からの復帰機能を実装
open-rdc/cit_adis_imu-release#3

ypspurのクライアントプログラムには通信障害からの復帰機能を追加していたが、依然としてypspur-coordinatorは手動で再起動する必要があった。
そこで #20 の修正によりypspur-coordinatorの起動及びプロセス監視スクリプトを追加した。

./t-frog.sh

で起動することによりypspur-coordinatorのプロセスが停止した場合に強制的に再起動させることができる。

これによりデバイスの接触不良や緊急停止ボタンを押した後の自動復帰が可能になった。

配線の接触不良を直したところ発生頻度を抑えることが出来ました。
これで、バッテリーの残量にさえ気をつければ滅多にypspurのプロセスが停止することは無くなりました。(ゼロではない)

実用上問題ない範囲内に収まっているのでこのタスクを完了とします。

問題が再発して、発生頻度が上がって来ています。
原因を究明している最中ですが、どうやら以前の発生原因とは異なるようです。

Aバッテリーで動かした際に挙動が不安定になるという疑惑があります。
今後、検証実験などを行う予定です。

バッテリーの種類ではなく使用するPCの種類により変化しているようです。

公式ページで情報を確認したところ、LinuxカーネルのバージョンによってはFTDIチップのドライバにバグがあり、通信ができなくなるということがわかりました。
@DaikiMaekawa の環境では動作しないのはこれが原因だと思います。
共有PCを使用している限りは発生していないのでこのIssueを閉じます。