jsk-ros-pkg / jsk_robot

jsk-ros-pkg/jsk_robot
https://github.com/jsk-ros-pkg/jsk_robot
73 stars 97 forks source link

[Fetch] 音声を使用する実験中に音声で喋るノードが喋ると実験を邪魔する #1733

Open sktometometo opened 1 year ago

sktometometo commented 1 year ago

音声を利用する実験をする際に、以下のノードが勝手に喋るために動画の撮影をやり直す必要があることがある。 実験中には喋らないような機構を用意したい。

他にあれば追記お願いします。

sktometometo commented 1 year ago

デバッグで使用するsound_playノードとデモで喋らせるsound_playノードを分けるべき?

sktometometo commented 1 year ago

/tweetノードはrespawn=trueのため、rosnode kill /tweetしても復活してしまう.

k-okada commented 1 year ago

ナルホド。tweet -> sound_play の間にmux 入れてON/OFF切り替えられないかな。

◉ Kei Okada

2022年11月18日(金) 15:26 Koki Shinjo @.***>:

/tweetノードはrespawn=trueのため、rosnode kill /tweetしても復活してしまう.

— Reply to this email directly, view it on GitHub https://github.com/jsk-ros-pkg/jsk_robot/issues/1733#issuecomment-1319601538, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADYNXBOMDC62VBTZJJ7IBTWI4OOXANCNFSM6AAAAAASEEQ6YA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

sktometometo commented 1 year ago

/robotsound/goal に mux入れる感じですかね

sktometometo commented 1 year ago

アイディア的には

みたいなのを用意するという意味合いですよね, mux だとアクションの切り替えが大変になるのでノードをそもそも分けてしまった方が使用時にするべき作業がシンプルで使いやすいと思うのですがいかがでしょうか?

knorth55 commented 1 year ago

tweetはしゃべっていなくて tweet_warningとかです

knorth55 commented 1 year ago

で,ここらへんの話はどうだろう? https://github.com/jsk-ros-pkg/jsk_robot/issues/1724

dynamic_reconfigureでvolumeを0にしようとおもっているんだけど,そもそもactionすらたたかないほうがいいのかな. audible_warningではenableというdynamic_reconfigureがあって,それをfalseにすると黙ります. tweet_warningrespawnしていないので,rosnode killで黙ります. ただtweet_warningにもenableというdynamic_reconfigureを与えてもいい気がします.

sktometometo commented 1 year ago

tweetはしゃべっていなくて tweet_warningとかです

tweet_warning の実体ってどこにありますか?

fetch@fetch1075:~/ros/melodic/src$ grep -ir tweet_warning
fetch@fetch1075:~/ros/melodic/src$ 
knorth55 commented 1 year ago

jsk_robot_startup/lifelogかな

https://github.com/jsk-ros-pkg/jsk_robot/pull/1725

sktometometo commented 1 year ago

で,ここらへんの話はどうだろう? #1724

dynamic_reconfigureでvolumeを0にしようとおもっているんだけど,そもそもactionすらたたかないほうがいいのかな. audible_warningではenableというdynamic_reconfigureがあって,それをfalseにすると黙ります. tweet_warningrespawnしていないので,rosnode killで黙ります. ただtweet_warningにもenableというdynamic_reconfigureを与えてもいい気がします.

まったく喋りたくないわけではなくて、実験ノードは喋らせたいのでvolume変えるのは違いかと思います。

knorth55 commented 1 year ago

volumesound_playではなくて,各ノードが送るactionに記述されています. なので,audible_warningとかtweet_client_warningだけが黙ります.

https://github.com/ros-drivers/audio_common/blob/ea45179ca7e1cad76f096318166c291a13378a67/sound_play/msg/SoundRequest.msg#L27

knorth55 commented 1 year ago

ただvolume0でもactionがたたかれるので,それによって上書きされてしまいます. なので正しいのはaudible_warningと同じで,enableみたいなdynamic_reconfigureを作るほうが,より良い気がします. 詳しくはこちら

https://github.com/jsk-ros-pkg/jsk_robot/pull/1725

sktometometo commented 1 year ago

そちらのvolumeでしたか、各スクリプトに喋らなくするインターフェースを作る作戦はスケールしづらいと思うのですが.

sktometometo commented 1 year ago

あたらしく何か喋るものを作るたびに喋らなくするインターフェースを作る必要が出てきます

knorth55 commented 1 year ago

それは増えてから考えたらいいのでは,と思うが... muxも結局分類していって,増える未来しか見えないし,とりあえず手っ取り早いほうでいいのでは. とりあえずrosnode kill /tweet_client_warningdynamic_reconfigureで臨むことはできるはず

sktometometo commented 1 year ago

よければついでに伺っておきたいのですが、 /tweet_client_hogehoge ってそれぞれどういう用途のものですか?

https://github.com/jsk-ros-pkg/jsk_robot/blob/ee8662bafc16cc0d1af38b2994ff51990367d052/jsk_robot_common/jsk_robot_startup/lifelog/tweet.launch#L60-L79

knorth55 commented 1 year ago

muxでもいいが,もともと僕らがやりたかったことはvolumeを下げることがなので,やりたいことが違うね.そもそも. 黙らせたいわけではなく,静かにさせたいなので. で,黙らせるにはmuxがいいかと思います.

knorth55 commented 1 year ago

tweet_client_warningがdiagnosticsに基づいてtweetしているやつ. これがだいたい定期的に写真撮っているノードです.写真撮るときにしゃべります.

tweet_client_uptimeは起動している時間に応じてTweetしているやつです. Fetchでこれが正しく動いていない気もしますが,たまにtweetして,そのときにしゃべります.

tweet_client_worktimeはユーザがログインしている時間に応じてTweetしているやつです. Fetchでこれが正しく動いていない気もしますが,たまにtweetして,そのときにしゃべります.

tweet_client_tabletは使われていませんが,tabletからTweetするようになっていたものです. いまは何もしていません.

北川がやっている限りだと,tweet_client_warningを止めるだけで黙った気がしますが,上3つは止めてもいい気がします.

sktometometo commented 1 year ago

なるほど、ありがとうございます。あとdevelop/fetchブランチだと jsk_3rdparty/rostwittertweet_image_server.py も起動していてこいつも喋りそうなコードあるんですけど使っていますか?

https://github.com/jsk-ros-pkg/jsk_robot/blob/699948413720871c8537c29a8438fd5d5e2261d9/jsk_robot_common/jsk_robot_startup/lifelog/tweet.launch#L30-L36

https://github.com/jsk-ros-pkg/jsk_3rdparty/blob/a8464dc6dd75d6fb06bf8d6954649e9de6af770c/rostwitter/scripts/tweet_image_server.py#L129

knorth55 commented 1 year ago

rostwitterだけでは写真を撮るのが大変だったので,Actionを叩くとtweetしてくれるようにしたのがtweet_image_server.pyです. これはtweet_client.lの一部をPython化しているもので,このActionを叩くように全部していけば,ここのノードさえ黙ってくれれば,1つを黙らせるだけでいいことになりますね. それを少しやってみようかと思います.