この演習について ROS 演習 1:catkinビルドシステム ROS 演習 2: ノードの作成とトピックの配信 購読 ROS 演習 3:TF の作成 ROS 演習 4:RViz での表示 ROS 演習 5:ROSBAG によるデータ記録 ROS 演習 1~5 では ROS の基本的な要素技術を学習

Similar documents
version 1.3 TIER IV ACADEMY 自動運転システム構築塾 Day2 ROS 演習 ROS 演習 3:ROS 2.0 の最新動向について

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

再起動した状態になり パスワードを入力すると 図 2 のように DEXCS2011 のアイコ ンがデスクトップ上に表示される 2 端末を準備する メニューバーにある端末の形を左クリック 図 2 デスクトップ メニューバーに端末の形がない場合 図 3 メニューバー アプリケーション アクセサリー 端末

目次 1. はじめに 本書対象者 PALRO のアプリケーションについて Ubuntu 8.04LTS の入手について Linux 上での開発環境の構築 事前準備 Ubuntu のインストール..

この演習について Autoware 演習 1: データの記録 再生 Autoware 演習 2: センサーキャリブレーション Autoware 演習 3:3 次元地図の作成 Autoware 演習 4: 自己位置推定 Autoware 演習 5: パラメータ調整 Autoware 演習 6: 物体検

Microsoft Word - CygwinでPython.docx

Intel MPI Library Linux

Raspberry Pi で WEB カメラを使用 会津大学 RT ミドルウェア講習会 2017 The University of Aizu

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

SystemDirector Developer's Studio(V3.2) 適用ガイド

PowerPoint プレゼンテーション

Rational Roseモデルの移行 マニュアル

MATLAB EXPO 2019 Japan プレゼン資料の検討

PowerPoint プレゼンテーション

1. 開発ツールの概要 1.1 OSS の開発ツール本書では OSS( オープンソースソフトウェア ) の開発ツールを使用します 一般に OSS は営利企業ではない特定のグループが開発するソフトウェアで ソースコードが公開されており無償で使用できます OSS は誰でも開発に参加できますが 大規模な

memo

GettingStartedTK2

Java言語 第1回

Source Insight

Microsoft Word - XOOPS インストールマニュアルv12.doc

目次 1. 動作環境チェック 動作必要環境 Java のインストール Java のインストール Firebird のインストール Firebird のインストール Adobe Reader のインストール

3.Cygwin で日本語を使いたい Cygwin で以下のコマンドを実行すると それ以降 メッセージが日本語になります export LANG=ja_JP.UTF-8 これは 文字コードを日本語の UTF-8 に設定することを意味しています UTF-8 は Cygwin で標準の文字コードで, 多

OpenAM 9.5 インストールガイド オープンソース ソリューション テクノロジ ( 株 ) 更新日 : 2013 年 7 月 19 日 リビジョン : 1.8

農業・農村基盤図の大字小字コードXML作成 説明書

1 Atollic TrueSTUDIO( GR-PEACH TOPPERS/ASP ASP GR-PEACH mbed ( git

SimLab Plugins for SketchUp 評価版インストールおよびアクティベート方法 注意事項 評価版をお使い頂くには 評価用ライセンスでのアクティベートが必要です 評価用ライセンスファイルの取得を行い 手動でアクティベートする必要があります 各 SimLab プラグインは 評価用とし

Helix Swarm2018.1インストール手順

TestDesign for Web

XMLとXSLT

24th Embarcadero Developer Camp

実用ロボット開発のための ROS プログラミング サンプルページ 本 定価 判型, 以下 URL から 覧い けます. サンプルペ ジ 内容, 初版 1 刷発行時 も です.

プログラミング実習I

プログラミング基礎

Team Foundation Server 2018 を使用したバージョン管理 補足資料

ガイダンス

図 1: 場所をクリックし ホームフォルダーをクリックすると (上図) ホーム フォルダー下にあるファイルやディレクトリの一覧を見ることができる 下図 2

C#の基本

2. Docker の基本的な操作 1 docker hub の参照 2 DockerHub の Explorer リンクからアプリケーションを参照 3 アプリケーション検索 4 tag について 3. docker 基本コマンド 1 docker の

Microsoft PowerPoint - Robot Operating System (ROS)解説.pptx

「RAD Studio XE5によるマルチ言語/マルチデバイス開発の進め方」

PowerPoint Presentation

SimLabプラグインは各機能を15回分評価版として試用できます

Hphi実行環境導入マニュアル_v1.1.1

PowerPoint Presentation

SLAMD導入手順

システムパッケージリリース情報-Version5.0.0pre

Red Hat Enterprise Linux 6 Portable SUSE Linux Enterprise Server 9 Portable SUSE Linux Enterprise Server 10 Portable SUSE Linux Enterprise Server 11 P

インテル(R) Visual Fortran コンパイラ 10.0

CommonMP Ver1.5 インストール手順書 目 次 1. 概要 目的 必要動作環境 ハードウェア構成 ソフトウェア構成 CommonMP のインストール手順 利用フロー

IBM SPSS Statistics - Essentials for Python: のインストール手順 Mac OS

Helix Swarm2018.1アップグレード手順

$ cmake --version $ make --version $ gcc --version 環境が無いあるいはバージョンが古い場合は yum などを用いて導入 最新化を行う 4. 圧縮ファイルを解凍する $ tar xzvf gromacs tar.gz 5. cmake を用

利用者

Java Bridgeを利用した他言語によるデータロード&プロットデモ

1. OS のインストール 今回インストールするのは, Ubuntu という Linux ディストリビューションの中の一つ. OS, ディストリビューションの種類 ディストリビューションとは, 一般利用者が導入 利用するために多くのコンポーネントをまとめた頒布形態. 無料のものと有料のものがあり,

Microsoft PowerPoint - InfPro_I6.pptx

WebOTXマニュアル

17章 プログラムの提供

スライド 1

開発ツールのコラボレーション機能を検証する

Transcription:

version 1.5 TIER IV ACADEMY 自動運転システム構築塾 Day2 ROS 演習 ROS 演習 1:catkin ビルドシステム

この演習について ROS 演習 1:catkinビルドシステム ROS 演習 2: ノードの作成とトピックの配信 購読 ROS 演習 3:TF の作成 ROS 演習 4:RViz での表示 ROS 演習 5:ROSBAG によるデータ記録 ROS 演習 1~5 では ROS の基本的な要素技術を学習 ROS 演習 1:catkin ビルドシステム ROS のビルドシステムである catkin について学ぶ 簡単な ROS のサンプルプログラムを書いて実行する ROS 演習 1:catkin ビルドシステム 2

目次第 1 章 :ROS(Robot Operating Systems) 1. ROSとは 2. 特徴 第 2 章 :ROS と catkin 第 3 章 : 演習 1. 環境構築 2. ソースコードの作成 3. ビルド 4. ROS ノードの実行 ROS 演習 1:catkin ビルドシステム 3

ROS 演習 1:catkin ビルドシステム 第 1 章 : ROS(Robot Operating Systems) 1.ROS とは 2. 特徴 4

ROS とは 特長 ROS (Robot Operating System) : ロボット開発におけるライブラリやツールを提供ハードウェアの抽象化, デバイスドライバ, ライブラリ, 視覚化ツール, データ通信, パッケージ管理...etc 世界で最も利用されているロボット ミドルウェア 豊富な対応ロボット センサ オープンソース サポート言語 : C++, Python 管理団体 :OSRF 対応 OS:Linux ROS 演習 1:catkin ビルドシステム 5

自動運転システムにおける ROS (1/2) ITS (Intelligent Transport Systems) + Internet International cooperation + Laws Interface 1 2 3 4 3D map Localizatio n Planning Operation Sensing Detection ROS 演習 1:catkin ビルドシステム 6

自動運転システムにおける ROS (2/2) システム 自動運転 アプリケーション Sensing Localization Detection Planning ミドルウェア ROS OS Linux (Ubuntu14.04) ハードウェア CPU (multi/many) GPU Camera GNSS (GPS) LIDAR ROS 演習 1:catkin ビルドシステム 7

ROS 演習 1:catkin ビルドシステム 第 1 章 : ROS(Robot Operating Systems) 1.ROS とは 2. 特徴 8

ROS の 特長 ROS (Robot Operating System) : ロボット開発におけるライブラリやツールを提供 分散システム Publish / Subscribe モデル ノードの集合としてシステムを構築 トピックを介してデータをやり取り 例 トピック ホスト クライアント 視覚化 シミュレーション 歩行者検知 ノード 1 車検知 ノード 3 ノード 2 ROS演習1 catkin ビルドシステム 9

Publish / Subscribe モデル 処理をノードとして分割 管理し トピックを介してデータのやり取りを行う 再利用性 生産性の向上, 分散環境への高い親和性, 障害分離 トピック Publish Subscribe Subscribe 歩行者検知 ノード 車検知 ノード ノード ROS 演習 1:catkin ビルドシステム 10

Publish / Subscribe モデル 処理をノードとして分割 管理し トピックを介してデータのやり取りを行う 再利用性 生産性の向上, 分散環境への高い親和性, 障害分離 トピック 歩行者検知 ノード 車検知 ノード ノード ROS 演習 1:catkin ビルドシステム 11

Publish / Subscribe モデル 処理をノードとして分割 管理し トピックを介してデータの やり取りを行う 再利用性 生産性の向上, 分散環境への高い親和性, 障害分離 NEW! トピック 信号検知 ノード 歩行者検知 ノード ノード 車検知 ノード ROS演習1 catkin ビルドシステム 12

ROS の特長 TCP/UDP or 共有メモリ 抽象化 User Code ノード ノード ROS Hardware 視覚化 シミュレーション 豊富なパッケージ ( デバイスドライバやライブラリ ) ROS 演習 1:catkin ビルドシステム 13

ROS の 特長 分散システム Gazebo 3D物理シミュレータ 強力なGUIでROSとの連携が充実 抽象化 RViz 3D視覚化ツール User Code 簡単にシステム状態を視覚化可能 再生データ R O S 記録したセンサデータ rosbag ファイル Hardware 指定した値のデータ 視覚化 シミュレーション 豊富なパッケージ (デバイスドライバやライブラリ) ROS演習1 catkin ビルドシステム 14

ROS の特長 TCP/UDP or 共有メモリ 抽象化 User Code ノード ノード ROS Hardware 視覚化 シミュレーション 豊富なパッケージ ( デバイスドライバやライブラリ ) ROS 演習 1:catkin ビルドシステム 15

ROS の 特長 抽象化 ハードウェア 抽シ象ス化 分散 テム 様々なロボットやセンサをサポート User Code User Code ROS ROS Hardware パッケージ Hardware 2,000を超えるソフトウェアパッ 豊化 富 なシパ ーシ ジョ ン ケージで効率的開発 視覚 ミッ ュケ レー (デバイスドライバやライブラリ) ライブラリ 豊富なパッケージ (デバイスドライバやライブラリ) 座標変換 画像処理 点群処理 など豊富にサポート ROS演習1 catkin ビルドシステム 16

ROS の アプリケーション例 ファイル構成 パッケージ : 物体認識 ノード : Camera Camera.cpp ノード : ImageProccessing ImageProcessing.cpp Detection.h Image.msg -------------------Header header uint32 height uint32 width string encoding uint8[] data システムモデル Camera Images ROS演習1 catkin ビルドシステム Image Proccessing 17

ROS 演習 1:catkin ビルドシステム 第 2 章 :ROS と catkin 18

ROS について (1/2) ROS (Robot Operating System) とは ロボット向けのメタオペレーティングシステム ソフトウェア開発者のロボット アプリ作成を支援 ライブラリとツールを提供 - ハードウェア抽象化, ライブラリ, 視覚化ツール, メッセージ通信, パッケージ管理など 良い点 容易に理解 習得 オープンソース ( 無償 ) 商用利用可能 最先端の研究成果物が利用可能 ロボット分野のデファクトスタンダード 最新のセンサー アプリケーションが利用可能 コミュニティが活発 公開パッケージが多数 ROS サポートのハードウェアが多数 悪い点 公式で Ubuntu のみの対応 リアルタイム性の検証が不十分 ROS 演習 1:catkin ビルドシステム 19

ROS について (2/2) ROS の専門用語と通信モデルトピック通信基本となる通信方式 Publish / Subscribe モデル ノード : ソフトウェアの実行単位 トピック : ノード同士がメッセージのやり取りを行うための名前付きバス rosmaster: ノードやトピックの管理を行うノード ROS rosmaster トピック A Node Node Tool アプリケーション層 Publish Subscribe Communication ミドルウェア層 ノード A Publisher ノード B Subscriber ノード C Subscriber Linux OS 層 その他にもサービス パラメータサーバーと言った通信方法があります ( 演習 3 にて ) ROS 演習 1:catkin ビルドシステム 20

catkin ビルドシステム ビルドシステムとはコンパイルやライブラリのリンクなどを行い 最終的な実行可能ファイルを作成を行う システム 例 :Make, Cmake, Apache Ant, Autoconf など catkin( キャッキン ) とは CMake を拡張した ROS のビルドシステム CMake: 様々な OS コンパイラの差を吸収するビルドシステム 前 ROS のビルドシステムは rosbuild ROS のために開発されたが ROS 専用のビルドシステムではない ROS のソフトウェアシステムとは切り離されている catkin では汎用的な CMake make を利用しており Eclipse などの統合開発環境でも利用可能 catkin を利用することで ROS に関連するビルドを効率的に行いマルチプラットフォームで開発可能 ROS の新しいビルドシステム catkin について http://myenigma.hatenablog.com/entry/20131229/1388320084 catkinの意味 : 猫柳の花 or 子猫 ROS 演習 1:catkin ビルドシステム 21

ROS 演習 1:catkin ビルドシステム 第 2 章 : 演習 1. 環境構築 2. ソースコードの作成 3. ビルド 4. ROS ノードの実行 22

環境構築 OSとROS のインストール ( 済 ) ROS が動作する標準的な環境を準備 PC:Intel 系 CPU(core-i3 以上を推奨 ) OS:Ubuntu 言語 :C++, Python ROS バージョン - ROS Indigo(2014 2019) - ROS Kinetic(2016 2021) 演習環境 OS:Ubuntu 14.04 LTS(Autoware 推奨 ) ROS:Indigo(Autoware 推奨 ) Ubuntu のインストール手順 ( 済 ) Ubuntu Japanese Teamサイト https://www.ubuntulinux.jp/ ROSのインストール手順 ( 済 ) ROS Wikiサイト http://wiki.ros.org/ja/indigo/installation/ubuntu 本演習で作成するファイルは下記の URL からもダウンロード可能 https://github.com/yukkysaito/tierivacademy ROS 演習 1:catkin ビルドシステム 23

catkin ワークスペースの作成 (1/3) ワークスペース : 以降プログラムを書く上で作業するディレクトリ 1. ROS コマンドを使えるようにするため 環境変数を設定 $ source /opt/ros/indigo/setup.bash source ~/.bashrc に source /opt/ros/indigo/setup.bash を書き込むことで自動化可能 2. catkin ワークスペースを作成 $ mkdir -p ~/catkin_ws/src catkin_ws: ワークスペース ( 名前は任意 ) src: ユーザ作成コードを格納するディレクトリ ( 名前は src 固定 ) 3. catkin_init_workspace コマンドで catkin ワークスペースを初期化 $ cd ~/catkin_ws/src $ catkin_init_workspace 初期化すると 以下のメッセージが出力される Creating symlink "/home/iwasaki/catkin_ws/src/cmakelists.txt" pointing to "/opt/ros/indigo/share/catkin/cmake/toplevel.cmake" この時点で トップレベルの CMakeLists.txt が作成される ROS 演習 1:catkin ビルドシステム 24

catkin ワークスペースの作成 (2/3) 4. ファイル構成を tree コマンドで確認 $ cd ~/catkin_ws/ $ tree tree コマンドがインストールされていない場合 $ sudo apt-get install tree <~/> <catkin_ws/> <src/> catkin_init_workspace で自動生成 CMakeLists.txt (-> /opt/ros/indigo/share/catkin/cmake/toplevel.cmake) 5. catkin_make コマンドで catkin ワークスペースをビルド $ cd ~/catkin_ws $ catkin_make ROS 演習 1:catkin ビルドシステム 25

catkin ワークスペースの作成 (3/3) 6. ワークスペースを tree コマンドで確認 $ cd ~/catkin_ws $ tree build と devel の 2 つのディレクトリが自動生成される <~/> <catkin_ws/>.catkin_workspace <build/> Makefile その他いろいろ <devel/> setup.bash その他いろいろ <src/> CMakeLists.txt - トップレベル ビルドで自動生成される各種の一時ファイルが格納 ビルドで生成されたヘッダファイル 実行形式ファイルが格納 7. ビルドしたパッケージを読み込み $ source ~/catkin_ws/devel/setup.bash ~/.bashrc の最終行に コマンドを追加することで自動読み込み可能 ROS 演習 1:catkin ビルドシステム 26

ROS 演習 1:catkin ビルドシステム 第 2 章 : 演習 1. 環境構築 2. ソースコードの作成 3. ビルド 4. ROS ノードの実行 27

パッケージの作成 (1/3) パッケージの基本 パッケージ :ROS コードのソフトウェア構成単位 ディレクトリ単位で構成 パッケージの中にパッケージは作成不可 複数のパッケージをまとめて扱うメタパッケージという論理的な仕組みもある パッケージディレクトリに直下に package.xml( マニフェスト ) と CMakeLists.txt が存在 CMakeLists.txt: ビルド時に利用する設定ファイル package.xml: パッケージの説明書 後に説明 個々のパッケージの基本ファイル構成 <my_package/> <src/> <include/> CMakeLists.txt package.xml ROS 演習 1:catkin ビルドシステム 28

パッケージの作成 (2/3) catkin ワークスペースにおけるパッケージの構成の例 <catkin_workspace/> <build/> 以下略 <devel/> 以下略 <src/> CMakeLists.txt - トップレベル <package_1/> ( いろいろ ) CMakeLists.txt package.xml 略 <package_n/> 略 <subdirectory_a/> <package_a1/> 略 <package_an/> ROS 演習 1:catkin ビルドシステム 29

パッケージの作成 (3/3) 1. C++で書くパッケージを新規作成 $ cd ~/catkin_ws/src $ catkin_create_pkg tutorials std_msgs roscpp catkin_create_pkg コマンドのフォーマット catkin_create_pkg <package_name> [dependencies [dependencies...]] - std_msgs : ROS の基本メッセージ定義 後で使用 - roscpp : ROS の基本 C++ライブラリ 必須 2. 作成したパッケージの内容を treeコマンドで確認 $ cd ~/catkin_ws/src $ tree <src/> CMakeLists.txt - トップレベル <tutorials/> CMakeLists.txt <include/> <tutorials/> package.xml <src/> catkin_create_pkg で自動生成 ROS演習1 catkin ビルドシステム 30

ソースコードの作成 最も簡単なROSのサンプルコードを作成 $ gedit ~/catkin_ws/src/tutorials/src/simple.cpp 以下の通りに simple.cpp のコードを入力 システム内では ユニークでなければならない 実行時にリネーム可能 #include "ros/ros.h" //ROS で必要なヘッダー int main(int argc, char **argv) { ros::init(argc, argv, "simple"); //ROS の初期化.ノードの名前を特定 ros::nodehandle n; //プロセスのノードへのハンドラを作成 ros::rate loop_rate(1); //1Hzで動作させるためのタイマーを作成 int count = 0; while (ros::ok()) //Ctrl-C(SINGINTシグナル)を押すと ros::ok() が false を返却 { ROS_INFO("Hello world %d", count++); //ログメッセージを出力 loop_rate.sleep(); //1Hzで動作するようスリープ } return 0; } ROSの機能でログレベルに応じて表示可能 ログレベルの強さ ROS_DEBUG < ROS_INFO < ROS_WARN < ROS_ERROR < ROS_FATAL ROS演習1 catkin ビルドシステム 31

ROS 演習 1:catkin ビルドシステム 第 2 章 : 演習 1. 環境構築 2. ソースコードの作成 3. ビルド 4. ROS ノードの実行 32

ビルドに必要な設定ファイル ビルドに関する設定はCMakeLists.txtとpackage.xml CMakeLists.txt:CMakeで利用するビルド設定ファイル CMake: コンパイラに依存しないビルド自動化ソフトウェアであり 様々なOSで動作 参考 : http://wiki.ros.org/ja/catkin/cmakelists.txt cmake_minimum_required: 必要な CMake Version の指定 project():package Name find_package() : ビルドに必要な他の CMake/Catkin packages を見つける catkin_package(): パッケージのビルドに必要な情報の指定 add_library()/add_executable()/target_link_libraries(): ライブラリや実行ファイルのビルド package.xml: パッケージの説明書であり ビルドに必要なパッケージの依存関係などを記述 XMLと呼ばれる言語で記述 参考 :http://robotics.ait.kyushu-u.ac.jp/books/rosbook_jp.pdf(p58, 59) buildtool_depend: ビルドシステムの依存関係を記述 build_depend : パッケージをビルドするときに依存するパッケージ名を記述 run_depend : パッケージを実行するときに依存するパッケージ名を記述 ROS 演習 1:catkin ビルドシステム 33

CMakeLists.txt の修正 CMakeLists.txt をバックアップしてから修正 $ cd ~/catkin_ws/src/tutorials $ cp CMakeLists.txt CMakeLists.org.txt $ gedit CMakeLists.txt ## Build ## セクションに コンパイルの指定を追加 131: add_executable(simple src/simple.cpp) 複数のソースファイルがある時は 空白区切りで列挙 ## Build ## セクションに リンクの指定を追加 141: target_link_libraries(simple ${catkin_libraries}) 複数のリンクファイルがある時は 空白区切りで列挙 CMake と同じ記法 ROS 演習 1:catkin ビルドシステム 34

package.xml の修正 package.xml をバックアップしてから修正 $ cd ~/catkin_ws/src/tutorials $ cp package.xml package.org.xml $ gedit package.xml メタ情報のメンテナンス担当者とライセンスを修正 10: <maintainer email= メールアドレス > 名前 </maintainer> 16: <license>bsd</license> それ以外のメタ情報については 任意記入 もし追加の依存パッケージがあれば ここで指定 ( 今回はなし ) ROS 演習 1:catkin ビルドシステム 35

catkin_make によるビルド catkin_make コマンドで ワークスペース全体をビルド $ cd ~/catkin_ws $ catkin_make ワークスペース内の特定のパッケージのみをビルドする $ catkin_make --pkg tutorials ビルドされた実行ファイルは 以下にある ~/catkin_ws/devel/lib/tutorials/simple ROS 演習 1:catkin ビルドシステム 36

ROS 演習 1:catkin ビルドシステム 第 2 章 : 演習 1. 環境構築 2. ソースコードの作成 3. ビルド 4. ROS ノードの実行 37

ROS ノードの実行 (1/2) 別端末 ( 以下同 ) で roscoreコマンド (rosmaster) を起動 $ roscore ROSを利用した分散システムではどれか1つのマシンでroscoreを起動参考 : http://robot.isc.chubu.ac.jp/?p=538 rosnode コマンドで 現在起動している ROS のノードを確認のために表示 $ rosnode list /rosout roscore を起動すると現れるノード rosrun コマンドを使って simple をノードとして実行 参考 : コマンド形式 :rosrun <package> <executable> $ rosrun tutorials simple [ INFO] [XXXXXXXXX.XXXXXXXXX]: Hello world 0 [ INFO] [XXXXXXXXX.XXXXXXXXX]: Hello world 1 : simple 実行ファイルは 直接実行することも可能 $ ~/catkin_ws/devel/lib/tutorials/simple ROS 演習 1:catkin ビルドシステム 38

ROS ノードの実行 (2/2) rosnode コマンドで 現在起動している ROS のノードを確認するために表示 $ rosnode list /rosout /simple rqt_console コマンドで ROS_INFO から出力されるメッセージを見る $ rqt_console Ctrl-C で 全ての端末の実行を終了 参考 : ノードを終了させるには 以下のコマンドを実行 ( 推奨 ) $ rosnode kill simple ROS 演習 1:catkin ビルドシステム 39

roslaunch とは 幾つものノードを立ち上げる際には手間 Autoware では数十 ~ ノードを立ち上げる必要がある Autoware では GUI でボタンクリックにより roslaunch が起動する仕組み roslaunch: パッケージ内の複数のノードを一度に起動 その他 実行時に変更可能パラメータなども記述可能 ノード名のリネーム トピック名の変更 パラメータの設定 launch file:xml 形式で書かれたスクリプト launch file ノード 1 ノード 2 ROS 演習 1:catkin ビルドシステム 40

roslaunchによる一つのrosノードの実行 1. パッケージ内に launch ディレクトリを作成 $ mkdir ~/catkin_ws/src/tutorials/launch 2. launch ディレクトリ内に simple.launchファイルを作成 $ gedit ~/catkin_ws/src/tutorials/launch/simple.launch <launch> <node pkg="tutorials" name="simple" type="simple" output="screen"/> </launch> 3. roslaunch コマンドで roscore と simpleノードを起動 コマンド形式 roslaunch [package_name] [filename.launch] $ roslaunch tutorials simple.launch 4. rosnode コマンドで 現在起動しているROSのノードを表示 $ rosnode list /rosout /simple 5. Ctrl-Cで 全ての端末の実行を終了 ROS演習1 catkin ビルドシステム 41

roslaunchによるノード名のリネーム 1. simple.launchファイルを編集 クラスとインスタンスの $ gedit ~/catkin_ws/src/tutorials/launch/simple2.launch ように扱われる <launch> <node pkg="tutorials" name="simple2" type="simple" output="screen"/> </launch> 2. roslaunchコマンドで roscore と simpleノードを起動 コマンド形式 roslaunch [package_name] [filename.launch] $ roslaunch tutorials simple2.launch 3. rosnodeコマンドで 現在起動しているROSのノードを表示 $ rosnode list /rosout /simple2 4. Ctrl-Cで 全ての端末の実行を終了 ROS演習1 catkin ビルドシステム 42

roslaunch による namespace と ROS ノードの実行 (1/2) namespace: 別々の namespace で区切ることで同一のノード名が存在可能 1. launch ディレクトリ内に simple_ns.launch ファイルを作成 $ gedit ~/catkin_ws/src/tutorials/launch/simple_ns.launch 2. simple_ns.launch ファイルの内容として 以下を入力 ns は namespace の略 <launch> <group ns="simple1"> <node pkg="tutorials" name="simple" type="simple" output="screen"/> </group> <group ns="simple2"> <node pkg="tutorials" name="simple" type="simple" output="screen"/> </group> </launch> ROS 演習 1:catkin ビルドシステム 43

roslaunch による namespace と ROS ノードの実行 (2/2) 3. roslaunch コマンドで実行 $ roslaunch tutorials simple_ns.launch 4. rosnodeコマンドで 現在起動しているROSのノードを表示 $ rosnode list /rosout /simple1/simple /simple2/simple 5. rqt_console コマンドで 2 つのノードからのログ出力を確認 $ rqt_console 6. Ctrl-C で 全ての端末の実行を終了 ROS 演習 1:catkin ビルドシステム 44

www.tier4.jp 45

ROS 演習 1:catkin ビルドシステム Appendix Linux の利用 参考文献 関連リンク 1 関連リンク 2 46

Linux コマンド一覧 コマンド機能使用例 cd [dir] 指定したディレクトリ ( フォルダ ) へ移動する $ cd ~/Autoware/ros/src cp [source] [dest] 指定したファイルやディレクトリをコピーする $ cp CMakeLists.txt CMakeLists.org.txt gedit [file] 指定したファイルを gedit エディタで開く $ gedit CMakeLists.txt ls ディレクトリの情報を表示する $ ls mkdir [dir] 指定したディレクトリを作成する $ mkdir ~/catkin_ws mkdir -p [dir/-/dir] 指定したディレクトリをサブディレクトリごと作成する $mkdir p ~/catkin_ws/src source [file] 指定した設定ファイルを読み込む $ source /opt/ros/indigo/setup.bash tree ファイルやディレクトリの構成を木構造で表示する $ tree./[file] 指定したファイルを実行する $./run Autoware 演習 2 47

ROS コマンド一覧 コマンド機能使用例 catkin_init_workspace catkin ワークスペースを作成する $ catkin_init_workspace catkin_make catkin ワークスペースをビルドする $ catkin_make catkin_make -pkg [package] catkin ワークスペース内の特定のパッケージのみをビルドする roscore rosmaster を起動する $ roscore roslaunch [package] [.launch] rosmsg show [message type] roscore と launch ファイルで設定したノードを起動する 指定したメッセージがもつデータの種類を調べる $ catkin_make -pkg tutorials $ roslaunch tutorials simple.launch $ rosmsg show geometry_msg/twist rosnode kill [node name] 指定したノードを終了させる $ rosnode kill rosout rosnode list 起動しているノードの一覧を表示する $ rosnode list rosrun [package] [node name] 指定したノードを実行する $ rosrun tutorials simple rostopic echo [topic name] rostopic type [topic name] 指定したトピックがもつメッセージの内容を表示する 指定したトピックのメッセージ型を表示する $ rostopic echo /turtle1/cmd_vel $ rostopic type /turtle1/cmd_vel Autoware 演習 2 48

端末でのディレクトリ移動 1 1. $ cd と入力した状態で Tab を押すと 現在のディレクトリ内のフォルダが表示される 2. $ cd A と入力した状態で Tab を押すと その後に続くことが可能なものだけが表示される 2 3 3. $ cd Au と入力した状態で Tab を押すと 残りが補完される (Autoware と入力される ) 一度に複数ディレクトリを移動することも可能 現在の位置 一つ上のディレクトリに移動 $ cd../ どのディレクトリからでも home からの移動が可能 $ cd ~/ Autoware 演習 2 49

注意事項 gedit や roscore を立ち上げた端末ではプロセスを終了させるまでは他のコマンドを使うことはできない コマンドを打っても反映されない場合は $ があるか確認をする 他のコマンドを利用する場合には 新しい端末を作成する 同一の端末で利用したい場合は 後ろに & をいれる 例 )$ gedit CMakeLists.txt & コマンドの後ろにはスペースを入れる 誤 ) $ mkdir p~/catkin_ws/src 正 ) $ mkdir p ~/catkin_ws/src Tab を使ってタイピングミスを減らす 端末上で Tab キーを打つことで タイピング可能な文字列の表示 及び文字列の補完を行う Ctrl + C でノードを切ることができる Autoware 演習 2 50

参考文献 ROS に関する本 詳説 ROSロボットプログラミング ( 導入からSLAM Gazebo MoveItまで ) 表允晳 倉爪亮 渡邊裕太 (2015) ISBN 9784990873608 http://robotics.ait.kyushu-u.ac.jp/books/rosbook_jp.pdf ( 無償公開 ) ROSではじめるロボットプログラミング -フリーのロボット用 フレームワーク 小倉崇 (2015) ISBN 4777519015 https://www.amazon.co.jp/dp/4777519015/ref=cm_sw_r_tw_dp_x_zct-xbkqfveye ROS プログラミング 銭飛 (2016) ISBN 4627853416 https://www.amazon.co.jp/dp/4627853416/ref=cm_sw_r_tw_dp_x_sct-xbvgbxkh6 ROS 演習 1:catkin ビルドシステム 51

参考リンク 1 ROS についての情報 勉強サイト ROS 開発者向けWikiサイト http://wiki.ros.org/ 英語サイト http://wiki.ros.org/ja/ 日本語翻訳サイト ( 他 11カ国語翻訳 ) ROS チュートリアル http://wiki.ros.org/ja/ros/tutorials ( 日本語翻訳サイト ) 演習では ROS Wiki にあるチュートリアルをベースにしています ROS 演習 1:catkin ビルドシステム 52

参考リンク 2 Ubuntu のインストール手順 Ubuntu Japanese Teamサイト https://www.ubuntulinux.jp/ ROS のインストール手順 ROS Wiki サイト http://wiki.ros.org/ja/indigo/installation/ubuntu catkin について ROS の新しいビルドシステム catkin について http://myenigma.hatenablog.com/entry/20131229/1388320084 ROS 演習 1:catkin ビルドシステム 53