mnakada / atomcam_tools

Hack tool for atomcam and wyzecam.
Other
178 stars 22 forks source link

AtomcamSwingで180°反転していると、自動追尾時の座標指示に誤りがある場合がある #71

Closed takeshi56 closed 1 year ago

takeshi56 commented 1 year ago

atomcam_tools1.5.9 AtomcamSwing 4.37.1.102

1.5.8以前からあったかも知れませんが、天井から吊るす形で運用しているswingでtoolsの検知・追尾を有効化してみたところ、 検知はうまくいくのですが、その後の待機座標が良くないのか本来は見てほしい場所とは違うところに首を振ってしまいます。

2023/04/07 11:41:23 : follow : 180 30
move 257 124
error : multiple request error
move 238 104
error : multiple request error
move 103 55
error : multiple request error
move 254 125
error : multiple request error
move 175 67
error
move 87 68
error : multiple request error
move 273 105
error : multiple request error
move 92 87
error : multiple request error
2023/04/07 11:42:44 : move : 85 53
270.000000 126.911392

2023/04/07 11:42:44 : follow : 180 30
2023/04/07 11:45:44 : move : 85 53
270.000000 126.911392

2023/04/07 11:45:44 : follow : 180 30
2023/04/07 11:48:44 : move : 85 53
270.000000 126.911392

2023/04/07 11:48:44 : follow : 180 30

現在のクルーズ設定です。

CRUISE=on
CRUISE_LIST=move 85 53;follow 180 30;

ログからは検知時の追尾ログが見て取れているのですが、待機時間に入ったときに意図しないmoveが指示されているように 見えるのですが、もしも他に見た方がよいログがありましたら教えてもらえませんか?

takeshi56 commented 1 year ago

もう一台のSwingは反転させずに運用しているのですが、こちらもクルーズログを見てみました。気になったのが、

2023/04/07 18:28:51 : move : 178 60
178.000000 59.924049

2023/04/07 18:28:52 : follow : 60 15
2023/04/07 18:29:09 : move : 178 60
178.000000 59.924049

2023/04/07 18:29:09 : follow : 60 15
2023/04/07 18:30:03 : move : 178 60
178.000000 59.924049

2023/04/07 18:30:04 : follow : 60 15
move 157 50
157.000000 49.898735

move 136 45
136.000000 45.000000

2023/04/07 18:31:11 : move : 178 60
178.000000 59.924049

2023/04/07 18:31:11 : follow : 60 15

こちらはMultipleRequestErrorが出ていないのです。180°反転しているので、クルーズとフォローする角度計算の起点が 異なっているのだと思っていますが(0°ではなく360°/180°が起点でしょうか)、この辺の値が設定出来ない値だったり するのでしょうか?

mnakada commented 1 year ago

multiple request errorはmoveコマンドの実行中、完了する前に次のコマンドが来てしまったときに出ています。 180度反転時にはpan方向355度- 指示角度、tilt方向180度 - 指示角度になります。 なのでmove 85 53の場合270 127度に移動したことにはなっているようです。

/scripts/cmd move 85 53 で85,53の位置にくるかどうか確認してもらえますか? もしこれがずれているようなら、その前の動作で原点がずれてしまってる可能性があります。

takeshi56 commented 1 year ago

わかりました。 今晩にでも確認してみます。

2023年4月7日(金) 22:25 Mitsuru Nakada @.***>:

multiple request errorはmoveコマンドの実行中、完了する前に次のコマンドが来てしまったときに出ています。 180度反転時にはpan方向355度- 指示角度、tilt方向180度 - 指示角度になります。 なのでmove 85 53の場合270 127度に移動したことにはなっているようです。

/scripts/cmd move 85 53 で85,53の位置にくるかどうか確認してもらえますか? もしこれがずれているようなら、その前の動作で原点がずれてしまってる可能性があります。

— Reply to this email directly, view it on GitHub https://github.com/mnakada/atomcam_tools/issues/71#issuecomment-1500287169, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYGNHXH4WBO2OH7SHXJVOPDXAAIUHANCNFSM6AAAAAAWWD2VKA . You are receiving this because you authored the thread.Message ID: @.***>

takeshi56 commented 1 year ago

/scripts/cmd move 85 53 で85,53の位置にくるかどうか確認してもらえますか?

コマンド実行を行ったところ、GUIにありますjpeg windowで表示される値と同じになり、乖離したカメラ位置にはなっていませんでした。

[root@carport2nd:~]# /scripts/cmd move 85 53
270.000000 126.911392

[root@carport2nd:~]# /scripts/cmd move
85.000000 53.088608 1 1

[root@carport2nd:~]#

ただし、別途cruse.logを監視していたのですが、

2023/04/10 17:13:05 : follow : 60 15
move 309 133 →こちらは絶対座標での表記なのでしょうか?実際にこの座標にカメラがパンしていて、意図しない範囲を監視しているように見えています。
error : multiple request error →このリクエストエラーは前述の「move 309 133」にかかっているのでしょうか?それとも次のmoveコマンドでしょうか?
move 59 47 →こちらがエラーになっていて、実行されないとするとクルーズ機能で意図しないカメラのパンが行われているのではないか?と思っています。
error
2023/04/10 17:14:10 : move : 85 47
270.000000 132.949371

2023/04/10 17:14:11 : follow : 60 15
2023/04/10 17:15:11 : move : 85 47
270.000000 132.949371

実際に録画された映像を見ていてもpan 309°付近に見える映像になっています。 また、Followした直後にcmd moveしたところ、

cruse.log

2023/04/10 17:36:24 : follow : 60 15
move 274 136
81.000000 43.974682

cmd moveで現在座標を表示

[root@carport2nd:~]# /scripts/cmd move
274.000000 136.025314 1 1

[root@carport2nd:~]# 

つまり、Followモードで検知した場合は、360°または180°が起点になっていないのでは無いかと思いました。

mnakada commented 1 year ago

ちょっと時間が取れずにあまりちゃんと追えていませんが、cruise.logは/scripts/cruise.shの出力のlogで、error : multiple request errorは直前のmoveに対するエラーなのですが、このmove自体は実行されます。 このエラーの出る原因ですが、cruise.shを実行しているときにwebからもアクセスしているとwebのUIの方向指示にたいするレスポンスで再度web側から指示が出てしまって多重にコマンドが発行されている状態になってしまっているようです。 さらに、反転している時のmove実行後の位置情報が反転していない座標を返してしまっているbugがあり、そのあたりでおかしな動作をしている可能性があります。 とりあえず、cruise動作を設定しているときはwebのuiを開かずにモバイルのアプリで画面を見ながら動作を確認してもらうのが良さそうです。 他にも反転時の座標計算がおかしいところがありそうなので確認してみます。 座標は全て絶対座標です。

takeshi56 commented 1 year ago

確認ありがとうございます。 座標確認時はWebGUIを開かないようにします。

RTSP/RTPやWebhook対応をしていただいているおかげで NODE-REDをベースにGooglehome(catt)との連携が出来て 安定的にatomcamの静止画や動画を確認出来ています。 お時間ある時で構いません。ありがとうございます。

mnakada commented 1 year ago

修正しました。 多分直っているはず。

takeshi56 commented 1 year ago

ありがとうございます。適用してみました。ログをしばらく見てみます。

takeshi56 commented 1 year ago

確認しました。 チルト方向の座標はちゃんと動いているようなのですが、パン方向でDetectionした際の座標が反転していると思われます。 ''' 2023/04/18 11:46:01 : follow : 60 15 detect move 47 24 47.000000 24.037979 1 1

2023/04/18 11:46:19 : move : 85 47 85.000000 47.050629 1 1

2023/04/18 11:46:20 : follow : 60 15 detect move 71 47 71.000000 47.050629 1 1

detect move 53 47 53.000000 47.050629 1 1

2023/04/18 11:46:38 : move : 85 47 85.000000 47.050629 1 1

2023/04/18 11:46:39 : follow : 60 15 '''

ちょうど良く郵便屋さんが来てくださったので、サンプルもお出しします。

https://user-images.githubusercontent.com/101503964/232658692-c945e658-b7d7-4e68-a23e-11cab628489a.mp4

最初に47に向いているところを108だと正解なんだと思いますが、少しでも参考になればと思いました。

mnakada commented 1 year ago

ありがとうございます。計算を間違えていました。 Ver.1.5.11で修正しました。

takeshi56 commented 1 year ago

確認出来ました。180°反転している状態で、追尾出来るようになりました。ありがとうございます。 あとこれは出来ればで良いのですが、detected時やfollow時のmoveの移動速度をを設定出来るようになりませんでしょうか? いまだと多分"1"になっていると思っているのですが、ここを調整したいと思うのです。一方でAtomcamSwingの検知が少々にぶい ので、追いつくには早いほうが良いだろうとは思っていますが。

takeshi56 commented 1 year ago

本件、修正箇所を見付けていただいて、うまく動作するようになりましたので、クローズとさせていただきます。ありがとうございます。

mnakada commented 1 year ago

Ver.1.5.12でmove速度指定を追加しました。

takeshi56 commented 1 year ago

ありがとうございます。早速適用しました。速度を遅くしてみたのですが、もしかしたら座標位置がずれて原点初期化する回数が減らないかなと期待しています。