目次

ROS2(Robot Operating System 2)

インストール

Windows10

情報のアプデとリンク切れが激しすぎてムカついた.
現状(2019-01-08)時点で最新と思われるROS Indexを参考にインストールする.
https://index.ros.org/doc/ros2/Installation/Windows-Install-Binary/
Rustを触るためにVisual Studio Build Tools 2017だけ入れていたので,新規でVisual Studio Community 2017インストールした.Community版は無料なのでこれ入れる.
DDSは必要であれば追加でインストール可能.
FastRTPSがデフォルトのため,特にイジる必要はないと思う.
Powershellもしくはcmdで実行する.なんか僕のWindowsの設定が悪いか知らんけど,基本的にこれらCUI環境は管理者権限つけて起動してやる(管理者権限なしで動作確認してないってだけ)
Windows 10とROS 2のインストール
ROS2.0をWindows10にインストールする
Windows用のパッケージマネージャChocolatyをインストールする.
cmdでもPowershellでもいい.管理者権限で起動すること,ちなみに非管理者権限でもChocolatyをインストール可能.その場合は別ページがあるのでそちらを参照
cmd

> @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

PowerShell

> Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Pythonをインストールする.

> choco install -y python

Chocolatyインストールした直後にPATHを変更するには以下のコマンドを実行Chocolateyでのインストール直後にPATH変更を反映する

> refreshenv

OpenSSLをインストールする.ここからインストーラを入手する.64bit版をインストールする,32bit版やLight版じゃないよ
パラメータは特に何も変えずにインストールする.環境変数PATHに登録する.
C:\OpenSSL-Win64\bin\

setx -m OPENSSL_CONF C:\OpenSSL-Win64\bin\openssl.cfg

Visual Stuidoをインストールする.
現状の最新は2017のはずなのでVS2017をインストールする.
VS2017 v15.8はコンパイラにバグがあるらしいのでこのバージョンは避ける. Desktop development with C++を選択してまとめてインストールが確実.
必要なら追加でDDSをインストールスする.いろいろあるけどとりあえず標準であればFastRTPSが使用されるっぽい.
OpenCVをインストールする.OpenCV 3.4.1を→https://github.com/ros2/ros2/releases/download/opencv-archives/opencv-3.4.1-vc15.VS2017.zip からダウンロードする.

> setx -m OpenCV_DIR C:\opencv

OpenCVのパスも環境変数PATHに追加する.c:\opencv\x64\vc15\bin←現状のOpenCVだと多分これ

依存関係をインストールする

> choco install -y cmake

Cmakeも環境変数PATHに追加する.

Githubのここから上の4つをダウンロードしてくる.

> choco install -y -s <PATH\TO\DOWNLOADS\> asio eigen tinyxml-usestl tinyxml2

<PATH\TO\DOWNLOADS>は上の4つをダウンロードしたディレクトリ
Pythonの依存関係もまとめてドーン

> python -m pip install -U catkin_pkg empy git+https://github.com/lark-parser/lark.git@0.7b opencv-python pyparsing pyyaml setuptools

RQtの依存関係もインストールする.

> python -m pip install -U pydot PyQt5

やっとROS2のバイナリをダウンロードする.GitHubか最新パッケージを拾ってくる. https://github.com/ros2/ros2/releases
適当な場所に解凍.今回はC:\dev\ros2に入れた. ROS2環境をセットアップ
cmdでもPowerShellでもいい,とりあえず管理者権限で起動

> call C:\dev\ros2\local_setup.bat

ROS2関係のものを起動するときは基本的に1ターミナルごとに1つずつ↑のコマンドを実行してやる.
サンプルを試す.

> ros2 run demo_nodes_cpp talker
> ros2 run demo_nodes_py listener

talker,listernerそれぞれ起動する時にネットワークアクセスの許可を求められるので許可する.

Mac OSに入れてみる(古い情報なので今後は多分いじらない)

バイナリを入れてサンプルコードを走らせてみる.
なお,PythonはAnacondaとかではなく,Systemのものにする必要があった.
https://github.com/ros2/ros2/wiki/OSX-Install-Binary

2017年末に初期リリース MBPをHighSierraでクリーンインストールしたのでそっちを入れ直した。
インストールは以下をやった。
MacOSとROS 2のインストール
はじめまして、ROS2
てぃるとさんプルリク飛ばしたのか…すごい…  

ターミナル(僕が使っているのはbash)を立ち上げたら

source ~/ros2_install/ros2-osx/setup.bash

を起動してROS2の環境変数を適用する。毎回打ち込むのがだるいなら「.bashrc」に書いておく。

トピック

ノード間をつなぐデータバスのようなもの

freertps

DDS通信プロトコルの一種OSRFが開発してるっぽい? マイコンとかのCPUリソースが少ない組み込み機器にはコイツを使えば通信できるらしい?
GitHubにあがっていたが,Linuxのシステムファイルを読んでいるのでUbuntuで試してみる必要がある.
GitHub:freertps

FreeRTPS+FreeRTOS

ROSwikiにあるFreeRTPSとFreeRTOSをstm32F4discoveryで走らせるためのプログラムのよう
stm32(arm)のビルドのためにgcc-arm-none-eabiを入れる必要がある他に,このFreeRTPSを構成する?ためにCMakeをインストールする必要もありそう.
検索すると「もしかして FreeRTOS」と出てくるのでこの名前をつけたOSRFを許さない.

ROSWiki:FreeRTPS+FreeRTOS
GitHub:FreeRTPS+FreeRTOS

やったこと

MacOSでやってみる
gcc-arm-none-eabiはインストールしてパスも通してあったので問題なかったかな
追加でCMakeもインストールして,パスを通した.(ターミナルから呼べるようにした) VSCode上から開いてmakeしたところ,warningはたくさん出たがエラーは出ずに100%まで達したので成功している?
その後wikiにあるようにサンプルコードを走らせようと思ったが,Makefileには有効そうなコマンドがなかったのでどういうことなのだろうか.謎である.

ROS Japan UG #20 ROS2講習会(2018年1月14日)

講師 Geoffrey Biggs
参加した。ROS2についてすこし知見を得た。
基本的にはこのページを進めた。https://gbiggs.github.io/rosjp_ros2_intro/
ROS2の開発状況とかはhttps://waffle.io/ros2/ros2にのってる

つまづいたこと

今回はMacBook Pro(2016),High Sierraでの環境
ROS2のワークスペースがビルドできない
ROS2で必要なPythonのバージョンは3。 ワークスペース全体のビルドの際にエラーが出たのでパッケージを追加した。必要なパッケージは「pyparsing」
ROS2のインストールでPython3をインストールしたが、MacOSのデフォルトのバージョンは2.7であり、そのままpipコマンドを使うとシステムのPython2.7の方に適用される。Pythono3の方にpyp arsingをインストールするには、「pip3」でインストールする。

pip3 install pyparsing

独自メッセージ型の利用方法で作成したパッケージがビルドできない
「Pythonのこのパッケージがないよ」って怒られてそのパッケージインストールしたら、AttributeErrorが出た。(今回は「em」というパッケージを入れた) これはモジュール名とファイル名orディレクトリ名がかぶると生じる。
Python でモジュール利用時に AttributeError が出た時はファイル名ディレクトリ名が被ってないか調べること
Pythonで module 'XXX' has no attribute 'XXX' が出た時の解決方法
でもエラー消えなかったし多分なんかミスってる。結果として、入れるパッケージ違ってた
Pythonには「em」「empy」というパッケージがあるらしく(紛らわしい)、ROS系に必要なのは「empy」のほうらしい。python module empy missing - Tutorialsという感じに同じ内容があった。これを同じようにPython3にいれてやれば無事にできた。あかつきさんありがとうございました。

pip3 install empy

パッケージのコンパイルに失敗したとき、build内のパッケージ名のファイルを削除しないと設定が残り続けて、いつまでもコンパイルに失敗するので注意する。

ハードウェア

参考文献

5分で分かるROS