現状、ROS2の基軸はUbuntu22.04+RO2Humbleに完全に映っており、かつ、mros2はROS2 Jazzy対応がまだリリースされておりません。

よって、Humbleでの設定のためのあれこれを載せます

なお、私は余計なことに余計な処理を使いたくないので、デスクトップはLubuntu(LXQt)に変更しています。

また、セキュリティー的にはアレですがわかりやすさのためにユーザー名は「pi」パスワードは「raspberry」を前提で解説します。

ここでは、以下のような通信ができることをゴールにしています。

はい、Foxyの時と同じです

まぁ、ラズパイ4はPCでも構わないですし、なんでしたらネットワークをブリッジ接続にしたバーチャルマシンでもネットワーク設定を正しくやっていれば動きますが、ここではラズパイ4以外のネットワーク設定は解説しません(一概に解説出来ない)ので、その場合は各自でよろしくお願いします。

全体手順は以下の通り

①ROS2を動かすマシンのセットアップ

 ①-1)Ubuntu(Lubuntu)のインストール

 ①-2)ネットワーク設定をしてリモートデスクトップサーバを入れる(RDPしないなら不要)

 ①-3)よく使いそうなツール類を入れる

②ROS2 Humbleインストール

③mros2-Mbedをインストール

 ③-1)Mbedコンパイル環境の導入(以下選択できる。両方も可能。)

  ・Mbed-CLI2(ラスパイならばこちらを推奨)

  ・Docker

 ③-2)mros2-mbed作業環境を作成

④デモ用ソフトウエアのダウンロードとデモの動作。


①ROS2を動かすマシン(ラズパイとかPCとか)のセットアップ

前提としてまず、ラズパイ4とNUCLEO-F746ZG(他、例えば767ZIとか、でもいいけど、その場合は最後のコンパイル時にターゲット名を変えましょう。)をそろえて下さい。

ラズパイ4でなく、PCやVM環境でもよいが、その場合は、細かい機種ごとの差異は自分で調べて吸収すること。あくまでここから先はラズパイ前提で書きます。

※ROS2-mros2導入済ラズパイイメージは本ページ末尾にあります。

起動するとCUIになりますが「pi」「raspberry」でログインしてコマンドラインでstartxとすればGUIに移行します。GUIでネットワークを設定後、いきなり④-1完了のところまで飛ばせます。インストールがどうしてもうまくいかない方はどうぞ。

①-1)Ubuntu(Lubuntu)のインストール

Lubuntuである必要はなく、Ubuntu(デスクトップ環境がGnome)でも構わない。動作が重いだけ。

・PCの場合、Lubuntu22.04 64bit Desktopをインストール

  Lubuntu公式からイメージダウンロード

・ラズパイの場合、いったんUbuntuの22.04を導入後、Lubuntu化する。

  ラズパイの場合はこちら

  なお、記載内容が一部かぶっている可能性がある


・ネットワーク設定

GUIでNetworkMabagerから設定するのが楽だと思います。

先の接続図になるように設定してください。

・(通信ができるようになったら)インストール後のお決まりセットアップを実施して・・・再起動。

sudo apt update
sudo apt upgrade
sudo reboot

①-2)リモートデスクトップサーバを入れる(RDPしないなら不要)

・xrdpサーバのインストール。

(私は風習的に以下を使用しています。結果として「できていればよい」のみを気にしていますので、あるべき論は詳しい方にお任せします。)

sudo apt install xrdp tightvncserver

で、再起動したら、この先はリモートデスクトップで操作を行います


①-3)よく使いそうなツール類を入れる

これも慣習的にわざわざ確認せず入れています。「動けばいい」という考えです。

sudo apt install fcitx-mozc fdclone tightvncserver xrdp gddrescue parted gparted cpufrequtils remmina chromium-browser chromium-browser-l10n terminator pcmanfm-qt libc6-dev build-essential i2c-tools git vlc remmina-plugin-rdp remmina-plugin-vnc blueman net-tools netcat-traditional git build-essential libx11-dev libglib2.0-dev libgtk2.0-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libusb-1.0-0-dev libfontconfig1-dev libssl-dev python3-pip cmatrix hollywood sl fortune bastet curl


mkdir 00_temp
mkdir 01_install

最近の環境だとpipはvemvじゃないからダメとかなんとか文句言われるかもね。

強行するなら”--break-system-packages“オプションが必要かもねー。しらんけど。

vscodeのインストール

PCの場合は

sudo snap install code --classic

ラズパイの場合(出展引用

cd 01_install
curl -L https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /usr/share/keyrings/microsoft-archive-keyring.gpg >/dev/null

echo "deb [arch=arm64 signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/repos/vscode stable main" | sudo tee  /etc/apt/sources.list.d/vscode.list

sudo apt update && sudo apt install code


②ROS2 Humbleインストール

・文字コード周りは基本的にutf-8であることの確認のみ実施

locale

UTF-8であることが多分重要。日本語でもいい気がする。今まで害は出ていない。

sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

sudo apt update
sudo apt upgrade

sudo apt install ros-humble-desktop ros-humble-ros-base ros-dev-tools

.bashrc編集。ケツに以下を追記。

ただし、下の段のcolcon_wsは、自分で作成したワークフォルダを指定する。

source /opt/ros/humble/setup.bash
source ~/colcon_ws/install/setup.bash

———————————後、自分は以下のモジュールを同時に仕込みます。

pip install transitions


③mros2-Mbedをインストール

③-1)Mbedコンパイル環境の導入

Mbedの公式いわく、「基本はオンラインコンパイラ」だけど「Mbed-CLI2をインストール」するほかに「Docker環境でコンパイルする」という手もあるということ。

一方、mros2-mbedライブラリの都合としては、「Mbed-CLI2」もしくは「Docker」しかサポートしていない。開発陣としてはオンラインコンパイラには興味を持っていないとのこと。OSSの基本はやりたい人が金か技術を出す、なので、モチベーションある方は高瀬先生に交渉をどうぞ。

・Mbed – CLI2をインストールする

まずは下準備、コンソールから

sudo apt install python3-pip
pip3 install jinja2
pip3 install future
echo "export PATH=~/.local/bin:${PATH}" >> ~/.bashrc
source ~/.bashrc

ST-Linkのツール類インストール

sudo apt install cmake libusb-1.0-0-dev
mkdir 01_install
cd 01_install
git clone https://github.com/texane/stlink.git
cd stlink
make
cd build/Release
sudo make install
sudo ldconfig

mbed-toolsのインストール

sudo apt install pip
python3 -m pip install mbed-tools
echo "export PATH=~/.local/bin:${PATH}" >> ~/.bashrc
source ~/.bashrc

Ninjaのインストール

sudo apt install ninja-build
python3 -m pip install intelhex prettytable

cmake 3.24.2をsnapインストール

sudo snap install cmake --classic
echo "export PATH=/snap/bin:${PATH}" >> ~/.bashrc
source ~/.bashrc

GCC-ARMのインストール

赤部分ダウンロードファイルの名前について、導入するマシンのアーキテクチャに合わせて変更すること。

例えば、ARM64bitならば「gcc-arm-none-eabi-10.3-2021.07-aarch64-linux.tar.bz2」

cd ~/01_install
wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.07/gcc-arm-none-eabi-10.3-2021.07-x86_64-linux.tar.bz2

tar -xjvf gcc-arm-none-eabi-10.3-2021.07-x86_64-linux.tar.bz2

echo "export MBED_GCC_ARM_PATH=`pwd`/gcc-arm-none-eabi-10.3-2021.07/bin/" >> ~/.bashrc

source ~/.bashrc
echo "export PATH="${PATH}:${MBED_GCC_ARM_PATH}"" >> ~/.bashrc
source ~/.bashrc

・Dockerをインストールする

なお、現状、Dockerでコンパイルした場合、コンパイルにより生成されたファイルやディレクトリはrootが持ち主となります。後日Mbed-CLIでコンパイルしたりファイル操作したりするときに支障が出た場合、エラーメッセージをよく見てpermission Deniedとか言ってた場合はこの辺の権限を疑ってみてください。

まずDocker動作環境をインストール

sudo apt install docker.io
sudo docker pull ghcr.io/armmbed/mbed-os-env:mbed-os-6-latest

Dockerをpiユーザーから実行できるようにグループに登録

sudo gpasswd -a pi docker

③-2)mros2-mbed作業環境を作成

(正規のやり方はこうです。が、④-1で一回消すので、とりまやらなくていいです。④に飛んでください)

・まず、作業フォルダをライブラリごとダウンロード。

(~/mros2-mbedというフォルダになりますが、面倒なのでフォルダ名はそのままがいいと思います)

git clone https://github.com/mROS-base/mros2-mbed.git

・早速テストコンパイル(赤文字はMBEDボードによって変更すること。)

cd mros2-mbed
./build.bash all NUCLEO_F746ZG echoback_string

④デモ用ソースコードのダウンロードとデモの動作。

④-1)デモコードのダウンロード

(②-2を行った方には申し訳ないがmros2-mbedを一回消してください。私が24/06/29現在時点で認識している状態とオフィシャルの環境が変わる可能性があるので)

そのうえで、以下を実施

cd
wget http://shinku.ddo.jp/binaryData/mros2/R2/01_ROS2/240629_app_humble.tar.gz
tar -zxvf ~/240629_app_humble.tar.gz
rm 240629_app_humble.tar.gz  

これで「colcon_ws」(ROS2のワークスぺース)と「mros2-mbed」(mbed側のクロスコンパイル・ワークスペース)ができる。

④-2)ROS2側アプリケーションの作成

cd
cd colcon_ws
colcon build

最初の一回はなぜかオレンジ色の気になるメッセージが出る(ワーニングは無視。主に「そのうちこの命令はサポートされなくなるよ」のメッセージ。)

colcom buildをもう一度やるとオレンジ色が出なくなる。

これで一回端末を閉じる。(もう一回.bashrcを読み込みたいので)

④ー3)Mbedのクロスコンパイル

以下のように実行。

赤文字部分「native」は、mbed cli2を使用した場合に必要。(Dockerの場合はオプションを外す。)

cd
cd mros2-mbed
./build.bash all NUCLEO_F746ZG mbed_rpi_minimum native

少なくても最初の一回はいろいろダウンロードするのでネットにつながっていないとコンパイルできません

コンパイルが完了すると、

~/mros2-mbed/cmake_buil/NUCLEO_F7xxxxx/develop/GCC_ARM/mros2-mbed.bin

が生えるので、これをMbedにコピペすれば動き出す


実行方法と実行結果についてはFoxyと同じになるはずです⇒こちら


ROS2+mros2導入済ラズパイSDイメージについて

ラズパイであれば、実は簡単すべて設定済なimgファイルが用意してあったりします。Foxyの時と同じです。⇒こちらからダウンロード。5GByte。

使い方

1)ダウンロードする

2)解凍する

3)「Win32Diskimager」などでSDカードに焼く

4)キーボード・マウス・モニターをつないでラズパイで起動する

  有線LANでMbedとつなぐ。USBでラズパイとMbedのリプロする側のポートをつなぐ、

5)pi/raspberryでログインする

6)startxでデスクトップを起動する

7)無線LANの接続設定をする。(有線LANはMbedとつなぐために既に設定済)

あとは、④-2以降と同じ。