Open k-okada opened 3 years ago
semi.rosinstall
ファイルが更新されたときの対処方法
k-okada@p51s:~/semi_ws/src$ wstool remove naoqi_driver
/usr/lib/python2.7/dist-packages/wstool/config_yaml.py:74: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
yamldata = yaml.load(stream)
Overwriting /home/k-okada/semi_ws/src/.rosinstall
Removed entries ['naoqi_driver']
k-okada@p51s:~/semi_ws/src$ wstool merge https://raw.githubusercontent.com/k-okada/jsk_demos/jsk_2021_10_semi/jsk_2021_10_semi/semi.rosinstall
/usr/lib/python2.7/dist-packages/wstool/config_yaml.py:74: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
yamldata = yaml.load(stream)
Performing actions:
Add new elements:
naoqi_driver
Config changed, maybe you need run wstool update to update SCM entries.
Overwriting /home/k-okada/semi_ws/src/.rosinstall
update complete.
k-okada@p51s:~/semi_ws/src$ wstool update
/usr/lib/python2.7/dist-packages/wstool/config_yaml.py:74: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
yamldata = yaml.load(stream)
Prepare updating https://github.com/kochigami/naoqi_driver (version kochigami-develop) to /home/k-okada/semi_ws/src/naoqi_driver
Url https://github.com/k-okada/naoqi_driver does not match https://github.com/kochigami/naoqi_driver requested.
(d)elete and replace, (a)bort, (b)ackup and replace, (s)kip: d
``
@ayfujii @kochigami 今年のゼミ生がNaoを使いたいと言っているんだけど,どの機体つかったらいいかな.
73A4の私の席の上にいる赤いNao2体は使っていただいて大丈夫です
ご返信が遅れてしまい申し訳ございません。 研究室のNAOのことは詳しくなくなってしまったのですが、 自宅にLapisを連れて帰っており、研究室に持って行きます。 いつまでに戻せばよろしいでしょうか。ご迷惑をお掛けし申し訳ございません。
@kochigami さん @ayfujii さん。ありがとうございます。 @Takuma-Hiraoka が poco を、@ssk-yoshimuraがpecoをかりました。
Nao環境の設定方法
pynaoqi-python2.7-2.5.5.5-linux64をダウンロードして
mkdir pynaoqi
unzip pynaoqi-python2.7-2.5.5.5-linux64.zip
mv pynaoqi-python2.7-2.5.5.5-linux64 pynaoqi
sudo apt install python-gobject-2
bashrc に以下を追加
# Please use Python NAOqi SDK version >= 2.5.5 (https://github.com/jsk-ros-pkg/jsk_robot/issues/1099)
export PYTHONPATH=$HOME/pynaoqi/pynaoqi-python2.7-2.5.5.5-linux64/lib/python2.7/site-packages:$PYTHONPATH
export NAO_IP=133.11.216.130 #naoを起動後ボタンを押してnaoが喋るIPアドレス
ノードの立ち上げ
rossetip
roslaunch jsk_nao_startup.launch network_interface:=(ifconfigで出てくる値)
別のターミナルで
roscd naoeus
roseus
(load "nao-interface.l")
(nao-init)
(send *nao* :reset-pose)
(send *ri* :servo-on)
(send *ri* :angle-vector (send *nao* :angle-vector)
特有のメソッドは https://github.com/jsk-ros-pkg/jsk_robot/tree/master/jsk_naoqi_robot/naoqieus
@mqcmd196 さんありがとうございました。
$ roslaunch jsk_nao_startup jsk_nao_startup.launch network_interface:=(ifconfigで出てくるやつ)
を行ったとき、 GUIが立ち上がるまで5分以上かかる時は、 dockerのinterfaceを消すとよいらしい
sudo ifconfig docker0 down
でも、dockerがなくても立ち上がらない時もあったので、関係ないかもしれない 数秒で立ち上がらないときは基本的にはそのまま立ち上がらない Ctrl+Cで一度止めてから再びやると大抵うまくいく
naoに喋らせる方法など
$ (send *ri* :set-master-volume 100)
$ (send *ri* :speak "hello obinata")
$ (send *ri* :stop-grasp)
$ (send *ri* :start-grasp)
$ (send *ri* :go-pos 0.05 0 0)
$ (send *ri* :servo-off)
ほか、サンプルプログラムがroscd naoeus
とした先のsampleディレクトリにある
ブラウザでnaoのipアドレスを打ち込み、設定などできる
.bashrcを書き換えたときは $ bash
その後$ ping $NAO_IP
で接続の確認ができる
Naoについて質問があります。 両足を地面につけて、右腕を前に出すようなポーズをfullbody-inverse-kinematicsで作りました。 実機でそのポーズにしようとしましたが、足が勝手に動いて、姿勢が不安定になります。
(load "package://naoeus/nao.l")
(setq *nao* (NaoH25V50))
(objects (list *nao*))
(send *nao* :reset-pose)
;; fullbody-ikで姿勢を決める
(setq rleg-coords (send *nao* :rleg :end-coords :copy-worldcoords))
(setq lleg-coords (send *nao* :lleg :end-coords :copy-worldcoords))
(setq dest-full (make-coords :pos (float-vector 150 -40 100)))
(send *nao* :fullbody-inverse-kinematics
(list rleg-coords
lleg-coords
dest-full)
:move-target
(list (send *nao* :rleg :end-coords)
(send *nao* :lleg :end-coords)
(send *nao* :rarm :end-coords))
:link-list
(list (send *nao* :link-list (send *nao* :rleg :end-coords :parent))
(send *nao* :link-list (send *nao* :lleg :end-coords :parent))
(send *nao* :link-list (send *nao* :rarm :end-coords :parent)))
:translation-axis (list t t t)
:rotation-axis (list t t nil)
:target-centroid-pos (midpoint 0.5
(send *nao* :rleg :end-coords :worldpos)
(send *nao* :lleg :end-coords :worldpos))
:cog-translation-axis :z
:thre (list 30 30 30)
:centroid-thre 5
)
;; 実機に姿勢を送る
(send *ri* :servo-on)
(send *ri* :angle-vector (send *nao* :angle-vector))
(send *ri* :wait-interpolation)
;; 実機の角度を取得、表示する
(send *ri* :state)
(send *nao* :angle-vector (send *ri* :potentio-vector))
画像は順に、(send *ri* :angle-vector (send *nao* :angle-vector))
で実機に送った関節角度のポーズと、
その後(send *ri* :potentio-vector)
で実機から得た実際の関節角度によるポーズです。
実機では、右足が勝手に後ろに出ます。
左腕で同じことをすると、左足が後ろにでるので、姿勢を安定させようとするような処理がされているのかもしれないと思いました。
勝手に足などを動かさず、指定した関節角度の通りに動かすことはできますか?
@ssk-yoshimura
自分はnaoを使ったことがなく自信がないですが,
naoのドキュメントに書いてある:set-background-movement-enabled
を設定するとどうでしょう.
; disable background movement
send *ri* :set-background-movement-enabled nil
@shmpwk roseusで設定してみましたが、次のようになり、応答が返ってきません。
irteusgl$ (send *ri* :set-background-movement-enabled nil)
[ INFO] [1636206502.967988886]: waitForService: Service [/background_movement/set_enabled] has not been advertised, waiting...
:get-background-movement-enabled
してみましたが同様でした。
irteusgl$ (send *ri* :get-background-movement-enabled)
[ INFO] [1636206727.960870712]: waitForService: Service [/background_movement/is_enabled] has not been advertised, waiting...
@ssk-yoshimura
waitForService: Service [/background_movement/set_enabled] has not been advertised, waiting...
と言っているので,serviceが来るのを待っているようです.
メソッドのdocのLocationnaoqi_apps/launch/background_movement.launch
にヒントがありそうで,これは
naoqi_bridgeのnaoqi_appsパッケージの [kochigami-develop]ブランチ,ここにlaunchファイルがあります.
このlaunchを立ち上げるために,次を実行します.
cd
git clone -b kochigami-develop git@github.com:kochigami/naoqi_bridge.git
cd
rosdep update
rosdep install --from-paths src --ignore-src -y -r
catkin build
(↑これらは岡田先生のsemi.rosinstallで自動的に実行されていたので不要でした.)
source <YOUR_WORKSPACE>/devel/setup.bash
roslaunch naoqi_apps background_movement.launch nao_ip:=<YOUR_NAO_IP> nao_port:=<YOUR_NAO_PORT>
最後のlaunchで自分のnao ipはわかると思うのですが,portで何を設定するのか,パッと探した感じよくわかりませんでした.(なしでもいけるんでしょうか,もう少し探してみます.)
横から失礼します。 予想なので間違っているかもしれないのですが・・・
もしNAOの電源を入れてそのまま使われているようでしたら、
AutonomousLifeという、NAOを生き物のように動かす仕組みがオンのままなのかなと思いました。
jsk_nao_startup.launchを実行した後、
rosservice call /nao_robot/pose/life/get_state
でenabledかdisabledになっているか確認出来て、
rosservice call /nao_robot/pose/life/disable
でオフにできると思います。
get-background-movementについては、AutonomousLifeの機能を一部だけ切り取ったものになっています。
(なので、AutonomousLifeを落としさえすれば、disabledにしなくて大丈夫です。)
これ自体は、shmpwkさんがおっしゃるようにnaoqi_apps/launch/background_movement.launch
を実行するとサービスを呼べるようになります。
portについては、私は今まで何か設定したことはなく、それで困ったことはないので、デフォルトのままで大丈夫ではないかなと思います。
色々書きましたが参考にならなかったらすみません。
@shmpwk @kochigami
naoqi_dashboardでDisable Lifeに設定しているので、AutonomousLifeはオフになっています。
naoqi_apps/launch/background_movement.launch
を実行してみました。
Naoqiのバージョンが古いようで、うまくいきません。
$ roslaunch naoqi_apps background_movement.launch nao_ip:=$NAO_IP
... logging to /home/mech-user/.ros/log/129133bc-3f67-11ec-ab69-20791860f1a8/roslaunch-ki00134-1400.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://ki00134:39171/
SUMMARY
========
PARAMETERS
* /rosdistro: melodic
* /rosversion: 1.14.11
NODES
/
naoqi_background_movement (naoqi_apps/naoqi_background_movement.py)
ROS_MASTER_URI=http://localhost:11311
process[naoqi_background_movement-1]: started with pid [1424]
[ERROR] [1636247434.111368]: Naoqi version of your robot is 2.1.4.13, which doesn't have a proxy to ALBackgroundMovement.
[naoqi_background_movement-1] process has died [pid 1424, exit code 1, cmd /home/mech-user/semi_ws/src/naoqi_bridge/naoqi_apps/nodes/naoqi_background_movement.py --pip=192.168.1.11 --pport=9559 __name:=naoqi_background_movement __log:=/home/mech-user/.ros/log/129133bc-3f67-11ec-ab69-20791860f1a8/naoqi_background_movement-1.log].
log file: /home/mech-user/.ros/log/129133bc-3f67-11ec-ab69-20791860f1a8/naoqi_background_movement-1*.log
[naoqi_background_movement-1] restarting process
@ssk-yoshimura
(send *nao* :angle-vector (send *ri* :potentio-vector))
したあとの,足の関節をそれぞれの角度を知りたいです
ロボットに送る前は
8.irteusgl$ (send *nao* :legs :crotch-p :joint-angle)
(-33.811 -9.13465)
9.irteusgl$ (send *nao* :legs :crotch-y :joint-angle)
(9.94046 -12.8398)
10.irteusgl$ (send *nao* :legs :crotch-r :joint-angle)
(7.97013 6.378)
11.irteusgl$ (send *nao* :legs :knee-p :joint-angle)
(27.1275 19.1195)
12.irteusgl$ (send *nao* :legs :ankle-p :joint-angle)
(-5.62529 -6.10682)
13.irteusgl$ (send *nao* :legs :ankle-r :joint-angle)
(-3.4198 -2.95268)
となっていますが,
http://doc.aldebaran.com/2-1/family/robots/joints_robot.html#pelvis-joints
に書いてあるように,:crotch-y
は同じ角度(対象?)にならないといけなくて,それで想定通りの姿勢になっていないように思います.
@k-okada
ロボットに送った後の角度は下のようになっていて、:crotch-y
だけ違っているので、これが原因のようです。電源offの状態で足を手動で動かしてみたら、たしかに対称に動きました。
23.irteusgl$ (send *nao* :lleg :crotch-y :joint-angle)
9.75839
24.irteusgl$ (send *nao* :legs :crotch-p :joint-angle)
(-33.748 -8.79157)
25.irteusgl$ (send *nao* :legs :crotch-y :joint-angle)
(9.75839 9.75839)
26.irteusgl$ (send *nao* :legs :crotch-r :joint-angle)
(8.08845 6.15482)
27.irteusgl$ (send *nao* :legs :knee-p :joint-angle)
(27.244 19.1628)
28.irteusgl$ (send *nao* :legs :ankle-p :joint-angle)
(-5.45169 -6.32579)
29.irteusgl$ (send *nao* :legs :ankle-r :joint-angle)
(-3.24959 -2.81013)
:crotch-y
の対称の条件をどう計算に使うかは考え中ですが、ひとまず解決しました。色々勉強になりました。
岡田先生、@shmpwkさん、@kochigamiさんありがとうございました。
@Takuma-Hiraoka 等身大ヒューマノイド使いたい HRP2
@s-yuzaki 撫でたい マップをもたせて移動させたい
@YUKINA-3252 ・特にこれといった特殊なやりたいことはないが、何らかの認識などができればいいと思っています(動かすだけではなくて)
@ssk-yoshimura 認識(カメラ)、人とものを受け渡ししたいです
学生「レポート提出お願い」 ロボットA: 言葉認識、ロボットBに指令:吉村 pr2 ロボットB: レポート用紙持ってくる:平岡 hrp2 ロボットC: レポート用紙に書く:岩田 fetch ロボットD: レポートを所定の場所に出す:勇崎 spot
@s-yuzaki @ssk-yoshimura @YUKINA-3252 @Takuma-Hiraoka
1) spot のモデルの作り方がhttps://github.com/k-okada/jsk_demos/tree/jsk_2021_10_semi/jsk_2021_10_semi にあります.https://github.com/k-okada/jsk_demos/pull/93/files の差分をみて環境を更新すると使えるようになるとおもいます. これで,姿勢を作って,用意ができたら研究室にきて @sktometometo にロボットを起ち上げてもらえば,好きな姿勢に替えられるとおもいます.
2)rostopic に出ているUnicodeを読む方法ですが以下でした
k-okada@p51s:~$ rostopic echo /text
data: !!python/str "\u3053\u3093\u306B\u3061\u306F 1636542913.42"
---
data: !!python/str "\u3053\u3093\u306B\u3061\u306F 1636542913.52"
^Ck-okada@p51s:~$ rostopic echo /text | ascii2uni -a U -q
data: !!python/str "こんにちは 1636542916.02"
---
data: !!python/str "こんにちは 1636542916.12"
@708yamaguchiさんから教えて頂いたのですが rostopic に出ているUnicodeを読む方法として
rostopic echo --filter "print('transcript: [%s]\n---'%(', '.join(map(lambda x: '\'%s\''%(x.decode('utf-8')), m.transcript))))" /speech_to_text
transcript: [' こんにちは 。', ' こんにちは あ 。', ' 今日 わ 。', ' こんにちは は 。', ' 今日 は 。']
もあるそうです
Euslispの中でspotの姿勢を変える方法について。
以下のプルリクエストにある:body-inverse-kinematics
を使ってみてください。
https://github.com/sktometometo/jsk_robot/pull/81
サンプルコード
(load "package://spoteus/spot-utils.l")
(spot)
(objects (list *spot*))
(dotimes (i 100)
(send *spot* :body-inverse-kinematics
(make-coords :pos (float-vector 0 (* 100 (cos (* pi i 0.02))) (* 100 (sin (* pi i 0.02))))))
(unix:usleep 20000)
(send *irtviewer* :redraw))
(dotimes (i 100)
(send *spot* :body-inverse-kinematics
(make-coords :pos (float-vector 0 0 (* 20 (sin (* pi i 0.02))))
:rpy (float-vector (* 0.2 (sin (* pi i 0.02))) (* 0.2 (sin (* pi i 0.02))) (* 0.2 (sin (* pi i 0.02))))))
(unix:usleep 20000)
(send *irtviewer* :redraw))
@mqcmd196
以下のようにしてspotのbody姿勢のrpy情報を取れると思うので、これを元にして(send *ri* :body-pose r p y)
に引数として与えられるようにしましょう。
11.irteusgl$ (send *spot* :body-inverse-kinematics
(make-coords :pos (float-vector 0 0 10)
:rpy (float-vector 0.1 0.1 0.1)))
#f(-9.19325 40.4579 -96.1943 -9.26349 44.0091 -96.0219 -2.76627 31.1499 -78.2145 -2.79712 37.7178 -84.0848)
12.irteusgl$ (send *spot* :coords)
#<coordinates #X5634d0508cd8 0.198 -0.185 9.446 / 0.1 0.1 0.1>
@k-okada @708yamaguchi spotの情報ありがとうございます。シミュレータで遊んでみます。
@708yamaguchi kinovaspot のアームをつかってIKを解く方法も教えてください. https://github.com/k-okada/jsk_demos/blob/jsk_2021_10_semi/jsk_2021_10_semi/euslisp/demo.l で,みんなイロイロな姿勢をつくっているので,そこに追加できればとおもっています
@k-okada
このブランチを使ってください
https://github.com/sktometometo/jsk_robot/tree/develop/spot
上述した、*spot*の胴体のみを動かす:body-inverse-kinematics
も、*spotkinova*から動かせるようにしました。
サンプルコード
(load "package://spotkinovaeus/spotkinova.l")
(spotkinova :type :gen3_lite_gen3_lite_2f)
(objects (list *spotkinova*))
(dotimes (i 100)
(send *spotkinova* :move-to (make-coords) :world)
(send *spotkinova* :reset-pose)
(let ((arm-pose (send *spotkinova* :head :end-coords :copy-worldcoords)))
(send *spotkinova* :fullbody-inverse-kinematics
(send arm-pose :translate
(float-vector (* 300 (cos (* pi i 0.02))) 0 (* 300 (sin (* pi i 0.02))))
:world)))
(unix:usleep 20000)
(send *irtviewer* :redraw))
@708yamaguchi
send *ri* :body-pose (send *spot* :coords)
で送れるようにするという認識であっていますか?
send ri :body-pose (send spot :coords) で送れるようにするという認識であっていますか?
はい,僕はそれが理想かなと考えています.
ただ,すでに:body-pose
を使っているコードがあるのなら,そこも一緒に変更する必要があります.
僕がさっと検索したところ,以下のコードくらいかな,と思います.
https://github.com/sktometometo/jsk_robot/blob/b2d177352f796bf97369f8bb03481f8664ce89cc/jsk_spot_robot/spoteus/demo/sample_basics.l#L56-L71
あと,
(send *spot* :coords)
を直接触ると副作用がありそうなので,
(defclass spot-robot
(:body-pose ()
(send *spot* :coords :copy-woldcoords))
みたいに現在のspotのcoordsを返す関数を定義して,
(send *spot* :body-inverse-kinematics coords) ;; returns angle-vector
(send *ri* :body-pose (send *spot* :body-pose))
と呼べるようにするのが見た目的にも綺麗なのでしょうか.
参考: https://github.com/jsk-ros-pkg/jsk_robot/pull/1376#discussion_r747142790
https://github.com/tongtybj/jsk_demos/blob/10b4243d32adf1bad7abf4d2f4d13736b39f86c2/jsk_spot_watch_dog/scripts/watch-dog.l#L175 で使っていない? で,coordsでも良いんだけど,初心者向け/とりあえずちょっと動かす向けに,オリジナルの (send ri :body-pose 0 0.2 0) の直感性はそれで残したほうが良いと思っているんだけどこれは, (send ri :body-pose (make-cascoords :pos #f(0 0 0) :rpy (float-vector 0 0.2 0))) になるのかな?
-- ◉ Kei Okada
-- ◉ Kei Okada
2021年11月11日(木) 19:36 Naoya Yamaguchi @.***>:
send ri :body-pose (send spot :coords) で送れるようにするという認識であっていますか?
はい,僕はそれが理想かなと考えています.
ただ,すでに:body-poseを使っているコードがあるのなら,そこも一緒に変更する必要があります. 僕がさっと検索したところ,以下のコードくらいかな,と思います. https://github.com/sktometometo/jsk_robot/blob/b2d177352f796bf97369f8bb03481f8664ce89cc/jsk_spot_robot/spoteus/demo/sample_basics.l#L56-L71
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.
で,coordsでも良いんだけど,初心者向け/とりあえずちょっと動かす向けに,オリジナルの (send ri :body-pose 0 0.2 0) の直感性はそれで残したほうが良いと思っているんだけどこれは, (send ri :body-pose (make-cascoords :pos #f(0 0 0) :rpy (float-vector 0 0.2 0))) になるのかな?
https://github.com/sktometometo/jsk_robot/pull/84 ではその予定ですが,rpyも送れるようにしておこうと思います.ただSpot本体にx,yの姿勢司令を送ることはできないので,x,yの姿勢を動かさない制約を設けて逆運動学を解く必要があります.
上のブランチでhttps://github.com/jsk-ros-pkg/jsk_demos/issues/1347#issuecomment-965323166 の2つ目の例にならって
(dotimes (i 100)
(send *spot* :body-inverse-kinematics
(make-coords :pos (float-vector 0 0 (* 20 (sin (* pi i 0.02))))
:rpy (float-vector (* 0.2 (sin (* pi i 0.02))) (* 0.2 (sin (* pi i 0.02))) (* 0.2 (sin (* pi i 0.02))))
(send *ri* :body-pose (send *spot* :copy-worldcoords))
)
を実行した動画です.
x,yの姿勢を動かさない制約を設けて逆運動学を解く方法
(load "package://spotkinovaeus/spotkinova.l")
(spotkinova :type :gen3_lite_gen3_lite_2f)
(objects (list *spotkinova*))
(dotimes (i 100)
(send *spotkinova* :move-to (make-coords) :world)
(send *spotkinova* :reset-pose)
(let ((arm-pose (send *spotkinova* :head :end-coords :copy-worldcoords)))
(send *spotkinova* :fullbody-inverse-kinematics
(send arm-pose :translate
(float-vector (* 200 (cos (* pi i 0.02))) 0 (* 300 (sin (* pi i 0.02))))
:world)
:root-link-virtual-joint-weight #f(0.0 0.0 0.1 0.1 0.5 0.5)
))
(unix:usleep 20000)
(send *irtviewer* :redraw))
(備考 Z, roll, pitch, yawにだけ動く関節のクラスがhttps://github.com/euslisp/jskeus/blob/master/irteus/irtmodel.l などに定義されていれば、そのクラス名をhttps://github.com/euslisp/jskeus/blob/89932980fe64eb0c0db6dbe6b79b61e2d3d17169/irteus/test/test-irt-motion.l#L222 の引数wheel-class
に与えることで同じことができるが、現状定義されていない)
平岡くん、すごく助かります。 virtual jointについて、勉強しておきます。
@Naoki-Hiraoka さんありがとうございます.eusで作った姿勢を実機へ送る方法です.https://github.com/sktometometo/jsk_robot/pull/85 が必要です.
(send *spotkinova* :move-to (make-coords) :world)
(send *spotkinova* :reset-pose)
(let ((arm-pose (send *spotkinova* :head :end-coords :copy-worldcoords)))
(send *spotkinova* :fullbody-inverse-kinematics
(send arm-pose :translate
(float-vector 0 0 300)
:world)
:root-link-virtual-joint-weight #f(0.0 0.0 0.1 0.1 0.5 0.5)))
;;実機への指令
(send *ri* :angle-vector (send *spotkinova* :angle-vector) 8000) ;;アームのみが動く
(send *ri* :body-pose (send *spotkinova* :copy-worldcoords)) ;;spotのみが動く
kinova-armの関節角とspotの姿勢は別々に送る必要があります.
ここからは余談ですが,ロボット実機の関節角度は
(send *ri* :state :potentio-vector :wait-until-update t)
で一般に取得できますが,Spotに関してはそれをsend *spotkinova* :angle-vector (send *ri* :state :potentio-vector :wait-until-update t)
としてeusモデルに適用してしまうと,eusモデルのspotの原点の姿勢を維持しながら足を動かすことになり,片足が浮いてしまうような姿勢になります.一度やってみると面白いです
https://github.com/sktometometo/jsk_robot/pull/86 を使えば、:root-link-virtual-joint-weight #f(0.0 0.0 0.1 0.1 0.5 0.5)
をデフォルトで呼んでくれるようになります。(生成される動作などに変わりはありません)
spotがeuslispで動きました。ありがとうございます。 初歩的な質問なのですが、掴ませる動作をさせようと思いspotkinova.lにstart-graspやstop-graspという関数があったので
(load "package://spotkinovaeus/spotkinova.l")
(spotkinova :type :gen3_lite_gen3_lite_2f)
(objects (list *spotkinova*))
(send *spotkinova* :start-grasp)
などと実行したのですが
cannot find method :right_finger_bottom_joint in (send self :right_finger_bottom_joint :joint-angle (rad2deg pos))
と表示されました。掴ませる動作をするにはどのようにすればいいでしょうか?
@s-yuzaki 自分でも同じエラーが出ることを確認しました.報告ありがとうございます.直しておきます.
ちなみに,実機には send *ri* :start-grasp
で正しく送れます
@s-yuzaki https://github.com/sktometometo/jsk_robot/pull/87 で直ると思います
Coral TPUの環境構築 https://github.com/knorth55/coral_usb_ros ↑melodicの部分をやること。
@kochigami さん @ayfujii さん。 73A4の@ayfujii さんの机の上にpocoを返却しました。ありがとうございました。
@ssk-yoshimura @YUKINA-3252 @s-yuzaki @Takuma-Hiraoka 昨日はお疲れ様でした. 昨日作ったプログラムをcommitしてpushしてPull Request (PR) 作ってくれると嬉しいです.
@Takuma-Hiraoka の分は https://github.com/k-okada/jsk_demos/pull/97 かな.こういう感じでお願いします. ビデオや写真も差し支えない範囲で,PRのコメント(ブラウザでPR作るときに書き込む文章)に入れてくれると何やっているかわかりやすいです.
@ssk-yoshimura @YUKINA-3252 @s-yuzaki @Takuma-Hiraoka 今日も途中で抜けてしまったけど,そのあと順調に進んだかな. コードを追加した人はPRを作ってみてくれると嬉しいです. 25日26日は午後の演習が休講だと思うけど,つまり僕も暇なので,今日できなかった質問とか相談がある人は対応できるので,居室にくるなり,TV会議するなりできるので連絡ください.
@YUKINA-3252 https://github.com/k-okada/jsk_demos/pull/96 で spotkinova関連のコードが消えているんだけど,https://github.com/k-okada/jsk_demos/pull/101 で戻しました.
多分,spotkinovaveus というパッケージがなくて,コメントアウトしたんだと思うんだけど,
https://github.com/k-okada/jsk_demos/tree/jsk_2021_10_semi/jsk_2021_10_semi
の変更部分に対応してみるとよいとおもいます.具体的にはwstool update
してから
https://github.com/k-okada/jsk_demos/pull/93/files#diff-d8bec2a7e222faaf1baa32d95fea137c193ff587fc06bf39436048dc058b3eaeR24-R36
の追加部分をすれば良いんだけど,多分これだけだと難しいからどこか(最悪来週月曜日の演習)でサポートできると思います.
もしかしたらゼミとは関係ないかもしれませんが、fetch15のRunStopボタンが押されたままになっていました。
この状態だとfetchを動かせないので、次に使う人のためにも使い終わったら元に戻しましょう。
逆に、fetchが動かなかったときはRunStopボタンが押されたままになっていないかを確認してみましょう。
押されているRunStop | 押されていないRunStop |
---|---|
を使うとspotとkinova両方のrosbagを取ることができます rosbag_play側のlaunchファイルはまだ作成できていないので完成次第共有します
↑続きです
kinovaの腕についているrealsense画像のdecompressがうまくいっていませんがとりあえず必要最低限のものは再生できるかと思います
roslaunch jsk_spotkinova_startup rosbag_record.launch rosbag:=<your intended file path>
roslaunch jsk_spotkinova_startup rosbag_play.launch rosbag:=<rosbag file path> # ファイルパスは絶対パスで通したほうが良さそうです
https://github.com/sktometometo/jsk_robot/pull/102 に更新していきます
sktometometo/jsk_robot#102 のrosbag_play.launchを更新しました。 kinovaの手首についているカメラ画像も問題なく再生できると思います。
@s-yuzaki kinova_wrist_cameraが出している点群のrviz上での向きについてhttps://github.com/sktometometo/jsk_robot/pull/104 で直しました。 新たにrosbagファイルを取り直してもらうと正しい向きでrviz上に表示されると思います。
@tkmtnt7000 ありがとうございます。試してみます。
さっきhuman_pose_estimatorの画像が見えなくてデバッグしていたところ、以下のように/edgetpu_human_pose_estimator/model_file
のrosparamが書き換わっているのを発見しました。
ロボットをマスターにしてrosparam setをするとその結果がロボットのroscoreに残り続けてしまうので、慎重に行いましょう。
$ rosparam get /edgetpu_human_pose_estimator/model_file
/home/mech-user/coral_ws/src/coral_usb_ros/python/coral_usb/posenet/models/mobilenet/posenet_mobilenet_v1_075_481_641_quant_decoder_edgetpu.tflite
若林くん、塚本くん、デバッグのお手伝いありがとうございました。
すみません、今後気をつけます。
@k-okada @Takuma-Hiraoka @YUKINA-3252 @s-yuzaki
3月になり、ゼミの4人でゼミを再開しようという話になりました。
現状の日程としては、個人は行きたい日に行くとして、 少なくとも3/9(水)は4人で集まるということで考えています。
4人で話し合ったのですが、主なやりたいこととしては、
・研究室で作っている回路、モーターの仕組みを勉強して、自分で動かしてみたい(例えば、腱駆動の部屋やJAXONの部屋、ドローンの部屋で使っている回路などに触れてみたい) ・できれば、それを使ってなにか作る。
という話になっています。 上のような回路やモーターで、私たちゼミ生が使用できるようなものはありますか?
よろしくお願いします。
はい.了解です.僕は9日は一日外出なので,一回方針確認で8日とかどうかな. カレンダーに予定をいれたので都合が悪ければ,他の日に移動させてみてください.その週は午前中だったら水曜日以外あいています.今週の金曜日の16時以降とかでも良いです
@kindsenior @haraduka @makabe0510 @tongtybj ということなので,なにか良いドライバ基盤+コントローラあれば推薦してください. ー 基盤は練習も兼ねてケーブルぐらい配線するとよいかも ー 回路,モータの仕組みはほぼブラックボックスかと思うけど,コントローラ側がそこそこ見通せると良いと思うけど ー 2軸ぐらいで簡単に作ってもらって,上手く行けばロボットに組み込めると良いです
@s-yuzaki @YUKINA-3252 @Takuma-Hiraoka @ssk-yoshimura
https://github.com/k-okada/jsk_demos/tree/jsk_2021_10_semi/jsk_2021_10_semi