ROSパッケージのビルド
Simple Wiki Based Contents Management System
関心分野 >> Ros4Winのインストール >> ROSパッケージのビルド

ROSパッケージのビルド

自分のパッケージの依存しているパッケージやライブラリがインストールされていれば、新しいパッケージをビルドすることができます。catkin形式のパッケージでは、通常、catkin_makeコマンドを利用します。

catkin_makeコマンド

catkin_makeコマンドは、Unixを基盤とするROSシステムにおいては、標準的なCMakeのワークフローとmakeの呼び出しを行っています。現在のcatkin_makeは、Unix標準のMakefile、NinjaというビルドシステムおよびWindowsのnmakeに対応しています。しかしながら、Windowsを基盤にした場合に、makeシステムよりもVisual Stuidoを基盤にしたワークフローが一般的ですし、Ros4WinではVisual Studio 2017 Win64でビルドしています。そのため、オリジナルのcatkin_makeにCMakeのワークフローをベースに、Visual Studio 2017を利用するワークフローを使えるように機能拡張を行っています。
Ros4Winでは、catkin_makeの呼出しで --use-vc15のオプションを付けなければいけないのですが、Ros4Winのenv.batを実行していれば、doskeyを使ったエイリアス機能で catkin_makeとすれば catkin_make --use-vc15を呼び出すようになっています。
catkin_makeコマンドは、ワークスペースごとに実行し、--use-vc15オプションを付加して起動すると、下のようなワークフローが実行されます。
 > mkdir build
 > cd build
 > cmake C:\catkin_ws\src -DCATKIN_DEVEL_PREFIX=C:\catkin_ws\devel -DCMAKE_INSTALL_PREFIX=C:\catkin_ws\install -G "Visual Studio 15 2017 Win64"
 > cmake --build . --config Release
このプロセスは、CMakeのプロジェクト(パッケージ)ごとに実行されますが、自分が作成したプロジェクトはワークスペース単位で実行されることに注意してください。一つのワークスペースのsrcというディレクトリに複数のパッケージを作成した場合は、catkin_makeコマンドはすべてのパッケージのビルドを実行します。

自分のパッケージのビルド

先ほど作成したmytutパッケージをビルドしてみます。set_rosws.batコマンドを実行していれば、 roscdコマンドで移動することができます。
catkin_makeコマンドを実行すると下のようになると思います。'0 エラー'と最後に出力されれば無事終了です。
 >roscd
 C:\catkin_ws> catkin_make
Base path: C:\catkin_ws
Source space: C:\catkin_ws\src
Build space: C:\catkin_ws\build
Devel space: C:\catkin_ws\devel
Install space: C:\catkin_ws\install
####
#### Running command: "cmake C:\catkin_ws\src -DCATKIN_DEVEL_PREFIX=C:\catkin_ws\devel -DCMAKE_INSTALL_PREFIX=C:\catkin_ws\install -G Visual Studio 15 2017 Win64" in "C:\catkin_ws\build"
####
-- Using CATKIN_DEVEL_PREFIX: C:/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: C:/catkin_ws/devel;D:/opt/ros/melodic
-- This workspace overlays: C:/catkin_ws/devel;D:/opt/ros/melodic
-- Using PYTHON_EXECUTABLE: C:/local/Python37/python.exe
-- Using default Python package layout
-- Using empy: C:/local/Python37/Lib/site-packages/em.py
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: C:/catkin_ws/build/test_results
-- gtest not found, C++ tests can not be built. Please install the gtest headers globally in your system or checkout gtest (by running 'git clone  https://github.com/google/googletest.git -b release-1.8.0' in the source space 'C:/catkin_ws/src' of your workspace) to enable gtests
-- nosetests not found, Python tests can not be run (try installing package 'python3-nose')
-- catkin 0.7.14
-- BUILD_SHARED_LIBS is on
Boost static library...
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~  traversing 1 packages in topological order:
-- ~~  - mytut
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'mytut'
-- ==> add_subdirectory(mytut)
-- Configuring done
-- Generating done
-- Build files have been written to: C:/catkin_ws/build
####
#### Running command: "cmake --build . --config Release" in "C:\catkin_ws\build"
####
.NET Framework 向け Microsoft (R) Build Engine バージョン 15.3.409.57025
Copyright (C) Microsoft Corporation.All rights reserved.

2019/01/28 16:35:01 にビルドを開始しました。
ノード 1 上のプロジェクト "C:\catkin_ws\build\ALL_BUILD.vcxproj" (既定のターゲット)。
プロジェクト "C:\catkin_ws\build\ALL_BUILD.vcxproj" (1) は、ノード 1 上に "C:\catkin_ws\build\ZERO_CHECK.vcxproj" (2) をビルド しています (既定のターゲット)。
InitializeBuildStatus:
  "AlwaysCreate" が指定されたため "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild" を作成しています。
CustomBuild:
  すべての出力が最新のものです。
FinalizeBuildStatus:
  ファイル "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild" を削除しています。
  "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate" のタッチ タスクを実行しています。
プロジェクト "C:\catkin_ws\build\ZERO_CHECK.vcxproj" (既定のターゲット) のビルドが完了しました。

InitializeBuildStatus:
  "AlwaysCreate" が指定されたため "x64\Release\ALL_BUILD\ALL_BUILD.tlog\unsuccessfulbuild" を作成しています。
CustomBuild:
  すべての出力が最新のものです。
FinalizeBuildStatus:
  ファイル "x64\Release\ALL_BUILD\ALL_BUILD.tlog\unsuccessfulbuild" を削除しています。
  "x64\Release\ALL_BUILD\ALL_BUILD.tlog\ALL_BUILD.lastbuildstate" のタッチ タスクを実行しています。
プロジェクト "C:\catkin_ws\build\ALL_BUILD.vcxproj" (既定のターゲット) のビルドが完了しました。


ビルドに成功しました。
    0 個の警告
    0 エラー

経過時間 00:00:01.21
catkin_makeコマンドを実行するとワークスペースに build/ と devel/の2つのディレクトリが生成されます。build/ はビルドスペースのデフォルト位置で、Visual Studio 2017のソリューションファイルとビルド時のオブジェクトが格納されている場所です。devel/ はインストール前の実行ファイルとライブラリが入る場所になります。また、ROSパッケージのビルド後には、devel\setup.bat が生成されており、これを実行することで自分のワークスペースをROSシステムで利用するための環境変数設定を行います。
devel\setup.batを実行すれば、rospackコマンドで mytutのディレクトリを見つけることができるようになります。