jsk-ros-pkg / jsk_demos

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

add jsk_2022_10_semi #1375

Open k-okada opened 2 years ago

k-okada commented 2 years ago

@ayumuiwa @shryt @Kodai-Yamada @20niship

ゴールを考える 必要な機能をリストアップする.

案:

初期化

mkdir -p semi_ws/src
cd semi_ws/src/
git clone https://github.com/jsk-ros-pkg/jsk_demos
git clone https://github.com/jsk-ros-pkg/jsk_robot
cd jsk_demos/
git checkout jsk_2022_10_semi
cd ~/semi_ws/
source /opt/ros/melodic/setup.bash
sudo apt update
rosdep install --from-path src --ignore-src -y -r
catkin b jsk_2022_10_semi

setup.bashをsourceする

source ~/semi_ws/devel/setup.bash

最新のファイルに更新する.

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

Emacs でよく使うキーバインド


M-x shell ;; shell を立ち上げる
  M-p ;; ひとつ前のコマンドを表示
  M-n ;; ひとつ後のコマンドを表示
C-x o ;; ウインドウを切り替える
C-x f  ;; ファイルをロードする
C-x s ;; ファイルをセーブする.
Kodai-Yamada commented 2 years ago

手元のPCで、source ~/semi_ws/devel/setup.bash rossetmaster fetch1075 rossetipを実行したあとにroseusを起動したら

[http://fetch1075:11311][133.11.216.185] mech-user@ki00135:~/semi_ws/src/jsk_robot$ roseus
configuring by "/opt/ros/melodic/share/euslisp/jskeus/eus//lib/eusrt.l"
;; readmacro ;; object ;; packsym ;; common ;; constants ;; stream ;; string ;; loader ;; pprint ;; process ;; hashtab ;; array ;; mathtran ;; eusdebug ;; eusforeign ;; extnum ;; coordinates ;; tty ;; history ;; toplevel ;; trans ;; comp ;; builtins ;; par ;; intersection ;; geoclasses ;; geopack ;; geobody ;; primt ;; compose ;; polygon ;; viewing ;; viewport ;; viewsurface ;; hid ;; shadow ;; bodyrel ;; dda ;; helpsub ;; eushelp ;; xforeign ;; Xdecl ;; Xgraphics ;; Xcolor ;; Xeus ;; Xevent ;; Xpanel ;; Xitem ;; Xtext ;; Xmenu ;; Xscroll ;; Xcanvas ;; Xtop ;; Xapplwin 
connected to Xserver DISPLAY=:0
X events are being asynchronously monitored.
;; pixword ;; RGBHLS ;; convolve ;; piximage ;; pbmfile ;; image_correlation ;; oglforeign ;; gldecl ;; glconst ;; glforeign ;; gluconst ;; gluforeign ;; glxconst ;; glxforeign ;; eglforeign ;; eglfunc ;; glutil ;; gltexture ;; glprim ;; gleus ;; glview ;; toiv-undefined ;; fstringdouble irtmath irtutil irtc irtgeoc irtgraph gnuplotlib ___time ___pgsql irtgeo euspqp pqp irtscene irtmodel irtdyna irtrobot irtsensor irtbvh irtcollada irtstl irtwrl irtpointcloud eusbullet bullet irtcollision irtx eusjpeg euspng png irtimage irtglrgb 
;; extending gcstack 0x5614475d3690[16374] --> 0x561447a59550[32748] top=3d4b
irtgl irtglc irtviewer 
EusLisp 9.29( 1.2.5) for Linux64 created on ip-10-0-1-68(Tue Mar 1 05:47:01 PST 2022)
roseus ;; loading roseus("1.7.4") on euslisp((9.29 ip-10-0-1-68 Tue Mar 1 05:47:01 PST 2022  1.2.5))
eustf roseus_c_util 1.irteusgl$ load "package://fetcheus/fetch-interface.l"

;; extending gcstack 0x561447a59550[32738] --> 0x561449cd1a30[65476] top=7ba0
t
2.irteusgl$ fetch-init
[ WARN] [1666843303.146869950]: ;; collision-object-publisher wait for "apply_planning_scene" service for 5 sec

Call Stack (max depth: 20):
  0: at (send *co* :delete-attached-object-by-id "fetchheadbox")
  1: at (send self :delete-headbox-collision-object)
  2: at (progn (send self :delete-headbox-collision-object) (send self :delete-keepout-collision-object) (send self :delete-ground-collision-object) (send self :add-headbox-collision-object) (send self :add-keepout-collision-object) (send self :add-ground-collision-object))
  3: at (if (and (boundp '*co*) default-collision-object) (progn (send self :delete-headbox-collision-object) (send self :delete-keepout-collision-object) (send self :delete-ground-collision-object) (send self :add-headbox-collision-object) (send self :add-keepout-collision-object) (send self :add-ground-collision-object)))
  4: at (when (and (boundp '*co*) default-collision-object) (send self :delete-headbox-collision-object) (send self :delete-keepout-collision-object) (send self :delete-ground-collision-object) (send self :add-headbox-collision-object) (send self :add-keepout-collision-object) (send self :add-ground-collision-object))
  5: at (progn (send self :add-controller :arm-controller) (send self :add-controller :torso-controller) (send self :add-controller :head-controller) (if (boundp 'fetch_driver_msgs::gripperstate) (ros::subscribe "gripper_state" fetch_driver_msgs::gripperstate #'send self :fetch-gripper-state-callback :groupname groupname) (ros::ros-warn "Could not find fetch_driver_msgs package, please install from source https://github.com/fetchrobotics/fetch_msgs")) (setq gripper-action (instance ros::simple-action-client :init "/gripper_controller/gripper_action" control_msgs::grippercommandaction :groupname groupname)) (setq moveit-robot (instance fetch-robot :init)) (send self :set-moveit-environment (instance fetch-moveit-environment :init :robot moveit-robot)) (when (and (boundp '*co*) default-collision-object) (send self :delete-headbox-collision-object) (send self :delete-keepout-collision-object) (send self :delete-ground-collision-object) (send self :add-headbox-collision-object) (send self :add-keepout-collision-object) (send self :add-ground-collision-object)) (setq fetch-controller-action (instance ros::simple-action-client :init "/query_controller_states" robot_controllers_msgs::querycontrollerstatesaction)))
  6: at (let ((#:prog13519 (send-super* :init :robot fetch-robot :base-frame-id "base_link" :odom-topic "/odom_combined" :base-controller-action-name nil args))) (progn (send self :add-controller :arm-controller) (send self :add-controller :torso-controller) (send self :add-controller :head-controller) (if (boundp 'fetch_driver_msgs::gripperstate) (ros::subscribe "gripper_state" fetch_driver_msgs::gripperstate #'send self :fetch-gripper-state-callback :groupname groupname) (ros::ros-warn "Could not find fetch_driver_msgs package, please install from source https://github.com/fetchrobotics/fetch_msgs")) (setq gripper-action (instance ros::simple-action-client :init "/gripper_controller/gripper_action" control_msgs::grippercommandaction :groupname groupname)) (setq moveit-robot (instance fetch-robot :init)) (send self :set-moveit-environment (instance fetch-moveit-environment :init :robot moveit-robot)) (when (and (boundp '*co*) default-collision-object) (send self :delete-headbox-collision-object) (send self :delete-keepout-collision-object) (send self :delete-ground-collision-object) (send self :add-headbox-collision-object) (send self :add-keepout-collision-object) (send self :add-ground-collision-object)) (setq fetch-controller-action (instance ros::simple-action-client :init "/query_controller_states" robot_controllers_msgs::querycontrollerstatesaction))) #:prog13519)
  7: at (prog1 (send-super* :init :robot fetch-robot :base-frame-id "base_link" :odom-topic "/odom_combined" :base-controller-action-name nil args) (send self :add-controller :arm-controller) (send self :add-controller :torso-controller) (send self :add-controller :head-controller) (if (boundp 'fetch_driver_msgs::gripperstate) (ros::subscribe "gripper_state" fetch_driver_msgs::gripperstate #'send self :fetch-gripper-state-callback :groupname groupname) (ros::ros-warn "Could not find fetch_driver_msgs package, please install from source https://github.com/fetchrobotics/fetch_msgs")) (setq gripper-action (instance ros::simple-action-client :init "/gripper_controller/gripper_action" control_msgs::grippercommandaction :groupname groupname)) (setq moveit-robot (instance fetch-robot :init)) (send self :set-moveit-environment (instance fetch-moveit-environment :init :robot moveit-robot)) (when (and (boundp '*co*) default-collision-object) (send self :delete-headbox-collision-object) (send self :delete-keepout-collision-object) (send self :delete-ground-collision-object) (send self :add-headbox-collision-object) (send self :add-keepout-collision-object) (send self :add-ground-collision-object)) (setq fetch-controller-action (instance ros::simple-action-client :init "/query_controller_states" robot_controllers_msgs::querycontrollerstatesaction)))
  8: at (send #:inst3518 :init)
  9: at (let ((#:inst3518 (instantiate fetch-interface))) (send #:inst3518 :init) #:inst3518)
  10: at (instance fetch-interface :init)
  11: at (setq *ri* (instance fetch-interface :init))
  12: at (progn (setq *ri* (instance fetch-interface :init)))
  13: at (if (not (boundp '*ri*)) (progn (setq *ri* (instance fetch-interface :init))))
  14: at (when (not (boundp '*ri*)) (setq *ri* (instance fetch-interface :init)))
  15: at (unless (boundp '*ri*) (setq *ri* (instance fetch-interface :init)))
  16: at (fetch-init)
  17: at #<compiled-code #X56144768ce18>
/opt/ros/melodic/share/euslisp/jskeus/eus/Linux64/bin/irteusgl 0 error: cannot find method :delete-attached-object-by-id in (send *co* :delete-attached-object-by-id "fetchheadbox")

というエラーが出ました。 CC: @mqcmd196

tkmtnt7000 commented 2 years ago

多分ですがjsk_pr2eusをワークスペースに入れてビルドが必要だと思います。ブランチはmasterで大丈夫なはずです。

k-okada commented 2 years ago

それでもいいんだけど,毎回ソース入れると,ソース入れてコンパイルするだけの演習になるので, https://github.com/jsk-ros-pkg/jsk_robot/pull/1707 みたいな対応はどうでしょうか?これでいかがobjectが残るんだけど,クリティカルな問題なければ,とりあえずはこれですすめてみたいです.

[ WARN] [1666845461.477285640]: ;; did not delete attached object "fetchheadbox"
[ WARN] [1666845461.477330472]: ;; did not delete attached object "keepout"
[ WARN] [1666845461.477348807]: ;; did not delete object "keepout"
[ WARN] [1666845461.477371186]: ;; did not delete attached object "ground"
[ WARN] [1666845461.477388182]: ;; did not delete object "ground"
tkmtnt7000 commented 2 years ago

ありがとうございます。 毎回jsk_pr2eusをソースから入れてくださいと思い出して言うのも大変なので賛成です。 既知の副作用みたいなものがなければよさそうに思います。

mqcmd196 commented 2 years ago

対応ありがとうございました

mqcmd196 commented 2 years ago

@AyumuIwa @shryt @Kodai-Yamada @20niship

自己紹介と皆さんの名前聞くの忘れていました,M2の大日方(おびなた)です 昨日用事があって途中で帰ってしまいました.その後トラブルはありましたか? 昨日のおさらいです.

Fetchを動かしたいとき

JSKに来たら

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

ターミナルごとの設定

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

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

のおまじないを打ったら

rostopic list

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

rlwrap roseus

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

AyumuIwa commented 2 years ago

開始方法をまとめていただき、ありがとうございます。 B3の岩田歩です。 昨日はありがとうございました。特にトラブルはありませんでした。 これからもよろしくお願いいたします。

mqcmd196 commented 2 years ago

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

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

実際に動かしてみる

昨日使ったコードの一覧

;; Fetch実機で姿勢を作ってみた.そのときの関節角度を知りたい
(send *ri* :state :potentio-vector) ;; ロボットの現在の関節角度を取得
(send *fetch* :angle-vector (send *ri* :state :potentio-vector)) ;; ロボットの現在の関節角度をビューワのFetchモデルに適用

;; 自分で作った姿勢をロボットに送りたい.
;; ビューワ中の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の略(多分)

mqcmd196 commented 2 years ago

Fetchを動かすときのコツ

Fetchを動かすときの注意

mqcmd196 commented 2 years ago

https://github.com/k-okada/jsk_robot/blob/spot_arm/jsk_spot_robot/README.md

shryt commented 2 years ago

spotのipは 133.11.216.166 、macは 14:eb:b6:67:d6:94 、ホスト名は StrelKa です もう一台は 133.11.216.165 、ホスト名は belKa です

mqcmd196 commented 2 years ago
(send *ri* speak-jp "こんにちは")
mqcmd196 commented 2 years ago

Coralの使い方 https://github.com/jsk-ros-pkg/coral_usb_ros

a-ichikura commented 2 years ago

Subscribed Topics rgb/camera_info (sensor_msgs/CameraInfo)

Camera calibration and metadata. 

rgb/image_rect_color (sensor_msgs/Image)

Rectified color image. 

depth_registered/image_rect (sensor_msgs/Image)

Rectified depth image, registered to the RGB camera. 

Published Topics depth_registered/points (sensor_msgs/PointCloud2)

XYZRGB point cloud. If using [PCL](http://wiki.ros.org/pcl_ros), subscribe as PointCloud<PointXYZRGB>.

reference : http://wiki.ros.org/depth_image_proc

AyumuIwa commented 2 years ago

岩田くんのきれいなsources.list

#deb cdrom:[Ubuntu 18.04.1 LTS _Bionic Beaver_ - Release amd64 (20180817)]/ bionic main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://jp.archive.ubuntu.com/ubuntu/ bionic main restricted
# deb-src http://jp.archive.ubuntu.com/ubuntu/ bionic main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://jp.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
# deb-src http://jp.archive.ubuntu.com/ubuntu/ bionic-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://jp.archive.ubuntu.com/ubuntu/ bionic universe
# deb-src http://jp.archive.ubuntu.com/ubuntu/ bionic universe
deb http://jp.archive.ubuntu.com/ubuntu/ bionic-updates universe
# deb-src http://jp.archive.ubuntu.com/ubuntu/ bionic-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu 
## team, and may not be under a free licence. Please satisfy yourself as to 
## your rights to use the software. Also, please note that software in 
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://jp.archive.ubuntu.com/ubuntu/ bionic multiverse
# deb-src http://jp.archive.ubuntu.com/ubuntu/ bionic multiverse
deb http://jp.archive.ubuntu.com/ubuntu/ bionic-updates multiverse
# deb-src http://jp.archive.ubuntu.com/ubuntu/ bionic-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://jp.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src http://jp.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu bionic partner
# deb-src http://archive.canonical.com/ubuntu bionic partner

deb http://security.ubuntu.com/ubuntu bionic-security main restricted
# deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://security.ubuntu.com/ubuntu bionic-security universe
# deb-src http://security.ubuntu.com/ubuntu bionic-security universe
deb http://security.ubuntu.com/ubuntu bionic-security multiverse
# deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse
a-ichikura commented 2 years ago

参考: 私がkinova(前にspotでついていた腕)でフリスビーを取ろうとしたときのlaunchファイル https://github.com/HiroIshida/snippets/blob/master/ros/launch_files/coral_ichikura/main.launch

pointcloud使うときに問題が起きたのでそのログ: https://github.com/HiroIshida/snippets/issues/29

20niship commented 2 years ago

@k-okada 昨日は欠席してしまい本当にすみません。生活習慣が乱れていて昼に寝落ちしていました。忙しい中準備してくださっているのに大変申し訳ないです 恐縮ですが, 前回どのようなことを行ったかご教示いただけますと幸いです。

k-okada commented 2 years ago

昨日はSpotの環境構築&プログラム,Coralで物体・人間認識,あたりをしていました。 Naoがつかいたいという事だったかと思うんだけど,使えるものがあるかな? > @a-ichikura @kochigami @ayfujii

来週でもよいし,それまででも来てくれれば(&用意できていれば)渡すことができると思います。

a-ichikura commented 2 years ago

@20niship にしみやくん M2の市倉です 私もSpotを使っていて、昨日はその場にいてみんなと一緒に作業していたので簡単にまとめると、

大まかにいうとこんな流れで、 後はそれぞれのゼミ生が自分のやりたいデモにどんな動作が必要かを考えたりSpotのarmがどんな動きをするのか見てみたりする感じだったと思います。

私はにしみやくんがどのロボットでどんな動作を作ろうとしているのかわかっていないのですが、もしスポットが使いたいということなら、環境構築は色々問題が起きやすいのと一人では難しいと思うのでここまでは来週までに追いついた方がいいと思います。

NaOはラボにあってバッテリーが動くDiaが今 @tkmtnt7000 が使用しているので、 私の家に一台あるものを使うのであれば持ってきます(土日のうちに運びます…)

tkmtnt7000 commented 2 years ago

M1の塚本です

今僕と市倉さんの席の間でmongodbテスト用にDiaを起動したままにしていますが、完ぺきにデモを動かしている状態ではないので、もし急ぎであれば僕の机の上のLaptop(Dia制御PC)でCtrl-cを押して引っこ抜いて持っていってもらっても構いません(申し訳ないですが今日もラボにはいないので...)

20niship commented 2 years ago

ありがとうございます!! Spotを使うことは考えていませんが、時間があれば動かしてみたいと思っています、、、!! 先輩方が暇なときがあれば質問しに行くかもしれないので、よろしくお願いします

今僕と市倉さんの席の間でmongodbテスト用にDiaを起動したままにしていますが、完ぺきにデモを動かしている状態ではないので、もし急ぎであれば僕の机の上のLaptop(Dia制御PC)でCtrl-cを押して引っこ抜いて持っていってもらっても構いません

ありがとうございます、演習が終わったのでこの後ラボに寄ってみようと思っています

@k-okada

tkmtnt7000 commented 2 years ago

もし急ぎであれば...僕の机の上のLaptop(Dia制御PC)でCtrl-cを押して引っこ抜いて持っていってもらっても構いません

一応近くに対応できる人がいたら持って行って大丈夫です

a-ichikura commented 2 years ago

@20niship cc. @knorth55 にしみやくんの進捗

Python SDKのdocuments: http://doc.aldebaran.com/2-5/naoqi/index.html

Tips:

network_interfaceはifconfigで出てきた133系の名前

naoeus

参考:https://github.com/jsk-ros-pkg/jsk_robot/blob/acb5000cd23249b38ad69bb5df3ae593fabbb1d5/jsk_naoqi_robot/naoeus/README.md 基本的に

(load "package://naoeus/nao-interface.l")
nao-init

喋る時は send *ri* :speak-jp "こんにちは"

来週〜 NaOの動きを作ってみる ボールのdetection(??)

a-ichikura commented 2 years ago

@tkmtnt7000 ちなみにNaOは持って帰っていません

20niship commented 2 years ago

今日は長い間本当にありがとうございました…!! 来週のゼミでは動かす所までいきたいので、今後ともよろしくお願いいたします。

knorth55 commented 2 years ago

@20niship

今日の有線が繋がらない問題の原因ですが,根本的にはNetworkManagerenp0s31f6unmanagedになっていたからです. とりあえず/usr/lib/NetworkManager/conf.d/10-globally-managed-devices.confを以下のように変更して対応しました.

2c2
< unmanaged-devices=*,except:type:wifi,except:type:wwan
---
> unmanaged-devices=*,except:type:wifi,except:type:wwan,except:type:ethernet

ただ,このファイルはaptで更新される,かつユーザが変更すべきではあまりないファイルです. よく考えれば,aptで更新されるので,/usr/lib/NetworkManager/conf.d/10-globally-managed-devices.confではなく,/etc/NetworkManager/NetworkManager.confに以下の行を書いたほうがいいなとあとで思いました.

unmanaged-devices=*,except:type:wifi,except:type:wwan,except:type:ethernet

上の行を記入した後sudo systemctl restart network-managerとかで再起動してみてください.

おそらくnetplanや何かのせいでenp0s31f6NetworkManagerの管理下からはずれてしまっているようです. /etc/network/interfaces/etc/netplanを見ましたが,何かしら変な設定があるようには見えませんでした.

時間があったらこれを試してみてください.

$ sudo NetworkManager --print-config
# NetworkManager configuration: /etc/NetworkManager/NetworkManager.conf (lib: 10-dns-resolved.conf, 20-connectivity-ubuntu.conf, no-mac-addr-change.conf) (run: 10-globally-managed-devices.conf) (etc: default-wifi-powersave-on.conf)

[main]
# rc-manager=symlink
# auth-polkit=true
# dhcp=dhclient
dns=systemd-resolved
plugins=ifupdown,keyfile

[connectivity]
uri=http://connectivity-check.ubuntu.com/

[ifupdown]
managed=false

[logging]
# backend=journal
# audit=true

[device]
wifi.scan-rand-mac-address=no

[device-mac-addr-change-wifi]
match-device=driver:rtl8723bs,driver:rtl8189es,driver:r8188eu,driver:8188eu,driver:eagle_sdio,driver:wl
wifi.scan-rand-mac-address=no
wifi.cloned-mac-address=preserve
ethernet.cloned-mac-address=preserve

[connection]
wifi.powersave=3
$ cat  /run/NetworkManager/conf.d/10-globally-managed-devices.conf

参考リンク: https://unix.stackexchange.com/questions/660311/why-does-a-network-connection-not-change-from-unmanaged

shryt commented 2 years ago

手先の座標系を取得してコピー

(send (send *spot* :arm :end-coords) :copy-worldcoords)
mqcmd196 commented 2 years ago

手先の座標系を取得してコピー (send (send spot :arm :end-coords) :copy-worldcoords)

いいですね,ちなみに README.md にみんなが学んだことや覚えておくとよいTipsをまとめておくと散逸しにくいです

knorth55 commented 2 years ago

spot実機に繋がずに*spot*インスタンスを作成する方法

1つのターミナルでroscoreを立ち上げる

roscore

もう1つのターミナルで

(load "package://spoteus/spot-interface.l")

(setq *spot* (instance spot-robot :init))
(objects (list *spot*))
knorth55 commented 2 years ago

spot用のrosinstall

- git:
    local-name: jsk-ros-pkg/jsk_robot
    uri: https://github.com/k-okada/jsk_robot.git
    version: spot_arm
- git:
    local-name: jsk_model_tools
    uri: https://github.com/k-okada/jsk_model_tools.git
    version: custom_limb
- git:
    local-name: jsk_pr2eus
    uri: https://github.com/jsk-ros-pkg/jsk_pr2eus.git
    version: master
- git:
    local-name: spot-ros
    uri: https://github.com/k-okada/spot_ros-arm.git
    version: 0a8c4b29768ae946d7c84aec9a2ae2d185ed97a9
shryt commented 2 years ago

@k-okada 現状の進捗として、IKを用いてボールを探して拾うモーションを作成するということと、spotのhandのカメラ(/spot/camera/hand_color/image)から画像を取得し、coralを用いて野球のボールを認識するということができるようになりました。 Screenshot from 2022-11-16 17-08-59

その一方で、浮上してきた問題があり、IKを解いて求めた姿勢をspotに送ったときに、最初はspotの胴体はほとんど動かなかったのですが、カメラの方のテストなどを色々した後に改めて同じコードを動かしたところ、spotの胴体がアームが動く途中に下がるようになってしまい、アームの先端位置もその分ずれるようになってしまいました。以下が、IKを解いて求めた姿勢をspotに送るときに実行したコードです。

(load "package://spoteus/spot-interface.l")
(if t ;実機につなぐなら
    (spot-init)
    (setq *spot* (instance spot-robot :init))
)
;(send *ri* :speak-jp "こんにちは")

(objects (list *spot*))

;(setq pose (send *ri* :potentio-vector))

;初期姿勢
(send *spot* :reset-pose)
(send *ri* :angle-vector (send *spot* :angle-vector) 2000)

(send *ri* :gripper-open)

;手を地面付近に下ろす
(setq endcoords (send (send *spot* :arm :end-coords) :copy-worldcoords)) ;手先の座標系を取得し、コピーする
(objects (list endcoords *spot*))   ;座標系を表示

(send endcoords :rotate (/ (- pi) 2) :z)  ;座標系の回転移動
(send *spot* :inverse-kinematics endcoords :move-target (send *spot* :arm :end-coords) :rotation-axis t :revert-if-fail nil)

(send endcoords :translate #f(300 0 0) :world)  ;座標系の平行移動
(send *spot* :inverse-kinematics endcoords :move-target (send *spot* :arm :end-coords) :rotation-axis t :revert-if-fail nil)

(send endcoords :translate #f(0 0 -500) :world)
(send *spot* :inverse-kinematics endcoords :move-target (send *spot* :arm :end-coords) :rotation-axis t :revert-if-fail nil)

(send *ri* :wait-interpolation)
(send *ri* :angle-vector (send *spot* :angle-vector) 2000)
shryt commented 2 years ago

note:

$ rqt_image_view

を使うと、画像の送られているトピックをGUIで閲覧することができる Screenshot from 2022-11-16 17-38-06

k-okada commented 2 years ago

カメラの方のテストなどを色々した後に改めて同じコードを動かしたところ、spotの胴体がアームが動く途中に下がるようになってしまい、アームの先端位置もその分ずれるようになってしまいました。以下が、IKを解いて求めた姿勢をspotに送るときに実行したコードです。

なるほど.これの対応は宿題にさせてください. 一方,ビジュアルフィードバック的に何回かIkを行うコードにもトライしてみましょう.

knorth55 commented 2 years ago

@sktometometo Coralのパノラマ画像から人のBoundingBox出すのってどうやってるんだっけ?

sktometometo commented 2 years ago

これです https://github.com/jsk-ros-pkg/jsk_recognition/blob/master/jsk_perception/sample/sample_rect_array_in_panorama_to_bounding_box_array.launch

sktometometo commented 2 years ago

PanoramaHumanPoseEstitaterでなくてPanoramaObjectDetectorの方使わないとパノラマ画像の切れ目でバグります

knorth55 commented 2 years ago

@20niship naoeuslispKinematics simulatorで移動するようにしました. https://github.com/jsk-ros-pkg/jsk_robot/pull/1731

https://user-images.githubusercontent.com/9300063/202148997-2c35761b-dcfd-4117-894d-5a8afb210172.mp4

knorth55 commented 2 years ago

@sktometometo

PanoramaHumanPoseEstitaterでなくてPanoramaObjectDetectorの方使わないとパノラマ画像の切れ目でバグります

なるほど,ありがとう! PanoramaHumanPoseEstimatorでもrectだすように最近したんだけど,それでもダメかな. まぁObjectDetectorでもいいんだけど.

knorth55 commented 2 years ago

@AyumuIwa

これらしいです. object detectionで人を認識して,BoundingBoxがでるようです.

https://github.com/jsk-ros-pkg/jsk_recognition/blob/master/jsk_perception/sample/sample_rect_array_in_panorama_to_bounding_box_array.launch

a-ichikura commented 2 years ago

にしみやくんの進捗 ★launchするときは、NAO_IPの指定を忘れないこと ★rossetipをする

naoで :go-posしてみる 使い方

(load "package://naoeus/nao-interface.l")
nao-init
(send *ri* :go-pos 1 0 0)

:go-posはx(前後) y(左右) θ(回転) 単位はmとdegree

参考ページ:https://github.com/jsk-ros-pkg/jsk_robot/blob/master/jsk_naoqi_robot/naoqieus/naoqi-interface.l ↑にある関数はsend riできる

★fetchのREADME.mdが参考にしやすい (https://github.com/jsk-ros-pkg/jsk_robot/tree/master/jsk_fetch_robot#fetcheus-apis)

カメラ画像を見たい時

rosrun image_view imgae_view image:=$(topic name)

rvizを使っても見ることができる

rosbagを取りたいとき

rosbag record $(topic name 1) $(topic name 2)

rosbagを再生したいとき

rosbag play $(bagfile name)
AyumuIwa commented 2 years ago

「岩田:傘を持ち付いてきてくれるロボット」

11月16日の進捗 ・spotで傘を持つ姿勢を作る ※ 人がしゃがんだ / 背伸びしたとき用の姿勢も作成(ikを解いた) ・全方位カメラからで取得した画像を自身のパソコンに表示(パノラマ画像) ・coral を利用し全方位カメラ画像で人物検出

mqcmd196 commented 2 years ago
git add <ファイル名>
git commit -m "<変更履歴>"
git push <自分のID> jsk_2022_10_semi

をやれば変更が残ります

a-ichikura commented 2 years ago

@AyumuIwa @shryt @Kodai-Yamada コントローラを使う時 Screenshot from 2022-11-16 19-20-06 Screenshot from 2022-11-16 19-20-27

sktometometo commented 2 years ago

@sktometometo

PanoramaHumanPoseEstitaterでなくてPanoramaObjectDetectorの方使わないとパノラマ画像の切れ目でバグります

なるほど,ありがとう! PanoramaHumanPoseEstimatorでもrectだすように最近したんだけど,それでもダメかな. まぁObjectDetectorでもいいんだけど.

切れ目の部分でマージする処理入ってないので二重になります

knorth55 commented 2 years ago

@sktometometo

切れ目の部分でマージする処理入ってないので二重になります

もう少し詳しく報告してほしいんだけど,なぜこれはObjectDetectorではうまくいってて,HumanのRects版ではうまくいってないのかな? どこでObjectDetectorは二重問題を解消しているのかな? それに気づいた時に,どこかにIssueをだしたのかな?

EDIT: https://github.com/jsk-ros-pkg/jsk_recognition/issues/2746 こちらに移動.

knorth55 commented 2 years ago

@AyumuIwa

Panorama画像がcompressed圧縮形式で出ていないという話だったので,圧縮形式で出るようにしました. https://github.com/jsk-ros-pkg/jsk_recognition/pull/2745

@mqcmd196 上記のPRをSpot体内のブランチに入れてくれると,次回のゼミでPanorama画像もCompressedでネットワーク越しに見れると思います.

mqcmd196 commented 2 years ago

@knorth55 ありがとうございます!!!

mqcmd196 commented 2 years ago

@Kodai-Yamada くんの進捗

mqcmd196 commented 2 years ago

Spotユーザは次回,外実験をしようと思います.

@AyumuIwa @Kodai-Yamada 室内で傘と竿は意外と危ないということがわかったので,認識,リール抜きの動作の確認は次回外でやってみましょう.で,そのときの動画を撮ってこのIssueに貼って先輩たちをオッと言わせてみましょう(?) @shryt 外でボール認識がちゃんとできるか試してみましょう.画像認識は光量とか背景とかで結果が変わることがあります.外の環境でうまくできるか?そのあとは画像認識からGraspingの動作を作れるか?

@AyumuIwa パノラマでCompressedImageを出すPRを@knorth55 先生が作ってくださいました.今日も話したけど今ある人認識は,人全てに対してBoundingBoxを出してしまうので,自分しかいない環境か,自分が最も近くにいて,それ以外の人は十分離れた距離にいる仮定をおいて動作コードを書いていくといいと思います.BoundingBoxをeusの中でsubscribeすることになるんだけど,難しかったら次回か来てくれたときに一緒にやってみましょう @Kodai-Yamada 隣の部屋のメカできる人を召喚してみるので,設計に困ったら相談しましょう.僕も一緒に勉強します.

mqcmd196 commented 2 years ago

@Kodai-Yamada 時間あるときでいいので,今日渡したdynamixel,基板,リール,ケーブルの写真を貼ってくれると助かります