jsk-ros-pkg / jsk_demos

JSK demo programs
https://github.com/jsk-ros-pkg/jsk_demos
25 stars 89 forks source link

2023年度ゼミ #1393

Open k-okada opened 1 year ago

k-okada commented 1 year ago

@keitayoneda ロボットの認識・行動判断に興味がある。Spotを使って細いところを通り抜けるのを見てみたい。 @yoshiki-447 理学療法。介護ロボット。人を持ち上げたり、あるいは人との会話。アドバイスや寄り添い。 @KIMJUNMO1106 月で建築作業をするロボット。人間のような機構、パワーを出す、筋電を使う。 @nockoy ロボットかっこいいな。かわいいな。

https://github.com/jsk-ros-pkg/jsk_demos/tree/jsk_2023_10_semi

k-okada commented 1 year ago

https://raw.githubusercontent.com/mqcmd196/jsk_robot/14e0f511a8878d4623b3e7ae43aa18cfecca81d7/jsk_fetch_robot/jsk_fetch_user.rosinstall.noetic

別ターミナルでroscore を立ち上げておいて、、、、

M-x shell
> source ~/semi_ws/devel/setup.bash
> roscd jsk_2023_10_semi
> roseus
$ (load "package://fetcheus/fetch-interface.l")
$ (fetch-init)
$ (objects (list *fetch*))
$ (send *fetch* :angle-vector)
$ (send *ri* :angle-vector (send *fetch* :angle-vector))
$ (send *fetch* :rarm :elbow-p :joint-angle 90)

;; 関節名は https://github.com/jsk-ros-pkg/jsk_robot/tree/master/jsk_fetch_robot

mqcmd196 commented 1 year ago

今日はお疲れ様でした.D1の大日方(おびなた)です.

今日のおさらいです

Fetchを動かしたいとき

JSKに来たら

JSKに来たら自分のPCを有線につないで,WiFiをオフにする. ターミナルで ip a と打って133.11.216....というアドレスが見えていることを確認

ターミナルごとの設定

以下は新しくターミナルを開くごとに行う必要があります

ターミナルで

source ~/semi_ws/devel/setup.bash # ROSを使うためのおまじない
rossetmaster fetch1075 # Fetchの中のROSネットワークに入るためのおまじない
rossetip # おまじない

のおまじないを打ったら

rostopic list

でFetchのtopic群が見えることを確認 そうしたら

roseus

でeusのインタプリタを起動

mqcmd196 commented 1 year ago

roseusでロボットを動かす準備をする

(load "package://fetcheus/fetch-interface.l") ;; Fetchを動かすために必要なパッケージを読み込む
(fetch-init) ;; Fetchのインタフェース,モデルなどの初期化
(objects (list *fetch*)) ;; ビューワの表示

実際に動かしてみる

今日使ったコードの一覧

;; ビューワの中のFetchで姿勢を作ってみる
(send *fetch* :rarm :elbow-p :joint-angle 90)

;; 自分で作った姿勢をロボットに送りたい.
;; ビューワ中のFetchモデル,*fetch* の姿勢を自分で作ったと仮定する 
(send *ri* :angle-vector (send *fetch* :angle-vector) 8000) ;; 8000ms でロボット実機の姿勢を変更

;; Fetchの姿勢を標準姿勢に戻したい
(send *fetch* :reset-pose) ;; ビューワ中のFetchモデル,*fetch* の姿勢をリセットする
(send *ri* :angle-vector (send *fetch* :angle-vector) 8000)

なお *ri* は robot interfaceの略(多分)

k-okada commented 1 year ago

画像処理の結果は

$ rostopic list | grep edge
/edgetpu_human_pose_estimator/output/class
/edgetpu_human_pose_estimator/output/image
/edgetpu_human_pose_estimator/output/image/compressed
/edgetpu_human_pose_estimator/output/poses
/edgetpu_human_pose_estimator/output/rects
/edgetpu_human_pose_estimator/parameter_descriptions
/edgetpu_human_pose_estimator/parameter_updates
/edgetpu_object_detector/output/class
/edgetpu_object_detector/output/image
/edgetpu_object_detector/output/image/compressed
/edgetpu_object_detector/output/rects
/edgetpu_object_detector/parameter_descriptions
/edgetpu_object_detector/parameter_updates

等から始めるとよい rqt_image_view を用いて、/edgetpu_object_detector/output/image/compressed/edgetpu_human_pose_estimator/output/image/compressed を見ると、どのような結果か確認できる。

euslisp で書いたサンプルプログラムは以下。

(ros::load-ros-manifest "roseus")
(ros::load-ros-manifest "jsk_recognition_msgs")

;;;
(ros::roseus "rect_client")

(defun cb (msg)
  (dolist (rect (send msg :rects))
    (ros::ros-info "x:~3A y:~3A w:~3A h:~3A ~5A" (send rect :x) (send rect :y)  (send rect :width)  (send rect :height) (* (send rect :width)  (send rect :height))))

  (when (> (length (send msg :rects)) 0)
    (ros::ros-error "~A human found" (length (send msg :rects))))
  )

(ros::subscribe "/edgetpu_human_pose_estimator/output/rects" jsk_recognition_msgs::rectarray #'cb)

(ros::spin)
k-okada commented 1 year ago

誰かがプログラムを更新したら

cd ~/semi_ws/src/jsk_demos
git pull origin jsk_2023_10_semi

で手元に持ってこれる。 自分でプログラムを更新したら

git add TEST.L
git commit -m "COMMIT" TEST.L
git push USERNAME jsk_2023_10_semi

とする。その後、https://github.com/jsk-ros-pkg/jsk_demos からPullRequestを作成する。 大文字の部分は各自の変える事

一番最初だけ、

1. https://github.com/jsk-ros-pkg/jsk_demos からフォークする
2. git remote add USERNAME git@github.com:USERNAME/jsk_demos.git
3. https://docs.github.com/ja/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account を参考にssh key を追加

とする。

k-okada commented 1 year ago

@keitayoneda 日常の面倒なことをやってくれる。ごみを集める、カップラーメンを作る。マラソン一緒に走ってくれる。 -> スポット環境を作る https://github.com/jsk-ros-pkg/jsk_robot/blob/4e2bee530757a88b27562fb0b8d3f65a6bfef61f/jsk_spot_robot/README.md @yoshiki-447 料理出来ました。という、銀杏掃除。走っているときの速度を言ってくれる、遅くなったら応援してくれる。 -> 音声認識合成/GPT環境を作る オウム返しプログラムを作成する (https://github.com/jsk-ros-pkg/jsk_3rdparty/tree/master/ros_speech_recognition ) @KIMJUNMO1106 カップシャッフルをする、見破る。ロボット同士でじゃんけんして、買ったら、たたいて被ってじゃんけんぽん。疲れた姿勢を見たら、水を渡す -> 姿勢認識/トラッキング -> bagファイルをとる、再生する (https://wiki.ros.org/rosbag, https://github.com/jsk-ros-pkg/jsk_robot/blob/master/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_record.launch or https://github.com/jsk-ros-pkg/jsk_robot/blob/master/jsk_pr2_robot/jsk_pr2_startup/jsk_pr2_lifelog/rosbag_record.launch ) @nockoy 軽く料理、肉まんをレンチン。キャッチボール。ロボット二台がテープ引っ張ってゴールしてれる ロボットが癒してくれる・頑張ったね → Nao環境を作ってみる (https://github.com/jsk-ros-pkg/jsk_robot/tree/master/jsk_naoqi_robot ) ==

keitayoneda commented 1 year ago

spot環境を作る際にcatkin buildが失敗する

/opt/ros/noetic/share/collada_urdf/cmake/collada_urdfConfig.cmakeにおいてincludeディレクトリを指定するパスが間違えているので、該当箇所を直接書き換える必要がある。

sudo sed -i 's#/usr/../include/include;##' /opt/ros/noetic/share/collada_urdf/cmake/collada_urdfConfig.cmakeとすれば該当箇所が置換される

KIMJUNMO1106 commented 1 year ago

@KIMJUNMO1106 Use https://github.com/jsk-ros-pkg/coral_usb_ros#readme when you want to use human pose estimation. You can follow setup section.

Cc:@tkmtnt7000

tkmtnt7000 commented 1 year ago

@KIMJUNMO1106 に今日取ったバグファイルを使って家でも人のポーズ推定ができるようにcoral edgetpuを渡しました. この後予定があるとのことで環境構築ができていないのでどこかで詰まったらこのissueなどで教えてもらうか,他が忙しければ来週一緒にやりましょう.

keitayoneda commented 1 year ago

@k-okada すみません。本日のゼミですが、家の方で外せない急用ができてしまったので今日はお休みして明日、明後日研究室の方に伺いたいのですが可能でしょうか?現状のタスクとしては

  1. spotの環境構築 -> 前回通信ができないところで止まっている
  2. (環境構築ができたら)spotについているカメラを使って人認識を試す
  3. (環境構築ができたら)spotにgo_velocityに類する移動指令を試す

だと思っていて、1に関しては @pazeshun さんや @tkmtnt7000 さんが先週解決を試みてくださっていたと認識しています

k-okada commented 1 year ago

はい。大丈夫です。というか、今日はそもそも補講日なのでマストではないです。 明日来るなら時間をあらかじめ教えてください。 明後日は平日なのでいつでも良いです。

◉ Kei Okada

2023年11月22日(水) 13:53 keitayoneda @.***>:

@k-okada https://github.com/k-okada すみません。本日のゼミですが、家の方で外せない急用ができてしまったので今日はお休みして明日、明後日研究室の方に伺いたいのですが可能でしょうか?現状のタスクとしては

  1. spotの環境構築 -> 前回通信ができないところで止まっている
  2. (環境構築ができたら)spotについているカメラを使って人認識を試す
  3. (環境構築ができたら)spotにgo_velocityに類する移動指令を試す

だと思っていて、1に関しては @pazeshun https://github.com/pazeshun さんや @tkmtnt7000 https://github.com/tkmtnt7000 さんが先週解決を試みてくださっていたと認識しています

— Reply to this email directly, view it on GitHub https://github.com/jsk-ros-pkg/jsk_demos/issues/1393#issuecomment-1822112917, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADYNXFUBSG35M6S3TM6IJTYFWALJAVCNFSM6AAAAAA6YZ47VOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMRSGEYTEOJRG4 . You are receiving this because you were mentioned.Message ID: @.***>

tkmtnt7000 commented 1 year ago

11/23は勤労感謝の日で73B2に人が少ないorいない(この場合は部屋に入れない)と思うので 明日来る場合は早めに連絡をくれたら時間次第ですが対応できる可能性が有ります.

keitayoneda commented 1 year ago

書き方が良くなかったのですが明日か明後日のどちらかに伺うつもりだったので、明後日にします。対応いただきありがとうございます。

keitayoneda commented 1 year ago

話は変わるのですが、spotとの通信(rossetmaster & rossetipまわり)についてはどうなりましたでしょうか?

tkmtnt7000 commented 1 year ago

話は変わるのですが、spotとの通信(rossetmaster & rossetipまわり)についてはどうなりましたでしょうか?

これはspotとクライアントPCの接続の仕方の問題で,クライアントPCをSpotが出しているSSID名がBelkaのWi-fiにつないでrosssetip, rossetmaster belka.localとするとできると思います. 次来たときに一緒にやりましょう

keitayoneda commented 1 year ago

了解です、ありがとうございます!

sktometometo commented 1 year ago

@yoshiki-447

while true
  message = speech_to_text メッセージを取得
   completion = client.chat.completions.create(
    ...:   model="gpt-4",
    ...:   messages=[
    ...:     {"role": "system", "content": "dummy"},
    ...:     {"role": "user", "content": message},
    ...:     ]
    ...:     )
  robot_message = completeion.....
  print(robot_message)
  text_to_speechで話す(robot_message)

messages = [{"role": "system", "content": "dummy"}]
while true
  message = speech_to_text メッセージを取得
  messages.append({"role": "user", "content": message})
  completion = client.chat.completions.create(
      model="gpt-4",
      messages=messages
      )
  robot_message = completeion.....
  print(robot_message)
  text_to_speechで話す(robot_message)
  messages.append({"role": "assistant", "content": robot_message})

messages = [{"role": "system", "content": "special"}]
while true
  message = speech_to_text メッセージを取得
  messages.append({"role": "user", "content": message})
  completion = client.chat.completions.create(
      model="gpt-4",
      messages=messages
      )
  robot_message = completeion.....
  if is_json(robot_message):
    data = parse_json(robot_message)
    robot.do(data)  
  else:
    print(robot_message)
    text_to_speechで話す(robot_message)
    messages.append({"role": "assistant", "content": robot_message})
keitayoneda commented 1 year ago

@tkmtnt7000 研究室つきました。もし今日いらしていたらbelkaとの接続方法など教えていただきたいです

tkmtnt7000 commented 12 months ago

明日塚本がゼミの時間帯に席を外しているかもしれないので念のため連絡しておきます。

Naoについて、73B2の掃除道具入れ横のDia制御用PCと書かれたPCにros melodicのNaoのros master用リモートPCを設置しています。近くにNao(Diaという名前の機体です)もいます。

Naoを動かしやすい場所で133系のネットワークに繋いで起動した後にDia制御用PCも適当な場所で133系に繋いで起動して(パスワードはユーザ名から類推すればJSKの人ならわかるはず)

source ~/ros/nao_ws/devel/setup.bash
roslaunch jsk_nao_startup jsk_nao_startup.launch network_interface:=<your network interaface (ex. eth0, enp0s31f6...)>
# or if you want to use speech recognition through nao's internal mic, use the following command
# roslaunch jsk_nao_startup jsk_nao_startup.launch network_interface:=enp4s0 launch_ros_speech_recognition:=true audio_org:=/nao_robot/naoqi_driver/audio

を実行してください。 <your network interface>の部分は、別ターミナルで

ifconfig

して133.11.xxx.xxxと書かれている部分のインターフェース名(eth0とかenp0s3...とか)を例に従ってコピペして書いてください。 (僕が先週か先々週かあたりに試したコマンドのログが残っていると思うので、Ctrl-rして検索してもらっても良いと思います。) launchできるとnao_dashboardみたいな画面が出てきてGUIから立たせたり座らせたりできるようになります。

以上をDia制御PCで実行できたら自分のローカルpcで

rossetip
rossetmaster 133.11.xxx.xxx <IP address of Dia control PC. You can find this with command `ifconfig`>

してrostopic listとかrosservice listするとtopicが見えるようになると思います。あとはnaoのREADMEのサンプルに従って色々動かすことができると思います。 2年前に73B1にいる吉村くんが作っていたsampleなんかはhttps://github.com/jsk-ros-pkg/jsk_robot/tree/ddf454dd5f4f4c1aa43b81fda6e17a24d96c721f/jsk_naoqi_robot/naoeus/sample に見つかるのでやりたいことに対して直接役に立つかどうか不明ですが見てみても良いと思います。(nao-test-ik.lだったかな?違うかもしれない)

(開発者向け連絡:noeticクライアントから動かすことを失念していたのでもし動かなかったらデバッグ対応いただけたら嬉しいです。move_baseとか使っていなければmsg型は変わっていないはずなので問題ない気はしています。)

mqcmd196 commented 11 months ago

@tkmtnt7000 naoの環境ありがとうございました!めっちゃ助かりました

k-okada commented 11 months ago

@keitayoneda, @yoshiki-447, @KIMJUNMO1106, @nockoy 申し訳ないんだけど、昨晩から風邪で熱が出てしまって学校に登校するのは控えることにしました。@pazeshun, @mqcmd196, @tkmtnt7000, @sktometometo で代りに対応してもらえるかな?

sktometometo commented 11 months ago

対応します

tkmtnt7000 commented 11 months ago

はい.インフル等も流行っているようなのでおだいじになさってください.

tkmtnt7000 commented 11 months ago

@yoshiki-447 rostopic echoしたときのunicode文字列を読む方法 https://github.com/jsk-ros-pkg/jsk_demos/issues/1347#issuecomment-965044286

Kanazawanaoaki commented 11 months ago

@nockoy くんかな? NAOでできそうな色抽出の2次元画像認識関係のメモです.参考までに.

tkmtnt7000 commented 11 months ago

https://drive.google.com/file/d/1MYJ6jxYHE64TLcvbMR2oyQBQ-j7yFlKw/view?usp=drivesdk 先ほどの動画です

keitayoneda commented 11 months ago

ありがとうございます!まだ追従はおぼつかないのですが7階の通路を一周することができました! Screenshot from 2023-12-14 13-16-46

keitayoneda commented 11 months ago

@KIMJUNMO1106 遅くなってごめん!BoundingBoxArrayをspotから見たPoseStampedに変換するコード上げた! https://github.com/keitayoneda/jsk_robot/blob/dev/running/jsk_spot_robot/script/nearest_person.py

KIMJUNMO1106 commented 11 months ago

明日午後に書いたコードがうまく行くかspotを動かしてみたいんですけどいつ研究室に行ったら大丈夫でしょうか?

k-okada commented 11 months ago

@KIMJUNMO1106 何時でもよいです。

YUKINA-3252 commented 11 months ago

@keitayoneda @yoshiki-447 @KIMJUNMO1106 @nockoy ゼミ生のみなさんへ、技術的な話ではなくissueでの連絡恐縮ですが、今週水曜日の最終発表会の際、一人5-10分程度、ゼミでの成果を発表していただきます。その際、簡単にでいいので自己紹介や今までゼミ以外で行ってきたことも発表してくれればと思います。余談ですが、例年個々人の自主プロのテーマや進捗をお話ししてかなり盛り上がっている気がします。

また、最終発表会に向けて動画を撮ったりするかと思います。動画を撮るときは気軽に研究室にいる先輩などに声かけてください。締め切りが近づくと焦ったりロボットがうまく動かなかったりしがちなので一度撮っておくといいと思います。

YUKINA-3252 commented 11 months ago

追記です。明日の発表会は17時から開始です。 発表の際、題目(それぞれのゼミのテーマ、題名)と、その題目に取り組んだ背景や目的をスライド等で説明してもらうとよく伝わると思います。 また、忘年会でお店を予約している都合上、あまり実験を長引かせられない可能性が高いですが、できた範囲内での発表をするとよいと思います。その際、何ができなかったのかや、どうしてできなかったのかも発表するとより良い発表になると思います。

keitayoneda commented 11 months ago

https://drive.google.com/file/d/12aLbBYjtINk6V2zrOwOsS6GLcXXIJfuW/view?usp=drivesdk @KIMJUNMO1106

keitayoneda commented 11 months ago

先ほど廊下でのテスト中に、spot の足が観葉植物のパッドにあたり、観葉植物ごと倒してしまいました。その際に写真のように実が二房もげてしまい、もげた実は現在はパッドの中においております。 不注意でこのようなことになってしまい申し訳ありません。もし今すぐ何か対処すべきであれば教えてくださると幸いです。 IMG_3260

Kanazawanaoaki commented 11 months ago

@nockoy https://drive.google.com/drive/folders/1eH3ABiPTydg5AjZYdSirLiOh7EX3wDfa?usp=sharing 今日の動画の置き場です. 皆さん,ゼミお疲れ様でした!

keitayoneda commented 9 months ago

@k-okada お久しぶりです。もしよろしければ本日と明日でspot でやり残したタスクをやりに行きたいのですが、都合はいかがでしょうか?

sktometometo commented 9 months ago

@keitayoneda 今修論期間中なのと、諸事情でSpotのLidar使えなくなってるので待ってもらった法が良いかも

知能機械の修論審査は2/6で終わるのでそれ以降なら良さそう?

tkmtnt7000 commented 9 months ago

2/6に修論は全て終わるので、その日以降は心置きなく73B2の部屋を使ってもらえると思います

keitayoneda commented 9 months ago

ありがとうございます。 修論の件、了解しました。2/6以降に伺おうと思います。 一つ相談なのですが、2/9に学科pcを返却する必要があり今のros1環境が使えなくなってしまうので、もし可能なら新しくros1環境を作りたいと思っています。ただ自分のpcはwindowsとubuntu22なのでちょっと面倒なのかなと考えています。この場合どうすればいいでしょうか?

k-okada commented 9 months ago

PCに関しては来てくれたら何とかします. 来週の月曜日まで修論発表準備でM2の人が大変だけど,ロボット使わないならSpot使えるかな?と思ったんだけど, @tkmtnt7000 は追加実験を予定しているということみたいなので,だったら来週の火曜日ぐらいが良いですね.あるいは,来てもらって実験手伝いする,というのも,見ているだけで勉強になるとおもいます.

keitayoneda commented 9 months ago

PCの環境について見ていただけるとのこと、ありがとうございます。 またもし邪魔にならないなら、実験のお手伝いもやらせていただきたいです。(見学させていただくだけでも大丈夫です) その場合いつ行けばいいでしょうか?

tkmtnt7000 commented 9 months ago

来週の月曜日まで修論発表準備でM2の人が大変だけど,ロボット使わないならSpot使えるかな?と思ったんだけど,

Spot自体はLidar以外?は使えます.

またもし邪魔にならないなら、実験のお手伝いもやらせていただきたいです。(見学させていただくだけでも大丈夫です

申し訳ないですが,追加実験の予定は僕の発表スライドの進捗具合で変わるのでアナウンスできるかどうかは怪しいです.2/6以降僕の発表が終わっていれば来てくれたときによねだくんの実験でも僕のデモでも何か一緒に動かしましょう.

keitayoneda commented 9 months ago

@tkmtnt7000 了解です!ではとりあえず2/7に伺おうと思います。 @k-okada pcについても2/7に見ていただくことは可能でしょうか?もし別日の方が都合がよければ教えていただきたいです。

k-okada commented 9 months ago

はい。2/7の午後なら大丈夫です。それ以前でも @mqcmd196 @sktometometo が時間あれば、適当なPCを用意してセットアップするのが良いと思います

mqcmd196 commented 9 months ago

はい,PCのセットアップについては今日明日でラップトップ一台用意しておきます.

ちなみにUbuntu 20.04が入っていればSpotはパッと使える環境になると思うけど,それで大丈夫そうでしょうか?

keitayoneda commented 9 months ago

ありがとうございます。ros1が入る環境であれば最低限は大丈夫だと思います

sktometometo commented 9 months ago

@keitayoneda

Screenshot from 2024-02-08 11-48-37

こんな感じで 可視画像の情報付きの点群を可視化&出せるようになりました. 手元のPCの jsk_spot_startup を 僕のフォークの develop/spot_arm_with_lifelog ブランチ ( https://github.com/sktometometo/jsk_robot/tree/develop/spot_arm_with_lifelog ) にする必要があります

Spotに直接つないで見るのはまだできていないのですが,StrelkaのPC上で rosbag_record.launch で記録したものを手元のnoetic PCで rosbag_play.launch すると上記のように見えるようになります.

また,そのうえで roslaunch jsk_spot_startup generate_point_cloud.launch を走らせると以下の PointCloud2 型のトピックが出るようになります. 立ち上がったrvizでプラグインを有効化するとそちらも見えるようになります.

mqcmd196 commented 9 months ago

対応ありがとうございます. FYIですが,昨日 rosbag playでdepthから点群を構成するlaunchを @keitayoneda 君のPCで書きました.ロボット側から出ることになったので,自分の家とかで書いた点群処理コードを実機でそのまま試せるようになったと思います

keitayoneda commented 9 months ago

@sktometometo ありがとうございます!むちゃくちゃきれいに出てますね! @mqcmd196 理解しました、点群処理なども含め、最終的にはspot内ですべて完結できたほうが通信のオーバーヘッド等がなくなるのでいい気がしますね!

sktometometo commented 9 months ago

@keitayoneda あと1点注意なんですが、Spot側のPC(SpotCORE)のCPUロードを下げるためにパノラマの画像のレートを1Hzに落としてます

もとのレート(10-15くらい?)に上げるには、 https://github.com/sktometometo/jsk_robot/blob/develop%2Fspot_arm_with_lifelog/jsk_spot_robot%2Fjsk_spot_startup%2Flaunch%2Finclude%2Fperipheral.launch のthrottled_rateパラメータを変更して tmux.sh を立ち上げ直してください

sktometometo@strelka.local に入って、roscd jsk_spot_startup で移動して ./launch/include/peripheral.launch をvimとかemacsで編集