Open k-okada opened 1 year ago
別ターミナルで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
今日はお疲れ様でした.D1の大日方(おびなた)です.
今日のおさらいです
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のインタプリタを起動
(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の略(多分)
画像処理の結果は
$ 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)
誰かがプログラムを更新したら
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 を追加
とする。
@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 ) ==
spot環境を作る際にcatkin buildが失敗する
Project 'collada_urdf' specifies '/usr/../include/include' as an include
dir, which is not found. It does neither exist as an absolute directory
nor in '${{prefix}}//usr/../include/include'. Check the issue tracker
'https://github.com/ros/collada_urdf/issues' and consider creating a ticket
if the problem has not been reported yet.
/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 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
@KIMJUNMO1106 に今日取ったバグファイルを使って家でも人のポーズ推定ができるようにcoral edgetpuを渡しました. この後予定があるとのことで環境構築ができていないのでどこかで詰まったらこのissueなどで教えてもらうか,他が忙しければ来週一緒にやりましょう.
@k-okada すみません。本日のゼミですが、家の方で外せない急用ができてしまったので今日はお休みして明日、明後日研究室の方に伺いたいのですが可能でしょうか?現状のタスクとしては
だと思っていて、1に関しては @pazeshun さんや @tkmtnt7000 さんが先週解決を試みてくださっていたと認識しています
◉ Kei Okada
2023年11月22日(水) 13:53 keitayoneda @.***>:
@k-okada https://github.com/k-okada すみません。本日のゼミですが、家の方で外せない急用ができてしまったので今日はお休みして明日、明後日研究室の方に伺いたいのですが可能でしょうか?現状のタスクとしては
- spotの環境構築 -> 前回通信ができないところで止まっている
- (環境構築ができたら)spotについているカメラを使って人認識を試す
- (環境構築ができたら)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: @.***>
11/23は勤労感謝の日で73B2に人が少ないorいない(この場合は部屋に入れない)と思うので 明日来る場合は早めに連絡をくれたら時間次第ですが対応できる可能性が有ります.
書き方が良くなかったのですが明日か明後日のどちらかに伺うつもりだったので、明後日にします。対応いただきありがとうございます。
話は変わるのですが、spotとの通信(rossetmaster & rossetipまわり)についてはどうなりましたでしょうか?
話は変わるのですが、spotとの通信(rossetmaster & rossetipまわり)についてはどうなりましたでしょうか?
これはspotとクライアントPCの接続の仕方の問題で,クライアントPCをSpotが出しているSSID名がBelkaのWi-fiにつないでrosssetip, rossetmaster belka.localとするとできると思います. 次来たときに一緒にやりましょう
了解です、ありがとうございます!
@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})
@tkmtnt7000 研究室つきました。もし今日いらしていたらbelkaとの接続方法など教えていただきたいです
明日塚本がゼミの時間帯に席を外しているかもしれないので念のため連絡しておきます。
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型は変わっていないはずなので問題ない気はしています。)
@tkmtnt7000 naoの環境ありがとうございました!めっちゃ助かりました
@keitayoneda, @yoshiki-447, @KIMJUNMO1106, @nockoy 申し訳ないんだけど、昨晩から風邪で熱が出てしまって学校に登校するのは控えることにしました。@pazeshun, @mqcmd196, @tkmtnt7000, @sktometometo で代りに対応してもらえるかな?
対応します
はい.インフル等も流行っているようなのでおだいじになさってください.
@yoshiki-447 rostopic echoしたときのunicode文字列を読む方法 https://github.com/jsk-ros-pkg/jsk_demos/issues/1347#issuecomment-965044286
@nockoy くんかな? NAOでできそうな色抽出の2次元画像認識関係のメモです.参考までに.
ありがとうございます!まだ追従はおぼつかないのですが7階の通路を一周することができました!
@KIMJUNMO1106 遅くなってごめん!BoundingBoxArrayをspotから見たPoseStampedに変換するコード上げた! https://github.com/keitayoneda/jsk_robot/blob/dev/running/jsk_spot_robot/script/nearest_person.py
明日午後に書いたコードがうまく行くかspotを動かしてみたいんですけどいつ研究室に行ったら大丈夫でしょうか?
@KIMJUNMO1106 何時でもよいです。
@keitayoneda @yoshiki-447 @KIMJUNMO1106 @nockoy ゼミ生のみなさんへ、技術的な話ではなくissueでの連絡恐縮ですが、今週水曜日の最終発表会の際、一人5-10分程度、ゼミでの成果を発表していただきます。その際、簡単にでいいので自己紹介や今までゼミ以外で行ってきたことも発表してくれればと思います。余談ですが、例年個々人の自主プロのテーマや進捗をお話ししてかなり盛り上がっている気がします。
また、最終発表会に向けて動画を撮ったりするかと思います。動画を撮るときは気軽に研究室にいる先輩などに声かけてください。締め切りが近づくと焦ったりロボットがうまく動かなかったりしがちなので一度撮っておくといいと思います。
追記です。明日の発表会は17時から開始です。 発表の際、題目(それぞれのゼミのテーマ、題名)と、その題目に取り組んだ背景や目的をスライド等で説明してもらうとよく伝わると思います。 また、忘年会でお店を予約している都合上、あまり実験を長引かせられない可能性が高いですが、できた範囲内での発表をするとよいと思います。その際、何ができなかったのかや、どうしてできなかったのかも発表するとより良い発表になると思います。
先ほど廊下でのテスト中に、spot の足が観葉植物のパッドにあたり、観葉植物ごと倒してしまいました。その際に写真のように実が二房もげてしまい、もげた実は現在はパッドの中においております。 不注意でこのようなことになってしまい申し訳ありません。もし今すぐ何か対処すべきであれば教えてくださると幸いです。
@nockoy https://drive.google.com/drive/folders/1eH3ABiPTydg5AjZYdSirLiOh7EX3wDfa?usp=sharing 今日の動画の置き場です. 皆さん,ゼミお疲れ様でした!
@k-okada お久しぶりです。もしよろしければ本日と明日でspot でやり残したタスクをやりに行きたいのですが、都合はいかがでしょうか?
@keitayoneda 今修論期間中なのと、諸事情でSpotのLidar使えなくなってるので待ってもらった法が良いかも
知能機械の修論審査は2/6で終わるのでそれ以降なら良さそう?
2/6に修論は全て終わるので、その日以降は心置きなく73B2の部屋を使ってもらえると思います
ありがとうございます。 修論の件、了解しました。2/6以降に伺おうと思います。 一つ相談なのですが、2/9に学科pcを返却する必要があり今のros1環境が使えなくなってしまうので、もし可能なら新しくros1環境を作りたいと思っています。ただ自分のpcはwindowsとubuntu22なのでちょっと面倒なのかなと考えています。この場合どうすればいいでしょうか?
PCに関しては来てくれたら何とかします. 来週の月曜日まで修論発表準備でM2の人が大変だけど,ロボット使わないならSpot使えるかな?と思ったんだけど, @tkmtnt7000 は追加実験を予定しているということみたいなので,だったら来週の火曜日ぐらいが良いですね.あるいは,来てもらって実験手伝いする,というのも,見ているだけで勉強になるとおもいます.
PCの環境について見ていただけるとのこと、ありがとうございます。 またもし邪魔にならないなら、実験のお手伝いもやらせていただきたいです。(見学させていただくだけでも大丈夫です) その場合いつ行けばいいでしょうか?
来週の月曜日まで修論発表準備でM2の人が大変だけど,ロボット使わないならSpot使えるかな?と思ったんだけど,
Spot自体はLidar以外?は使えます.
またもし邪魔にならないなら、実験のお手伝いもやらせていただきたいです。(見学させていただくだけでも大丈夫です
申し訳ないですが,追加実験の予定は僕の発表スライドの進捗具合で変わるのでアナウンスできるかどうかは怪しいです.2/6以降僕の発表が終わっていれば来てくれたときによねだくんの実験でも僕のデモでも何か一緒に動かしましょう.
@tkmtnt7000 了解です!ではとりあえず2/7に伺おうと思います。 @k-okada pcについても2/7に見ていただくことは可能でしょうか?もし別日の方が都合がよければ教えていただきたいです。
はい。2/7の午後なら大丈夫です。それ以前でも @mqcmd196 @sktometometo が時間あれば、適当なPCを用意してセットアップするのが良いと思います
はい,PCのセットアップについては今日明日でラップトップ一台用意しておきます.
ちなみにUbuntu 20.04が入っていればSpotはパッと使える環境になると思うけど,それで大丈夫そうでしょうか?
ありがとうございます。ros1が入る環境であれば最低限は大丈夫だと思います
@keitayoneda
こんな感じで 可視画像の情報付きの点群を可視化&出せるようになりました.
手元の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でプラグインを有効化するとそちらも見えるようになります.
/spot/depth/points
: 体の5個のカメラを合わせたグレースケール点群/spot/camera/hand_depth_in_hand_color_frame/points
: 手のカメラを使ったカラー点群対応ありがとうございます. FYIですが,昨日 rosbag playでdepthから点群を構成するlaunchを @keitayoneda 君のPCで書きました.ロボット側から出ることになったので,自分の家とかで書いた点群処理コードを実機でそのまま試せるようになったと思います
@sktometometo ありがとうございます!むちゃくちゃきれいに出てますね! @mqcmd196 理解しました、点群処理なども含め、最終的にはspot内ですべて完結できたほうが通信のオーバーヘッド等がなくなるのでいい気がしますね!
@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で編集
@keitayoneda ロボットの認識・行動判断に興味がある。Spotを使って細いところを通り抜けるのを見てみたい。 @yoshiki-447 理学療法。介護ロボット。人を持ち上げたり、あるいは人との会話。アドバイスや寄り添い。 @KIMJUNMO1106 月で建築作業をするロボット。人間のような機構、パワーを出す、筋電を使う。 @nockoy ロボットかっこいいな。かわいいな。
https://github.com/jsk-ros-pkg/jsk_demos/tree/jsk_2023_10_semi