Open k-okada opened 2 years ago
カメラの方のテストなどを色々した後に改めて同じコードを動かしたところ、spotの胴体がアームが動く途中に下がるようになってしまい、アームの先端位置もその分ずれるようになってしまいました。以下が、IKを解いて求めた姿勢をspotに送るときに実行したコードです。
https://github.com/jsk-ros-pkg/jsk_robot/pull/1701/commits/37b49001e12752cdb8384c7dc54d5aebd6857700 と https://github.com/k-okada/spot_ros-arm/commit/2c6445b9c690a4135986e8057306bc82cb37d8a2 で対応しました.
お借りしたdynamixel、ケーブル、バッテリーとリールの写真になります。
@AyumuIwa Panorama画像が
compressed
圧縮形式で出ていないという話だったので,圧縮形式で出るようにしました. jsk-ros-pkg/jsk_recognition#2745
@knorth55 先生 ありがとうございます。試してみます。
Spotユーザは次回,外実験をしようと思います. @AyumuIwa @Kodai-Yamada 室内で傘と竿は意外と危ないということがわかったので,認識,リール抜きの動作の確認は次回外でやってみましょう.で,そのときの動画を撮ってこのIssueに貼って先輩たちをオッと言わせてみましょう(?) @AyumuIwa パノラマでCompressedImageを出すPRを@knorth55 先生が作ってくださいました.今日も話したけど今ある人認識は,人全てに対してBoundingBoxを出してしまうので,自分しかいない環境か,自分が最も近くにいて,それ以外の人は十分離れた距離にいる仮定をおいて動作コードを書いていくといいと思います.BoundingBoxをeusの中でsubscribeすることになるんだけど,難しかったら次回か来てくれたときに一緒にやってみましょう
@mqcmd196 ありがとうございます。 自分一人しかいないという仮定で一回取り組んでみます。次回のゼミまでに出来るところまでやって、わからなかった部分を明確にしておきます。
@shryt https://github.com/softyanija/jsk_demos/blob/third_eye_pc/assemble_table_pr2/script/socket_line.py
http://wiki.ros.org/message_filters#Time_Synchronizer message_filters を使って複数のtopicを同期的にsubscribeしている。 引数は順に同期を取りたいtopic、キューのサイズ、許容する遅延。 publishするために自分でインスタンスを作る時はheaderを忘れないように注意。subscribeするどちらかのtopicから取ってこればいいかな
@AyumuIwa @Kodai-Yamada @mqcmd196 今日の動画です(誰でも見れる設定にしてしまったのですが、大丈夫でしたか...??メールアドレス教えて頂ければ制限つけます)▽ https://drive.google.com/drive/folders/19REXEtoGi4Es8z1BsIXkNYE24Ov4g1ld?usp=sharing (JSK内部の方はこちらにもアップロードしておきました)
ぷちコメント ・釣竿を振りかぶった後に手を閉じる動きを入れた方が良さそう ・傘が落ちやすいので、余力があれば傘側に取り付けられるような簡単なアタッチメントを作ると良いかも(滑り止めをつけるとかでも良いかもしれません)
実験ご一緒できて楽しかったです、ありがとうございました!
@shryt
.jpg
, .json
がセットで生成されるdata_annotated_train
フォルダとdata_annotated_test
フォルダにわける(jpgとjsonはセットにすること、train6: test4くらいの割合が目安)__ignore__
_background_
ball_dataset
|-- labels.txt
|-- labelme2voc.py
|-- data_annotated_train
| |-- hoge.jpg
| |-- hoge.json
| |-- hogehoge.jpg
| |-- hogehoge.json
| `-- ...
`-- data_annotated_test
| |-- fuga.jpg
| |-- fuga.json
| |-- fugafuga.jpg
| |-- fugafuga.json
| `-- ...
$ python3 ./labelme2voc.py data_annotated_train data_train --labels labels.txt
$ python3 ./labelme2voc.py data_annotated_test data_test --labels labels.txt
ball_dataset
|-- data_train
| |-- JPEGImages
| |-- SegmentationClass
| |-- SegmentationClassPNG
| |-- SegmentationClassVisualization
| |-- SegmentationObject
| |-- SegmentationObjectPNG
| |-- SegmentationObjectVisualization
| `-- class_names.txt
`-- data_test
|-- JPEGImages
|-- SegmentationClass
|-- SegmentationClassPNG
|-- SegmentationClassVisualization
|-- SegmentationObject
|-- SegmentationObjectPNG
|-- SegmentationObjectVisualization
`-- class_names.txt
@MiyabiTane https://drive.google.com/drive/folders/1JjWq1FIQZz-oZt7ihGctsMYuDa3GCquZ?usp=sharing
ここでお願いします。
@shryt
学習させてみました。遠くでなければそこそこ識別できてそうですが、white_ball
とlined_ball
が似ているので誤認識が多い印象でした
参考までに学習の手順
git clone https://github.com/jsk-ros-pkg/coral_usb_ros.git
cd coral_usb_ros/training/labelme_voc
bash ./run.sh ball_dataset --num_training_steps 800 --checkpoint_num 800
@shryt ★使い方★ ※ CoralTPUの環境構築が済んでいると聞いているのでその前提で書きます
学習済みモデル▷semi_2022.tflite launchファイル▷semi_2022.launch ラベルファイル▷semi_labels.txt をダウンロードします
semi_2022.tflite
, semi_labels.txt
を coral_ws/src/coral_usb_ros/models
下に、semi_2022.launch
をcoral_ws/src/coral_usb_ros/launch
下に置きます
実行 カメラの立ち上げ(以下はPCカメラの場合)
$ roslaunch roseus_tutorials usb-camera.launch
coral_usbの立ち上げ
$ source ~/coral_ws/devel/setup.bash
$ roslaunch coral_usb semi_2022.launch INPUT_IMAGE:=/image_raw ## spotのカメラを使う場合は違うトピック名かもしれません
結果の表示
$ rosrun image_view image_view image:=/edgetpu_object_detector/output/image
もし認識されなかったら以下のコマンドでGUIを立ち上げてscore_thresh
をさげてみてください
$ rosrun rqt_reconfigure rqt_reconfigure
お借りしたボールは袋にいれて81C1(今日使っていた部屋)の机に置いておきます 申し訳ないのですが、来週以降私は来れないので、わからないことがあれば北川さんや大日方くんに聞いてみて下さい すぐの対応でなくてよければGitでメンションしてもらえれば対応します
@Kodai-Yamada 昨日動かなかったモバイルバッテリーを2個充電して、ゼミの机の上に置いておきました。使い方は同梱の説明書を読んでみてください。使ってみて、バッテリーの減りが異常に速いなどの問題があれば教えてください。
@MiyabiTane ありがとうございます。今度行ったときに試してみます。
ボール認識のDeepLearning結果のGoogle Driveリンク(全て)
https://drive.google.com/drive/folders/124gJjXWXRjsrkRHEZ1NJOeIK3wD7re6j
@pazeshun 用意していただきありがとうございます。どちらのモバイルバッテリーでも問題なく動きました。
@shryt @softyanija @tkmtnt7000
カメラの方のテストなどを色々した後に改めて同じコードを動かしたところ、spotの胴体がアームが動く途中に下がるようになってしまい、アームの先端位置もその分ずれるようになってしまいました。以下が、IKを解いて求めた姿勢をspotに送るときに実行したコードです。
jsk-ros-pkg/jsk_robot@37b4900 と k-okada/spot_ros-arm@2c6445b で対応しました.
spotでものをつかむのに関連する情報
動くかどうか全く確認していない&テキトーに書いたコードですが:pick-object-in-image
の使い方はこんな感じになると思います.
@shryt
#!/usr/bin/env roseus
(load "package://spoteus/spot-interface.l")
(ros::roseus-add-msgs "jsk_recognition_msgs")
(spot-init nil)
(setq *image-source* "hand_color")
(ros::subscribe "/edgetpu_object_detector/output/rects" jsk_recognition_msgs::RectArray #'cb)
(defun pick-object-in-image (image-source center-x center-y)
(send *ri* :pick-object-in-image image-source center-x center-y))
(defun cb (msg)
(let ((x (send (elt (send msg :rects) 0) :x))
(y (send (elt (send msg :rects) 0) :y))
(width (send (elt (send msg :rects) 0) :width))
(height (send (elt (send msg :rects) 0) :height))
(center-x (+ x (/ width 2)))
(center-y (+ y (/ height 2))))
(pick-object-in-image *image-source* center-x center-y)
(unix::sleep 5)
(send *ri* :stow-arm)
;;(send *ri* :wait-interpolation)
))
12/07の進捗です。
・学習したボールをモデルするモデルの確認
・:pick-object-in-image
を使ってボールを拾うモーションの作成
(その動画です。)
ゼミの動画用のGoogleDriveです JSKのSharedDrive/Movies/Semi/2022に動画をおいてもらえると,あとで確認もしやすいのでありがたいです. よろしくお願いします.
@mqcmd196 @MiyabiTane @Kanazawanaoaki @k-okada @tkmtnt7000 @softyanija
https://drive.google.com/drive/folders/129ShuBhvtMYB1On9JFPjCcAdLxXTUawb
12/07の進捗です。 以下のドライブにデモ動画を追加しました。 https://drive.google.com/drive/folders/129ShuBhvtMYB1On9JFPjCcAdLxXTUawb
今回実現した流れは、 1 spotに初期姿勢を取らせる 2 全方位カメラで人を探す 3 spotの近くに人がいたら、傘をセットしやすいようにアームを上げる 4 傘をセットできるようにspotの手を開閉する
12/14の進捗です。 以下のドライブにデモ動画を追加しました。 https://drive.google.com/drive/folders/129ShuBhvtMYB1On9JFPjCcAdLxXTUawb
今回実現した流れは、 1 spotに初期姿勢を取らせる 2 全方位カメラで人を探す 3 近くに人が来たら、その位置に合わせてspotが移動する 4 人のいる方向に向けてアームを伸ばす 4 傘をセットできるようにspotの手を開閉する
12/14の進捗
3dプリンターでのサポーターの造形 竿を降る動作の調整 dynamixelの制御プログラムの作成
Spot体内で動かしていたlaunchをメモしておきます. obinataユーザで以下を起動していました.
@AyumuIwa のデモのために,https://github.com/jsk-ros-pkg/jsk_recognition/pull/2754 で追加したlaunchを起動してました.
source ~/ros/spot_ws/devel/setup.bash
roslaunch jsk_perception panorama_human_3d_detection.launch gui:=false
@shryt のデモのために,coralの認識launchを起動していました.
モデルとラベルは https://github.com/jsk-ros-pkg/jsk_demos/pull/1375#issuecomment-1332100428 で学習したものを,
~/ros/spot_ws/src/coral_usb_ros/models
にダウンロードしてあります.
source ~/ros/spot_ws/devel/setup.bash
roslaunch coral_usb edgetpu_object_detector.launch label_file:=$(rospack find coral_usb)/models/semi_labels.txt model_file:=$(rospack find coral_usb)/models/semi_2022.tflite device_id:=1 INPUT_IMAGE:=/spot/camera/hand_color/image
Spot体内で動かしていたlaunchをメモしておきます. obinataユーザで以下を起動していました.
@AyumuIwa のデモのために,jsk-ros-pkg/jsk_recognition#2754 で追加したlaunchを起動してました.
source ~/ros/spot_ws/devel/setup.bash roslaunch jsk_perception panorama_human_3d_detection.launch gui:=false
@knorth55 ありがとうございます。
作業したければいつでも来てください 8階の部屋は開いてない時もありますが言ってくれれば開けます Spotも使えるようになってます
Strelka (Spot)ですが,ネットワークは改善してみました. 次回はもう少し早く通信できるはずです. https://github.com/jsk-ros-pkg/jsk_robot/issues/1765#issuecomment-1352627572
https://user-images.githubusercontent.com/9300063/207811145-ef38484c-f000-4ccc-bcb1-29f71f3b810e.mp4
@knorth55 ありがとうございます。もしかしたら来週の月曜日の午後にspotの利用をお願いするかもしれません。 予定が決まり次第また連絡させていただきます。
@AyumuIwa 了解です,また月曜日にでもここで連絡してください.
@knorth55 体調を崩してしまったので、今日の午後行きたかったのですがやめさせていただきます。 申し訳ございません。
@AyumuIwa 了解です、体調気をつけて!ゆっくりやすんでください
@knorth55 今日この後16時半からspotを利用してもよろしいでしょうか。
@AyumuIwa 多分大丈夫だと思います。 16時まで僕が部屋で会議してるので、早めに来るのは難しいかもしれません。
@AyumuIwa 多分大丈夫だと思います。 16時まで僕が部屋で会議してるので、早めに来るのは難しいかもしれません。
ありがとうございます。
@AyumuIwa 大丈夫です!
@AyumuIwa 大丈夫です!
ありがとうございます。
@AyumuIwa 今日の実験の動画です! https://drive.google.com/drive/folders/12KWUk5vaFMPC_XRBswiYbClD8yGwylNX?usp=share_link
@Kodai-Yamada 部屋の中で撮った実験動画を置いておきます https://drive.google.com/drive/folders/1061nl8v_lixIPG0wsqRhpZ-6gdEwhr-K?usp=share_link
@ayumuiwa @shryt @Kodai-Yamada @20niship
ゴールを考える 必要な機能をリストアップする.
案:
初期化
setup.bashをsourceする
最新のファイルに更新する.
Emacs でよく使うキーバインド