Skip to content

Hiyama1026/uros_spike-rt_gen

Repository files navigation

micro-ROSファームウェア 自動生成ツール

本ツールについて

  • LEGO® Education SPIKE™ PrimeのHub上で実行可能なmicro-ROSファームウェアの自動生成ツール.
  • SPIKE Prime Hub向けのソフトウェアプラットホームであるspike-rtと,ASP3カーネル向けmicro-ROSミドルウェアであるmicro-ROS_ASP3を使用する.

特徴

  • Hubの各ポートに接続するデバイスの情報等をコンフィギュレーションファイル(Yaml)を記入することでmicro-ROSファームウェアを自動生成
    • micro-ROSパッケージとカスタムメッセージ型定義パッケージを生成
  • 本ツールの利用により,ユーザはmicro-ROSの通信相手であるROS2アプリの開発に専念できる
  • ROSのトピック通信を使用する

構成

  • SPIKE Prime Hub(Hub)と, Linux環境(Ubuntu)を使用する
    • Linuxはmicro-ROS Agant(Agant)の実行やROS2アプリの開発,及び本ツールを実行してmicro-ROSファームウェアを生成するのに使用
  • Agentの実行やROS2アプリの開発・実行はRaspberry Piで行うことも可能(動作確認済み)
  • Agentを実行するPCとHubはUARTで接続する

動作確認済みバージョン

動作環境

本ツールの使用方法

  • 本ドキュメントの「環境構築」に従い環境を構築する
  • Wikiのチュートリアルを実施しツールの使い方を確認する(整備中)
    • 仕様書(SPECIFICATION.md)を確認しながらチュートリアルを実施する事を推奨
  • 仕様書「SPECIFICATION.md」に従いツールを使用する


環境構築

Ubuntu PC側の環境構築

(注)Raspberry Piの環境構築の方法とは異なる

Ubuntu PCにROS2をインストール

spike-rtとmicro-ROS_ASP3をインストール

  • micro-ROSファームウェアのビルドを行うPC(Linux)上でワークスペースを作成
    mkdir ~/asp_uros_ws
    
  • ワークスペース上にspike-rtとmicro-ROS_ASP3をインストール
    • クローン
    cd ~/asp_uros_ws 
    git clone https://github.com/spike-rt/spike-rt.git
    git clone https://github.com/exshonda/micro-ROS_ASP3.git
    
    • 動作確認済みバージョンへのコミット移動
    cd spike-rt
    git checkout f6724115b0ef8c8367a760eaec2840089e6b4e55
    cd ../micro-ROS_ASP3
    git checkout 3a306729a797d0f4976daab50c5698acffe38a12
    
  • spike-rtとmicro-ROS_ASP3をセットアップ
  • micro-ROS_ASP3でPrime Hub向けの設定を行う
    • micro-ROS_ASP3/spike-rt/README.mdを参考にspike-rt対応のセットアップを行う
    • micro-ROS_ASP3/Makefile.configのターゲットボードをPrime Hubを選択する
    • ToDo オブジェクト数の静的指定

ROS2ワークスペースを作成する

  • micro-ROS_ASP3と同じ階層に作成する
  • 名前はros2_wsとする
cd ~/asp_uros_ws
mkdir ros2_ws
cd ros2_ws ; mkdir src
colcon build
. install/setup.bash

本ツールのインストール

  • micro-ROS_ASP3の直下にインストール
    cd ~/asp_uros_ws/micro-ROS_ASP3
    git clone git@github.com:Hiyama1026/uros_spike-rt_gen.git
    

エージェントのビルドと実行(micro-ROS AgentをUbuntu上で実行する場合のみ必要)

  1. 参考

  2. Micro-XRCE-DDS-Agentのコードをクローン

    cd ~
    git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
  3. ビルド

    cd Micro-XRCE-DDS-Agent
    mkdir build && cd build
    cmake -DTHIRDPARTY=ON ..
    make
    sudo make install
    sudo ldconfig /usr/local/lib/
    • CMakeのバージョンが古いと言われた場合は新しくする
      • CMake公式Older Releasesからcmake-3.27.2-linux-aarch64.tar.gzをダウンロード
      • 下記コマンドで更新(参考サイト)
        • $ tar -zxvf cmake-3.27.2-linux-aarch64.tar.gz
        • $ sudo mv cmake-3.27.2-linux-aarch64/ /opt
        • $ sudo ln -s /opt/cmake-3.27.2-linux-aarch64/bin/* /usr/bin
      • .bashrcに以下を追加してロード ($ source ~/.bashrc)
        export PATH=/opt/cmake-3.27.2-linux-aarch64/bin:$PATH
        export CMAKE_PREFIX_PATH=/opt/cmake-3.27.2-linux-aarch64:$CMAKE_PREFIX_PATH
        
      • <補足>
        • $ sudo apt remove cmake等をするとROSが壊れる
        • 壊れた場合は$ sudo apt install -y ./ros-humble-desktop-0.3.1_arm64.debを再度実行
  4. 実行

  • verbose_levelを6に設定して、メッセージの受信を表示するようにする
    • 2つ目のエージェントの実行コマンドはsudoが必要な場合がある
    • device はSPIKEと接続されているポート名(/dev/ttyXX)を指定
    source /opt/ros/humble/setup.bash
    MicroXRCEAgent serial --dev [device] -v 6
    • (例)シリアルの接続方法がRasPikeと同じ場合
      source /opt/ros/humble/setup.bash
      MicroXRCEAgent serial --dev /dev/ttyAMA1 -v 6
      

SPIKE Prime HubとUbuntuPCを接続する(micro-ROS AgentをUbuntu上で実行する場合のみ必要)

  • UbuntuPC上でAgentを実行する場合のみ必要
    • Agentを実行するPCとHubを接続する
  • PCとHubはUARTにより接続する
    • Hub側は接続ケーブルをポートFに接続する
    • PC側はUSB等で接続する


Raspberry Pi側の環境構築(オプション)

  • 以下の場合にのみ実施する
    • micro-ROS AgentをRaspberry Pi上で実行する
    • ROS 2アプリをRaspberry Pi上で開発・実行する

Raspberry Pi側のOSのインストールと実行

A:Raspberry Pi OSを使用する場合

  1. Raspberry Pi OS (64bit)をインストール

  2. ROS 2をのRaspberry Piにインストール

    • アップデート

      sudo apt update
      sudo apt -y upgrade 
    • ROS2パッケージをインストールする

      wget https://s3.ap-northeast-1.wasabisys.com/download-raw/dpkg/ros2-desktop/debian/bullseye/ros-humble-desktop-0.3.1_arm64.deb
      sudo apt install -y ./ros-humble-desktop-0.3.1_arm64.deb
      source /opt/ros/humble/setup.bash
    • ビルドツールのインストール

      sudo pip install vcstool colcon-common-extensions
    • ROS環境の自動読み込み設定

      echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
      source ~/.bashrc
    • 動作確認

      ros2 launch demo_nodes_cpp talker_listener.launch.py
      • 下記のように出力されれば成功
        [INFO] [launch]: All log files can be found below /home/hiyama/.ros/log/2023-07-04-14-52-42-067659-raspi-1582
        [INFO] [launch]: Default logging verbosity is set to INFO
        [INFO] [talker-1]: process started with pid [1583]
        [INFO] [listener-2]: process started with pid [1585]
        [talker-1] [INFO] [1688449964.564641073] [talker]: Publishing: 'Hello World: 1'
        [listener-2] [INFO] [1688449964.565626925] [listener]: I heard: [Hello World: 1]
        [talker-1] [INFO] [1688449965.564647258] [talker]: Publishing: 'Hello World: 2'
        [listener-2] [INFO] [1688449965.565234628] [listener]: I heard: [Hello World: 2]
        ...
        
  3. GPIOの接続を有効にする(GPIOピンを使用してRaspberry PiとSPIKEをシリアル接続する場合に必要)

    • micro-ROS AgentをRaspberry Pi上で実行する場合のみ必要
    • GPIOピンを使用せずにUSB等でシリアル接続する場合は不要
    1. 下記のコマンドで設定ファイルを開く

      sudo nano /boot/config.txt
    2. config.txtの最後に下記を追加

      dtoverlay=uart5
    3. リブートする

      sudo reboot

B:Ubuntu20.04LTSを使用する場合

  1. Ubuntu22.04のイメージファイルを入手し,RaspberryPI OS Imager等を使用してSDカードに焼く

エージェントのビルドと実行

(注)以下はRaspberr Pi OSとUbuntu22.04で共通の手順

  1. 参考

  2. Micro-XRCE-DDS-Agentのコードをクローン

    cd ~
    git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
  3. ビルド

    cd Micro-XRCE-DDS-Agent
    mkdir build && cd build
    cmake -DTHIRDPARTY=ON ..
    make
    sudo make install
    sudo ldconfig /usr/local/lib/
    • CMakeのバージョンが古いと言われた場合は新しくする
      • CMake公式Older Releasesからcmake-3.27.2-linux-aarch64.tar.gzをダウンロード
      • 下記コマンドで更新(参考サイト)
        • $ tar -zxvf cmake-3.27.2-linux-aarch64.tar.gz
        • $ sudo mv cmake-3.27.2-linux-aarch64/ /opt
        • $ sudo ln -s /opt/cmake-3.27.2-linux-aarch64/bin/* /usr/bin
      • .bashrcに以下を追加してロード ($ source ~/.bashrc)
        export PATH=/opt/cmake-3.27.2-linux-aarch64/bin:$PATH
        export CMAKE_PREFIX_PATH=/opt/cmake-3.27.2-linux-aarch64:$CMAKE_PREFIX_PATH
        
      • <補足>
        • $ sudo apt remove cmake等をするとROSが壊れる
        • 壊れた場合は$ sudo apt install -y ./ros-humble-desktop-0.3.1_arm64.debを再度実行(RaspberryPi OSの場合)
  4. 実行

  • verbose_levelを6に設定して、メッセージの受信を表示するようにする
    • 2つ目のエージェントの実行コマンドはsudoが必要な場合がある
    • device はSPIKEと接続されているポート名(/dev/ttyXX)を指定
    source /opt/ros/humble/setup.bash
    MicroXRCEAgent serial --dev [device] -v 6
    • (例)シリアルの接続方法がRasPikeと同じ場合
      source /opt/ros/humble/setup.bash
      MicroXRCEAgent serial --dev /dev/ttyAMA1 -v 6
      

HubとRaspberry Piを接続

免責

  • 本ソフトウェアの利用により直接的または間接的に生じたいかなる損害に関しても,その責任を負わない.



付録

ROS2 HumbleのUbuntuPCへのインストール方法

  1. ロケールを設定

    locale  # check for UTF-8
    
    sudo apt update && sudo apt install locales
    sudo locale-gen en_US en_US.UTF-8
    sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
    export LANG=en_US.UTF-8
    
    locale  # verify settings
    
  2. ROS2 リポジトリのインストール

    sudo apt install software-properties-common
    sudo add-apt-repository universe
    
  3. GPGキーの設定

    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
    
  4. リポジトリをソースリストに追加

    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
    
  5. aptのアップグレード(必須)

    sudo apt update
    sudo apt upgrade
    
  6. ツールのインストール

    sudo apt install ros-humble-desktop
    
    sudo apt install ros-humble-ros-base
    
    sudo apt install ros-dev-tools
    
  7. セットアップの実行(起動時毎に必要なためbashの設定ファイルに記載しておくと良い)

    # Replace ".bash" with your shell if you're not using bash
    # Possible values are: setup.bash, setup.sh, setup.zsh
    source /opt/ros/humble/setup.bash
    
  8. テストの実行

    ros2 run demo_nodes_cpp talker
    
    • 下記のように表示されれば成功
      [INFO] [1700732992.424835597] [talker]: Publishing: 'Hello World: 1'
      [INFO] [1700732993.424739244] [talker]: Publishing: 'Hello World: 2'
      [INFO] [1700732994.424762644] [talker]: Publishing: 'Hello World: 3'
      [INFO] [1700732995.424767342] [talker]: Publishing: 'Hello World: 4'
      ...
      

ROS2アプリをその他OSの汎用PC(Windows,RHEL,macOS)へのインストール方法

  • ここなどのROS2公式サイトを参考にインストールする
  • 動作未確認

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published