source /opt/ros/melodic/setup.bash
mkdir -p semi_ws/src
cd semi_ws/src
wstool init
wstool merge https://gist.githubusercontent.com/k-okada/db02de337e957d482ebb63c7a08a218b/raw/20b19f3ad92a8576510c0e0aa02bcd311b347beb/semi.rosinstall
wstool update
rosdep install --from-paths . --ignore-src -y -r
cd ..
catkin build -vi
source devel/setup.bash
とすると以下のプログラムでロボットのモデルを作ることが出来ます.
(load "package://peppereus/pepper.l")
(setq *pepper* (pepper))
(objects (list *pepper*))
(load "package://naoeus/nao.l")
(setq *nao* (NaoH25V50))
(objects (list *nao*))
(load "package://baxtereus/baxter.l")
(setq *baxter* (baxter))
(objects (list *baxter*))
(load "package://fetcheus/fetch.l")
(setq *fetch* (fetch))
(objects (list *fetch*))
(load "package://pr2eus/pr2.l")
(setq *pr2* (pr2))
(objects (list *pr2*))
https://github.com/knorth55/coral_usb_ros#install-the-edge-tpu-runtime をみてCoral TPUをインストールする
echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get install libedgetpu1-max
sudo apt-get install python3-edgetpu
https://github.com/knorth55/coral_usb_ros#install-just-the-tensorflow-lite-interpreter をみてtensorflowlite interpreterをインストールする
sudo apt-get install python3-pip
wget https://dl.google.com/coral/python/tflite_runtime-1.14.0-cp36-cp36m-linux_x86_64.whl
pip3 install tflite_runtime-1.14.0-cp36-cp36m-linux_x86_64.whl
https://github.com/knorth55/coral_usb_ros#workspace-build-melodic をみてワークスペースを作成しコンパイルする
source /opt/ros/melodic/setup.bash
mkdir -p ~/coral_ws/src
cd ~/coral_ws/src
git clone https://github.com/knorth55/coral_usb_ros.git
wstool init
wstool merge coral_usb_ros/fc.rosinstall.melodic
wstool update
rosdep install --from-paths . --ignore-src -y -r
cd ~/coral_ws
catkin init
catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so
catkin build -vi
https://github.com/knorth55/coral_usb_ros#model-download をみてモデルをダウンロードする
source /opt/ros/melodic/setup.bash
source ~/coral_ws/devel/setup.bash
roscd coral_usb/scripts
python download_models.py
カメラノードを立ち上げる
source /opt/ros/melodic/setup.bash
rosrun usb_cam usb_cam_node
認識ノードを立ち上げる
source /opt/ros/melodic/setup.bash
source ~/coral_ws/devel/setup.bash
roslaunch coral_usb edgetpu_object_detector.launch INPUT_IMAGE:=/usb_cam/image_raw
表示ノードを立ち上げる
source /opt/ros/melodic/setup.bash
rosrun image_view image_view image:=/edgetpu_object_detector/output/image
例:new.lを作った時
初めにやること
source ~/semi_ws/devel/setup.bash
roscd jsk_2019_10_semi
ブランチを移動
git checkout add_jsk_2019_10_semi
大元の内容を自分のところにもってくる
git pull origin add_jsk_2019_10_semi
ブランチを作って移動 (ブランチが存在しない時は -bをつける)
git checkout (-b) new_branch
自分のGitを更新(addは初回のみ)
git add new.l
git commit -m "コメント" new.l
git push アカウント名 new_branch
最後に自分のGitのページを開いて自分のアカウントのnew_branchからk-okada/jsk-demosのadd_jsk_2019_10_semiブランチにPullreqを送る。
コンフリクトするとファイルにその情報が加わり、そのファイルを編集することで手動でコンフリクトを解消出来る。
マークダウン方式で.md方式でメモとかを作れる。詳しくはここにまとまっている。 atomだと[control] + [shift] + [M] キーでプレビュー出来る。
-
viewerのpepperを動かす:*pepper*
-
シミュレーターor実機を動かす:*ri*
-
roscoreを忘れずに!
どんなjointがあるのかを調べる
(send *pepper* :methods :joint)
全てのパラメータを指定する
(send *pepper* :angle-vector #f(...))
viewerのpepperの今の状態のパラメータを知る
(send *pepper* :angle-vector)
上記のパラメータをシミュレーターに送る。
(send *ri* :angle-vector (send *pepper* :angle-vector))
実機を動かす場合は何秒かけて行うかも指定
(send *ri* :angle-vector (send *pepper* :angle-vector) 5000)
実機の今の状態のパラメータを知る
(send *ri* :state :potentio-vector)
逆運動学
(send *pepper* :rarm :inverse-kinematics (make-coords :pos #f(1000 0 1000)) :revert-if-fail nil)
✱ revert-if-fail nil : 逆運動学に失敗しても解けたところまでで中断する。
fetchについては以下を参照
fetchは腕とベースの干渉を計算してから動かす。 moveitに送って干渉計算をしてから動かしている。 (:angle-vector-raw だとそれをしないで実行できる。) eusがインターフェースでそこからROSとかでロボットに送っている。
まずは有線を繋いでwifiを切る
rossetip
rossetmaster fetch15
rostopic list
後はいつものように実行すれば良い
実機でポーズを作ってから角度取得できれば,実機とroseus
が繋がっていることを確認できる.
(send *ri* :state :potentio-vector)
roseus
上でプログラムを実行
(load "package://fetcheus/fetch-interface.l")
(fetch-init)
(objects (list *fetch*))
(send *ri* :state :potentio-vector) ;;現在の実機の状態を取得
(send *fetch* :angle-vector (send *ri* :state :potentio-vector)) ;;IRT viewerに適用
(send *ri* :speak-jp "日本語") ;;「日本語」と喋る
(send *ri* :go-pos 1 0 0) ;;xに1[m],yに0[m],z方向に0[degree]回る
(send *ri* :go-grasp :pos 0) ;;手の握りを0にする(完全に閉じる)
- fetchのポーズ一覧 fetch1
#f(5.52373 52.5326 3.4729 77.8638 -59.6255 10.2535 -78.2225 74.2234 0.022649 2.23)
fetch2
#f(5.56187 88.5458 -44.9768 -1.1279 -58.6368 -7.30264 -35.244 74.1355 0.294559 2.44973)
fetch3
#f(5.56952 88.5897 -42.0105 0.87161 -59.8672 3.90341 -76.157 7.51439 0.27191 2.42776)
- 喋らせる
(send *ri* :speak-jp "こんにちは")
(send *ri* :speak-en "hello")
- 移動する
(send *ri* :go-pos 1 0 0)
;;引数は x[m] y[m] z回転[degree]
- fetch用のRvizを立ち上げる
roscd jsk_fetch_startup
cd launch
roslaunch jsk_fetch_startup rviz.launch
hsi_color_filter.launchを使う 最初の arg nameをfetch用に少し変更した
<!-- hsi_color_filter 中身-->
<arg name="INPUT" default="points"/>
<arg name="CENTROID_FRAME" default="target"/>
<arg name="DEFAULT_NAMESPACE" default="hed_camera/depth_registered"/>
<arg name="FILTER_NAME_SUFFIX" default=""/>
<arg name="OUTPUT" default="hsi_output$(arg FILTER_NAME_SUFFIX)"/>
以下で実行する
roslaunch jsk_2019_10_semi hsi_color_filter.launch
/head_camera/depth_registered/boxesのトピックにバウンディングボックスがパブリッシュされる
Moveitにcollision-objectとしてpublishして干渉計算をしてもらう
(load "package://pr2eus_moveit/euslisp/collision-object-publisher.l")
(setq *co* (instance collision-object-publisher :init))
(send *co* :add-object obj :frame_id link-name :relative-pose cds)
;;必要なくなったら消す
(send *co* :wipe-all) ;;:removeで指定したものだけ消すとかも出来る
JSKのgithub上のパッケージはjsk-ros-pkgにある。
画像認識とかの認識系はjsk_recognitionのdocs を見ると良い。
C-x C-f : ファイル作成
C-x 2 : 画面上下2分割
C-x b *shell*: shellをLispにする。
C-x o : 画面移動
$ rossetip
$ rossetmaster fetch15
$ source ~/semi_ws/devel/setup.bash
$ roslaunch jsk_fetch_startup rviz.launch #rvizを起動したいとき
まず、授業で用いたturtlebotの hsi_color_filter.launch をfetchバージョンに書き換え、/jsk_2019_10_semi/launchに保存。
<!-- hsi_color_filter.launch 変更箇所 -->
12 <arg name="INPUT" default="points"/>
13 <arg name="CENTROID_FRAME" default="target"/>
14 <arg name="DEFAULT_NAMESPACE" default="head_camera/depth_registered"/>
起動
$ source ~/semi_ws/devel/setup.bash
$ roslaunch jsk_fetch_startup rviz.launch #rviz起動
$ roslaunch jsk_2019_10_semi hsi_color_filter.launch
$ rosrun rqt_reconfigure rqt_reconfigure #HSIのパラメータをいじりたい時
Rviz上で
Add ▶ PointCloud2
PointCloud2 ▶ Topic ▶ ~/hsi_output
これで色付き点群を見ることができ、
Add ▶ BoundingBoxArray
で、認識した色の物体がBoxになっている様子を見ることができる。
赤色を認識したい場合
h_max=20, h_min=-20, s_max=255, s_min=80, i_max=255, i_min=50 くらいがちょうどよい。hsi_color_filter.launch のデフォルトに設定済み。
パラメータの一覧を取得
rosparam list