Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
19
Help us understand the problem. What are the problem?

posted at

updated at

Raspberry Pi 4 に Ubuntu 20.04 LTS + ROS2の環境構築をしてみた

はじめに

  • raspi4 + ubuntu20.04 + ROS(foxy)の環境を構築してみます。
  • 更新日
    • 2020/06/16
    • 2021/07/07

目次

  1. Raspberry Pi 4にUbuntu 20.04 LTSをインストールする
  2. Ubuntu 20.04 LTSにROS2のインストール
  3. テストコードを実行してみる

1. Raspberry Pi 4にUbuntu 20.04 LTSをインストールする

用意したもの

  • Raspberry Pi 4 computer Model B 4GB RAM
  • micro SDカード(今回は16GB)
  • PC(mac or windows or linux)

手順

(1) Raspberry Pi Imagerをインストール

  • 公式ページからmy PCにダウンロード
  • macの場合、homebrewでも簡単に取れる
    • brew install raspberry-pi-imager

(2) Raspberry Pi Imagerを使ってmicroSDカードにイメージを書き込む

  • Raspberry Pi Imagerを起動
    image.png

  • operating systemでubuntu 20.04 LTSを選択

    • ROS2をインストールする場足は、64bitをとりましょう
    • ちなみに、ubuntu 21.04に対応したROS2のversionは、21/07/07の時点ではreleaseされていないようです

スクリーンショット 2020-06-16 22.47.29.png

  • SD cardを指定して、WRITEを押す
  • SDカードを取り外して終了

(3) raspi4を起動

  • (2)でイメージを書き込んだSDカードをraspiに差して起動(電源を繋ぐ)
  • 初回は時間がかかる、、?
  • ログインする
    • デフォルトのユーザ名 ubuntu
    • デフォルトのパスワード ubuntu
  • パスワードを変更する

(4) ホスト名、タイムゾーン、IPアドレスの設定

参考サイト

ホスト名の設定

sudo hostnamectl set-hostname ooo

タイムゾーンの設定

sudo timedatectl set-timezone Asia/Tokyo

IPアドレスの設定

sudo vim /etc/netplan/50-cloud-init.yaml
  • 参考ファイル
    • 192.168.xxx.1がルーターのIP
    • 192.168.xxx.yyyがraspiのIP
50-cloud-init.yaml
network:
    ethernets:
        eth0:
            dhcp4: false
            addresses: [192.168.xxx.yyy/24]
            gateway4: 192.168.xxx.1
            nameservers:
                addresses: [192.168.xxx.1]
    version: 2
  • 編集が終わったらnetplanで設定を反映させる
sudo netplan apply
sudo reboot

2. Ubuntu 20.04 LTSにROS2のインストール

手順

(1) ロケールのセットアップ

  • OSの文字コードをUTF8にする
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

(2) Setup Sources

  • ROS2のapt repositoryを加える
sudo apt update && sudo apt install curl gnupg2 lsb-release
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'

(3) ROS2のpackagesをインストール

  • baseとdesktopの2種類があるが、今回はbaseをインストール
sudo apt update
sudo apt install ros-foxy-ros-base

(4) 環境設定

source /opt/ros/foxy/setup.bash
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc

(5) argcompleteをインストール

  • 必須ではない
  • ROS2関連のコマンドラインをtabで補完できるようになる
sudo apt install python3-argcomplete

3. テストコードを実行してみる

  • 今回は、python用のコードを実行する

手順

(1) ワークスペースを作って、テストコードを取得、

  • C言語用のテストコード(rclcpp)もインストールされるので、今回は消しちゃいます。
mkdir -p ~/ros2/src
cd ~/ros2
git clone https://github.com/ros2/examples src/examples
cd ~/ros2/src/examples/
git checkout $ROS_DISTRO
rm -rf rclcpp 

(2) colcon(ビルド用ツール)をインストール

sudo apt install python3-colcon-common-extensions

(3) パッケージをビルドする

cd ~/ros2
colcon build --symlink-install

(4) 環境設定

source ~/ros2/install/setup.bash
echo "source ~/ros2/install/setup.bash" >> ~/.bashrc

(5) 動作確認

  • 端末(1)でPublisher
ros2 run examples_rclpy_minimal_publisher publisher_member_function
  • 端末(2)でSubscriber
ros2 run examples_rclpy_minimal_subscriber subscriber_member_function

さすれば、 ファンタスティック!!!

  • 端末(1)Publisher
    スクリーンショット 2020-06-16 22.34.15.png

  • 端末(2)Subscriber
    スクリーンショット 2020-06-16 22.34.36.png

  • 今回実行したテストコードはこちら

参考ページ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
19
Help us understand the problem. What are the problem?