More Related Content
Similar to ロボットシステム学2015年第12回
Similar to ロボットシステム学2015年第12回 (20)
More from Ryuichi Ueda (20)
ロボットシステム学2015年第12回
- 3. セットアップ
• Linux環境を準備
– 今のところUbuntu 14.04が良い
• 特定のデバイスが使えない等の理由で
12.04も使われている(2015年現在)
• アップデートは怖がらずにこまめに
– $ sudo apt-get update
– $ sudo apt-get upgrade
– ただしディストリビューションのバージョンは
迂闊に上げてはいけない
• ついでにvimもフルバージョンをインストール(vim使いなら)
– $ sudo apt-get update vim
2015年12月16日 ロボットシステム学 3
- 4. 通信周りの設定
• 「通信を制すものはLinuxを制す」
• 外からssh接続できるようにしておく
– ロボットに組み込むときはリモート接続できないと不便
• $ sudo apt-get install openssh-server
• 鍵認証にも慣れましょう
– 手順
• $ mkdir ~/.ssh
• $ chmod 700 ~/.ssh
• $ cat id_rsa.pub >> ~/.ssh/authorized_keys
(id_rsa.pubは接続元で作成のこと)
• $ chmod 600 ~/.ssh/authorized_keys
2015年12月16日 ロボットシステム学 4
- 7. ROSのインストール
• 手順
– ROS込みでパッケージをアップデート
• $ sudo apt-get update
– ROS本体のインストール
• $ sudo apt-get install ros-indigo-desktop-full
– rosdepの初期化とアップデート
• rosdep: ROSのパッケージを作る時に依存するものを
ダウンロード&インストールするツール
• $ sudo rosdep init
• $ rosdep update
2015年12月16日 ロボットシステム学 7
- 8. 環境変数等の設定
• .bashrcに次の一行を書き込み
– source /opt/ros/indigo/setup.bash
• /opt/ros/indigo/setup.bashの中身は確認しておきましょう
• 反映
– $ source ~/.bashrc
– あるいは一度全部の端末をexitする(こちらがオススメ)
• 確認
– $ echo $CATKIN_SHELL
bash <- シェルの名前が出てくる
2015年12月16日 ロボットシステム学 8
- 11. サンプルプログラムを動かす
• 端末で
– $ roscore
• 別の端末で
– ROSの動くマシンの端末で
– $ rosrun turtlesim turtlesim_node
– 亀のいるウィンドウが生成される
• また別の端末で
– $ rosrun turtlesim turtle_teleop_key
– 矢印を押すと亀が動く
2015年12月16日 ロボットシステム学 11
- 12. サンプルから分かること
• ps aux | grep ros してみる
– roscoreのプロセスとrosrunで立ち上げたプログラム
• プロセス間で通信しているようだ
– どうやらROSは異なるプロセスを連携させる
フレームワークのようだ
– UNIXの基礎通り
2015年12月16日 ロボットシステム学 12
- 13. ROSのプロセス
• 「マスタ」と「ノード」から成る
• ノード: rosrunで立ち上がるアプリケーション
• マスター: ノード間の通信をつかさどる
– roscoreで立ち上がる
– 通信はTCP/IP or UDPベースで
ファイルシステムの考え方を取り入れている(後述)
• UNIXらしい方法
• 共有メモリは使わない
– 参考: ROSチュートリアル第二回 -- ROSの通信モデル
2015年12月16日 ロボットシステム学 13
- 15. トピック
• ノード間を流れるデータの通り道
– データは「メッセージ」
• rostopicというコマンドで観察
• 下図:
– rostopic...をタイプ後、turtle_teleop_keyで操作した時の出力
• rostopicもノード
– rqt_graphで
確認を
– 一つのトピックを
複数のノードで
2015年12月16日 ロボットシステム学 15
ueda@rosubuntuvm:~$ rostopic echo /turtle1/cmd_vel
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
- 16. メッセージの「型」
• rostopic typeで調べられる
– geometry_msgs/Twist
• Vector3 linear
• Vector3 angular
– コマンドからメッセージを投げてみましょう
• 出るときはCtrl+cで
2015年12月16日 ロボットシステム学 16
ueda@rosubuntuvm:~$ rostopic type /turtle1/cmd_vel
geometry_msgs/Twist
$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -- '[1,2,3]' '[4,5,6]'
$ rostopic pub -r 1 /turtle1/cmd_vel geometry_msgs/Twist -- '[1,2,3]' '[4,5,6]'
- 18. サービスを使う
• コマンドのように使う
• 引数なしならサービスの名前をcallの後に
• 引数を調べるときはtype
– ---の上が引数、下が出力
• 引数の渡し方(右)
2015年12月16日 ロボットシステム学 18
$ rosservice call clear
ueda@rosubuntuvm:~$ rosservice type spawn | rossrv show
float32 x
float32 y
float32 theta
string name
---
string name
$ rosservice call spawn 1 2 3 ""
- 19. パラメータ
• システムの定数
• rosparamで操作
2015年12月16日 ロボットシステム学 19
ueda@rosubuntuvm:~$ rosparam list
/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_rosubuntuvm__45910
/rosversion
/run_id
ueda@rosubuntuvm:~$ rosparam get background_r
69
ueda@rosubuntuvm:~$ rosparam set background_g 255
ueda@rosubuntuvm:~$ rosservice call clear
- 21. ディレクトリの地ならし
• 「ワークスペース」を作る
• .bashrcを編集して端末を開き直す
• echo $ROS_PACKAGE_PATHでパスの確認
2015年12月16日 ロボットシステム学 21
ueda@rosubuntuvm:~$ mkdir -p ~/catkin_ws/src
ueda@rosubuntuvm:~$ cd ~/catkin_ws/src/
ueda@rosubuntuvm:~/catkin_ws/src$ catkin_init_wor
kspace
ueda@rosubuntuvm:~/catkin_ws/src$ cd ..
ueda@rosubuntuvm:~/catkin_ws$ catkin_make
###こうなる###
ueda@rosubuntuvm:~/catkin_ws$ ls
build devel src
#source /opt/ros/indigo/setup.bash <-あったら削除
source ~/catkin_ws/devel/setup.bash <- 追加