LoginSignup
2
1

More than 5 years have passed since last update.

nao向けにROSをクロスコンパイルする〜第一回:ビルド編〜

Last updated at Posted at 2017-07-07

こんにちは、僕はロボカップSPLリーグにおいてROSベースのロボカップ用ソフトウェアを開発しています。
普段はWifiを経由して分散制御系を作っているのですが、SPLリーグにおいてはロボットに搭載されている計算機以外を使用することは禁止されています。
そこで今回はROSをnao向けにクロスコンパイルし、roscoreをnaoの内部で動作させる手順に関して簡単にまとめたいと思います。
この記事では環境構築からビルドまでをまとめます。

クロスコンパイル

ROSをnao向けにクロスコンパイルする方法はROSのWikiにまとめられています。
http://wiki.ros.org/action/show/nao/Tutorials/Installation?action=show&redirect=nao%2FInstallation
僕は特にこのページを参考にしました。
http://wiki.ros.org/nao/Installation/compileWithToolchain

naoqi-sdkのダウンロード

まずはc++用のnaoのsdkをダウンロードします。
1.ソフトバンクロボティクスのアカウントを作成、ログインしcommunityのページを開いた上でResourcesの中からSoftwareを選択
2.C++ naoqi-sdkの項目を見つけたらview-archivesをクリック
3.Cross Toolchain 2.1.0 Linux 32をダウンロード

依存ライブラリのダウンロード

参考ページによると
http://robotpkg.openrobots.org/packages/bsd/OpenNao-2.1.0.19-i386/All/console-bridge-0.2.7.tgz
http://robotpkg.openrobots.org/packages/bsd/OpenNao-2.1.0.19-i386/All/log4cxx-0.10.0~doc.tgz
http://robotpkg.openrobots.org/packages/bsd/OpenNao-2.1.0.19-i386/All/lz4-121r1.tgz
でダウンロードできるとあるのですが、少しだけリンクが変わってしまっているようです。
現在のはこちらからダウンロードできます。
http://robotpkg.openrobots.org/packages/bsd/OpenNao-2.1.0.19-i386/pub/console-bridge-0.2.7.tgz
http://robotpkg.openrobots.org/packages/bsd/OpenNao-2.1.0.19-i386/pub/log4cxx-0.10.0~doc.tgz
http://robotpkg.openrobots.org/packages/bsd/OpenNao-2.1.0.19-i386/pub/lz4-121r1.tgz

ワークスペースの作成

ワークスペースを作成します、頑張ればcatkin_wsでもできないことは無いような気はしますが今回はとりあえず作って見ました。
cd
mkdir ros_naoqi_ws
cd ros_naoqi_ws
cp ~/Downloads/linux32-atom-pub.zip .
unzip linux32-atom-pub.zip
mkdir deps
cd deps
cp ~/Downloads/console-bridge-0.2.7.tgz .
cp ~/Downloads/log4cxx-0.10.0~doc.tgz .
cp ~/Downloads/lz4-121r1.tgz .

ビルド

touch Makefile
エディタでMakefileを開き以下の内容を書き込み

Makefile
#naoqi-sdkのパスを記述
export SDK_PATH=/home/nao/ros_naoqi_ws/linux32-atom-pub

make:
    src/catkin/bin/catkin_make_isolated --merge -DCMAKE_CXX_FLAGS=-wall --cmake-args -DCMAKE_TOOLCHAIN_FILE=$(SDK_PATH)/cross-config.cmake

init:
    ##依存ライブラリを展開
    tar -xvf deps/console-bridge-0.2.7.tgz -C $(SDK_PATH)/libnaoqi-sysroot/
    tar -xvf deps/console-bridge-0.2.7.tgz -C $(SDK_PATH)/libnaoqi-sysroot/
    tar -xvf deps/log4cxx-0.10.0~doc.tgz -C $(SDK_PATH)/libnaoqi-sysroot/
    tar -xvf deps/lz4-121r1.tgz -C $(SDK_PATH)/libnaoqi-sysroot/
    find $(SDK_PATH)/libnaoqi-sysroot/share/ -type f -print0 | xargs -0 sed -i 's,/opt/openrobots/,'"$(SDK_PATH)"'/libnaoqi-sysroot/,'
    cp -fr $(SDK_PATH)/bzip2/* $(SDK_PATH)/libnaoqi-sysroot/
    rm -fr $(SDK_PATH)/libnaoqi-sysroot/share/cmake/boost*
    rm -fr $(SDK_PATH)/libnaoqi-sysroot/share/cmake/bzip2*
    rm -fr $(SDK_PATH)/libnaoqi-sysroot/share/cmake/opencv*
    cp -fr /usr/share/cmake-2.8/Modules/ $(SDK_PATH)/libnaoqi-sysroot/share/cmake/
    sed -i 's,list(INSERT CMAKE_FIND_ROOT_PATH 0  "${_TC_DIR}"),list(INSERT CMAKE_FIND_ROOT_PATH 0  "${ALDE_CTC_CROSS}" "${ALDE_CTC_SYSROOT}" "${ALDE_CTC_ROOTDIR}/libnaoqi-sysroot"),' $(SDK_PATH)/cross-config.cmake
    sed -i '$ d' $(SDK_PATH)/cross-config.cmake
    echo set\(CMAKE_CXX_FLAGS \"$\{CMAKE_CXX_FLAGS\} -DOE_CROSS_BUILD -Wl,--allow-shlib-undefined\" CACHE STRING \"\" FORCE\) >> $(SDK_PATH)/cross-config.cmake

generate:
    rosinstall_generator roscpp rospy roscore --rosdistro indigo --deps --upstream > nao_ros_indigo.rosinstall

download:
    wstool init src nao_ros_indigo.rosinstall

clean:
    rm -rf build_isolated
    rm -rf devel_isolated
    rm -rf src

make init
make generate
make download
make
以上の手順を実行するとビルドが始まります

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1