見出し画像

ROSのインストール

1. ROS

ROS」 (Robot Operating System)はソフトウェア開発者のロボット・アプリケーション作成を支援するライブラリとツールを提供しています。 具体的には, ハードウェア抽象化, デバイスドライバ,ライブラリ,視覚化ツール, メッセージ通信,パッケージ管理などが提供されています. ROSはオープンソースの一つ, BSDライセンスにより, ライセンス化されています。

ROS.org
ROS Wiki

2. 用途

自動運転 : 地図の作成、地図上の経路計画
ファクトリーオートメーション : ロボットのアクチュエータの制御
クラウドロボティクス : クラウド上での物体認識、音声認識

3. ROS1とROS2の違い

画像1

◎ ROS1のアーキテクチャ

画像3

・ROSマスタ : ROS1アプリを実行するには、ROSマスタを起動しておく必要がある。
・クライアントライブラリ : ROSのインタフェースとなるAPI。言語毎に提供。
・ユーザーノード : 実行可能なプログラム単体。ROSでは複数のノードがTCPROS経由でメッセージ通信を行い、共同してタスクを処理する。
・TCPROS : ノード同士がメッセージのやりとりを行う独自の通信プロトコル。

◎ ROS2のアーキテクチャ

画像3

・ユーザーノード : 実行可能なプログラム単体。ROSでは複数のノードがDOS経由でメッセージ通信を行い、共同してタスクを処理する。
・rcl : クライアントライブラリ共通の機能を提供するAPI。
・rmv : 通信機能を抽象化するミドルウェアのAPI。
・DDS : ノード同士がメッセージのやりとりを行う通信プロトコル。

◎ ビルドツールの変遷
(1) rosbuild : ROS1 Fuerteまでのビルドツール
(2) catkin_make : Windows/macOS/Linuxに対応
(3) catkin : 並列ビルドに対応
(4) ament : ROS2パッケージに対応
(5) colcon : ROS1とROS2の両方に対応
 (ROS1にはcatkin、ROS2にはamentを呼び出す)

4. ROS1のディストリビューション

・Box Turtle(2010年3月2日)
・C(Sea) Turtle(2010年8月2日)
・Diamondback(2011年3月2日)
・Electric Emys(2011年8月30日)
・Fuete Turtle(2012年4月23日)
・Groovy Galapagos(2012年12月31日)
・Hydro Medusa(2013年9月4日)
・Indigo Igloo(2014年7月22日)
・Jade Turtle(2015年5月23日)
・Kinetic Kame(2016年5月23日)
・Lunar Loggerhead(2017年5月23日)
・Melodic Morenia(2018年5月23日)
・Noetic Ninjemys(2020年5月予定)

5. ROS2のディストリビューション

・Ardent Apalone(2017年12月予定)
・Boucy Bolson(2018年7月予定)
・Crystal Clemmys(2018年12月予定)
・Dashing Diademata(2019年5月予定)

6. ROS1をUbuntuにインストール

ROS1」(melodic)を「Ubuntu 18.0.4」にインストールします。

(1) ROS1のインストール

$ sudo su -
$ sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key  421C365BD9FF1F717815A3895523BAEEB01FA116
$ apt update
$ apt upgrade
$ apt install ros-melodic-desktop-full
$ rosdep init
$ rosdep update
$ apt install ros-kinetic-cartographer*
$ apt install ros-melodic-teleop*
$ apt install ros-melodic-turtlebot3*

(2) 関連パッケージのインストール

$ apt install python-rosinstall python-rosinstall-generator python-rosdep python-wstool
$ apt install build-essential ninja-build liburdfdom-tools
$ apt install libceres-dev libprotobuf-dev protobuf-compiler libprotoc-dev

(3) 環境変数の追加
「.bashrc」に以下の環境変数を追加します。

source /opt/ros/melodic/setup.bash

端末(コンソール)の再起動、または「source ~/.bashrc」で「.bashrc」を反映します。

$ source ~/.bashrc

7. はじめてのROS1アプリの作成

1秒毎に"Hello World!"と表示するROS1アプリを作成します。

(1) ワークスペースの作成
ワークスペースのフォルダを作成後、srcにパッケージを生成し、ビルドします。パッケージ名は「sample」としました。

$ mkdir ~/sample_ws
$ mkdir ~/sample_ws/src
$ cd ~/sample_ws/src
$ catkin_create_pkg sample std_msgs roscpp rospy
$ cd ~/sample_ws
$ catkin_make

(2) hello.cppの作成
srcにhello.cppを作成し、以下のように記述します。

#include <ros/ros.h>

int main(int argc, char **argv) {
    ros::init(argc, argv, "hello");
    ros::NodeHandle nh;
    ros::Rate rate(1);
    while(ros::ok()) {
        ROS_INFO_STREAM("Hello World");
        rate.sleep();
    }
}

(3) CMakeLists.txtの編集
「src/sample/CMakeLists.txt」を開き、以下の行を追加します。

add_executable(hello src/hello.cpp)
target_link_libraries(hello ${catkin_LIBRARIES})​

(4) hello.cppのビルド
最後にビルドします。

$ cd ~/sample_ws
$ catkin_make

(5) helloの実行
「setup.bash」で環境のセットアップを行い、ROSマスタ(roscore)をバックグラウンド起動し、「rosrun」でsampleパッケージのhelloを実行します。

$ source ~/sample_ws/devel/setup.bash
$ roscore &
$ rosrun sample hello
[ INFO] [1580519030.440210859]: Hello World
[ INFO] [1580519031.440901434]: Hello World
[ INFO] [1580519032.443405508]: Hello World
[ INFO] [1580519033.445498956]: Hello World
[ INFO] [1580519034.445048922]: Hello World
    :

8. ROS2をUbuntuにインストール

ROS2」(dashing)を「Ubuntu 18.0.4」にインストールします。

(1) ロケールの設定

$ 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) ROS2のインストール

$ 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
$ sudo apt install ros-dashing-desktop
$ sudo apt install python3-colcon-common-extensions
$ sudo apt install python3-argcomplete

(3) 環境変数の追加
「.bashrc」に以下の環境変数を追加します。「ROS1」の環境変数がある場合はコメントアウトします。

# source /opt/ros/melodic/setup.bash
source /opt/ros/dashing/setup.bash

端末(コンソール)の再起動、または「source ~/.bashrc」で「.bashrc」を反映します。

$ source ~/.bashrc

9. ROS2のデモノードの実行

1秒毎に"Hello World"と表示するROS2アプリを作成します。

(1) ワークスペースの作成
ワークスペースのフォルダを作成後、ビルドします。

$ mkdir -p ~/sample_ws2/src
$ cd ~/sample_ws2
$ colcon build

(2) ROS2のデモノードの実行

$ ros2 run demo_nodes_cpp talker
[INFO] [talker]: Publishing: 'Hello World: 1'
[INFO] [talker]: Publishing: 'Hello World: 2'
[INFO] [talker]: Publishing: 'Hello World: 3'
[INFO] [talker]: Publishing: 'Hello World: 4'

この記事が気に入ったらサポートをしてみませんか?