Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pr2/fetch] Tweetのwarningの内容がaudible warningとtweet_client_warning.lとで被る #1562

Open
iory opened this issue Aug 18, 2022 · 5 comments

Comments

@iory
Copy link
Member

iory commented Aug 18, 2022

PR2とfetchでテストしている機能としてdiagnosticsの内容を話すaudible_warningというノードがあります。
jsk-ros-pkg/jsk_common#1607

このaudible warningでは、blacklistを与えることで話すwarningをフィルタリングしています。
https://github.com/knorth55/jsk_robot/blob/pr1040/jsk_pr2_robot/jsk_pr2_startup/jsk_pr2_warning/warning_blacklist.yaml

また、transformノードでtweetするtopicをpublishするようにしています。
https://github.com/knorth55/jsk_robot/blob/ceced0b80fa24e1cd73426f180703b9d47b30df5/jsk_pr2_robot/jsk_pr2_startup/pr2.launch#L215-L226

以前からあるtweet_client_warning.lでは簡易的な文字の対応をとることでdiagnosticsをtweetしていますが、warning_blacklist.yamlのようにパラメータで与えるものではなく、プログラムに直書きで指定する方法をとっています。

(defun diagnostics-cb (msg)
(let ((diagnostics (make-hash-table :test #'equal))
(tm (ros::time-now))
status id)
(ros::ros-debug (format nil "~0,3f diagnostics_msgs~%" (send tm :to-sec)))
(dolist (status (send msg :status))
;; diagnostic_msgs::DiagnosticStatus::*WARN*
(when (>= (send status :level) diagnostic_msgs::DiagnosticStatus::*WARN*) ;; diagnostic_msgs::DiagnosticStatus::*ERROR*)
(cond ((substringp "/Motors" (send status :name))
t) ;; skip motors
((substringp "/Other/Accelerometer" (send status :name)) t)
((substringp "/Other/Pressure" (send status :name)) t)
((and (string= "/Computers/Network/Wifi Status (ddwrt)" (send status :name))
(string= "Updates Stale" (send status :message))) t)
((and (string= "/Computers/Network" (send status :name))
(string= "Error" (send status :message))) t)
((substringp "/Peripherals/PS3 Controller" (send status :name)) t) ;; fetch joystick warning
((position #\/ (send status :name) :count 2) ;; check depth of name
(setq key (subseq (send status :name) 0 (position #\/ (send status :name) :count 2)))
(when (> (length (send status :name)) (length (gethash key diagnostics)))
(setf (gethash key diagnostics) (cons (send status :name) (send status :message)))
) ;; when
))
)) ;; when / dolist

これらの内容が被るため、
https://twitter.com/pr2jsk/status/1560109698900103168
https://twitter.com/pr2jsk/status/1560109263707521024
これらのtweetのようにほぼ同じ内容のものをtweetしてしまうという問題があります。また、warning_blacklistでフィルタリングした内容をtweet_client_warning.lがtweetするということもあります。

@k-okada
Copy link
Member

k-okada commented Aug 18, 2022 via email

@iory
Copy link
Member Author

iory commented Aug 22, 2022

ありがとうございます。
次のようなシステム構成図を作成し、処理の流れを可視化しました。
/tweet_client_warningと異なるのはtweetする内容をオレンジ色で囲ったParamによって指定できる点と、その指定するparamに正規表現を用いることができる点、フィルタする場合にdiagnostics内部のvalueも与えることができる点、/robotsoundをpublishするためロボットに喋らせることができるという点になります。
Screen Shot 2022-08-22 at 19 06 06

2)新しい物を作った時は,古いものも包摂するインクルーシブなものがサステイナブルですよね.コードを増やして機能を増やすのは当たり前で,機能が増えるけどコードは同じ,というのが良いですよね.本当は,機能が増えてコードが減るのがサイコーです.

こちらに関しては、上記の図を見ると古いものも包摂するインクルーシブなものがサステイナブルとなっています。
後者の本当は,機能が増えてコードが減るのがサイコーです.という点に関しては残念ながらそうはなっていないです。

@k-okada
Copy link
Member

k-okada commented Sep 3, 2022 via email

@knorth55
Copy link
Member

knorth55 commented Sep 8, 2022

メモ:

audible warningの内容を人間だけじゃなくて,ロボットが聞いて作業を助けてくれるとかなるといいなと思いました.
PR2が作業を行い始めるが,目の前に物体があって動けないなどのaudible_warningがでて,それに合わせてほかのロボットが助けてくれるような.

@tkmtnt7000
Copy link
Member

メモ:

audible warningの内容を人間だけじゃなくて,ロボットが聞いて作業を助けてくれるとかなるといいなと思いました. PR2が作業を行い始めるが,目の前に物体があって動けないなどのaudible_warningがでて,それに合わせてほかのロボットが助けてくれるような.

僕の卒論の取り組みをうまく拡張するとできそう、という話になりそうだなと思いました

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants