Help us understand the problem. What is going on with this article?

Ubuntu 18.04にROS2 Dashingをインストール

More than 1 year has passed since last update.

ROS1の最新バージョンとROS2の最新バージョン、ros1_bridgeブリッジを試したいので、
MacbookProにUbuntu 18.04、ROS1 Melodic、ROS2 Dashingをインストールして見ました。
(VMではなく、直接MacbookProにインストールする理由は、パフォーマンスが速い)

Ubuntu16.04にROS2 Crystalをインストールは、こちら

ROSとOSの対応関係

UbuntuとROS1対応関係

Ubuntuバージョン ROSバージョン サポート期限
14.04 Indigo Igloo 2019年5月
16.04 Kinetic Kame 2021年5月
18.04 Melodic Morenia 2023年5月

UbuntuとROS2対応関係

ROS2バージョン    リリース時期 サポート期限 サポートOSバージョン
Ardent Apalone 2017/12 2018/12 Ubuntu 16.04,Mac OS X 10.12 ,Windows 10
Bouncy Bolson 2018/07 2019/07 Ubuntu 18.04,Ubuntu 16.04 ,Mac OS X 10.12,Windows 10
Crystal Clemmys 2018/12 2019/12 Ubuntu 18.04,Ubuntu 16.04 ,Mac OS X 10.12,Windows 10
Dashing Diademata 2019/05 2021/05 Ubuntu 18.04,Mac OS X 10.12,Windows 10,Debian Stretch,OpenEmbedded Thud,webOS OSE

MacBookProにUbuntu 18.04をインストール

MacBookPro仕様

MacBook Pro 13 inch "Core i5" 2.6GHz Retina (Mid 2014)

Built-in Display 13.3
Processor Type Core i5 (I5-4278U)
Processor Speed 2.6GHz
Apple Model Number A1502 (EMC 2875)
Architecture 64-Bit
Model Identifier MacBookPro11,1
Apple Subfamily Retina Mid 2014
Standard RAM 8GB
Video Card Iris 5100

UbuntuのイメージをUSBスティックに書き込む

  1. Ubuntu 18.04のデスクトップ版のイメージをダウンロード
  2. Etcherなどを使って、USBにその.isoファイルを書き込む image.png

Ubuntuのインストール

  1. Ubuntu用パーティションを作成
  2. rEFIndをインストールしてMacOSとUbuntuデュアルブートできるように準備
  3. MacBookにUSBを挿した状態でoptionを押しながらMacBookを起動
  4. rEFIndの起動選択画面でUSBを選択
  5. Ubuntuの「Install Ubuntu」メニューよりインストール

Ubuntu「インストールの種類」画面の設定

  1. 「インストールの種類」画面で「それ以外」を選択
  2. Ubuntu用のパーティションを選択して「ext4」で初期化、マウントポイントを「/」に設定
  3. ブートローダインストールデバイスにUbuntu用パーティションを選択
  4. インストール開始

Ubuntuインストールの確認

該当ModelのMacBookProを再起動すると、
既にWiFi, Keyboard, Audio, Bluetooth, トラックパッドが正常に使用できます^-^。

*最新ModelのMacBook ProにUbuntuインストール場合の注意点

MacBook Pro "Core i5" 2.3 13-Inch 
(Mid-2017 Retina Display, Two Thunderbolt 3 Ports)
(Apple Model Number: A1708 EMC 3164)
(Model Identifier: MacBookPro14,1)
の機種にUbuntu 16.04インストールには、
Keyboard & Touchpadは使用できない状態ですが(USBのmouseとKeyboard使用可能)、
インストール完了後、下記パッチを適用すると使えます。
https://github.com/Dunedan/mbp-2016-linux
https://github.com/cb22/macbook12-spi-driver

但し、Audio使用できない、USBのBluetoothを挿してBluetooth経由でAudioを使用する方法もあります。

Ubuntu 18.04にROS Melodicをインストール

PPAの追加

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
$ sudo apt update

ROSのインストール(melodic)

sudo apt install ros-melodic-desktop-full

Dependencies for building packages

sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

初期設定

$ sudo rosdep init
$ rosdep update

環境変数を追加

$ echo "source /opt/ros/melodic/setup.bash" >> .bashrc

ワークスペースの作成

$ source ~/.bashrc
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_init_workspace src
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
$ catkin_make && source ~/catkin_ws/devel/setup.bash

Ubuntu 18.04にROS2 Dashingをインストール

ROS1 起動環境のコメントアウト

.bashrcで設定したROS1の起動スクリプトをコメントアウトします。

# source /opt/ros/kinetic/setup.bash
# source ~/catkin_ws/devel/setup.bash

変更したスクリプトを適用します。

$ source ~/.bashrc

PPAの追加

$ 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 [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'
$ sudo apt update

ROSのインストール(Dashing)

$ sudo apt install ros-dashing-desktop

colcon build インストール

$ sudo apt install python3-colcon-common-extensions

ROS 2 command自動補完のインストール

$ sudo apt install python3-argcomplete

環境変数を追加

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

ワークスペースの作成

$ source ~/.bashrc
$ mkdir -p ~/ros2_ws/src 
$ cd ~/ros2_ws
$ colcon build
$ echo "source install/local_setup.bash && source install/setup.bash" >> ~/.bashrc

動作テスト

1つ目のターミナルで1秒ごとにメッセージがpublish(送信)されます。

$ ros2 run demo_nodes_cpp talker

[INFO] [talker]: Publishing: 'Hello World: 1'
[INFO] [talker]: Publishing: 'Hello World: 2'
[INFO] [talker]: Publishing: 'Hello World: 3'

2つ目のターミナルで1秒ごとにメッセージがsubscribe(受信)されます。

$ ros2 run demo_nodes_cpp listener

[INFO] [listener]: I heard: [Hello World: 1]
[INFO] [listener]: I heard: [Hello World: 2]
[INFO] [listener]: I heard: [Hello World: 3]

ROS 1とROS 2のメッセージ通信

ROS 1とROS 2の通信プロトコルは全く違うので、直接繋がることはできません。
しかしROS 1にあってROS 2にないフィーチャーはまだたくさんあります。
ROS 1とROS 2は一緒に利用することが望ましいです。

この問題を解決するためにROS 2がros1_bridgeというプロトコル通訳用(「ブリッジ」)のパッケージを提供します。

ROS1 bridgeのインストール

$ sudo apt update
$ sudo apt install ros-dashing-ros1-bridge

ROS1 bridge 動作テスト

ROS 1を起動
Shell A (ROS 1 only):

$ source /opt/ros/melodic/setup.bash
$ roscore

ros1_bridgeを起動
Shell B (ROS 1 + ROS 2):

$ source /opt/ros/melodic/setup.bash
$ source /opt/ros/dashing/setup.bash
$ export ROS_MASTER_URI=http://localhost:11311
$ ros2 run ros1_bridge dynamic_bridge

[Shell D]を実行すると、下記メッセージが出る
created 1to2 bridge for topic '/chatter' with ROS 1 type 'std_msgs/String' and ROS 2 type 'std_msgs/msg/String'
created 2to1 bridge for topic '/rosout' with ROS 2 type 'rcl_interfaces/msg/Log' and ROS 1 type 'rosgraph_msgs/Log'
[INFO] [ros_bridge]: Passing message from ROS 1 std_msgs/String to ROS 2 std_msgs/msg/String (showing msg only once per type)
[INFO] [ros_bridge]: Passing message from ROS 2 rcl_interfaces/msg/Log to ROS 1 rosgraph_msgs/Log (showing msg only once per type)
removed 1to2 bridge for topic '/chatter'
removed 2to1 bridge for topic '/rosout'

ROS 1 talkerを起動
Shell C:

$ source /opt/ros/melodic/setup.bash
$ rosrun rospy_tutorials talker

[INFO] [1569430196.302879]: hello world 1569430196.3
[INFO] [1569430196.403099]: hello world 1569430196.4
[INFO] [1569430196.503039]: hello world 1569430196.5

ROS 2 listenerを起動
Shell D:

$ source /opt/ros/dashing/setup.bash
$ ros2 run demo_nodes_cpp listener

[INFO] [listener]: I heard: [hello world 1569430217.2]
[INFO] [listener]: I heard: [hello world 1569430217.3]
[INFO] [listener]: I heard: [hello world 1569430217.4]
k-koh
自律移動ロボティクス開発を行っています。
sensyn-robotics
「ドローンによる業務の完全自動化」を実現し社会課題を抜本的に解決
https://www.sensyn-robotics.com/
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