LoginSignup
1
1

More than 1 year has passed since last update.

rosをインストールしてHello Worldする

Last updated at Posted at 2022-03-30

導入

 ROSを始めるにあたり個人的に躓いたところなどをまとめることを目的として、インストールとROSの基本事項についてまとめたいと思います。

windows環境でROSをインストールする方法

 ROS自体はubuntuにしか対応していません。しかし、windowsのPCしか持っていない場合でもlinuxの仮想環境を入れることでROSを使用することができます。linuxの仮想環境については以下を参考にVirtualBoxという仮想環境でubuntu18.04をインストールしました。
https://qiita.com/HirMtsd/items/225c20b77a7cd5194834
 大まかな流れは、インストールしたいバージョンのisoファイルをubuntu公式サイトからダウンロードし、VirtualBoxにてisoファイル、メインメモリ、ディスク容量を選択するだけです。(私はメインメモリ:4GB、ディスク容量:20GBにしました。)ディスク容量は10GBだと足りないと思います。途中の選択肢で可変サイズを選んでいれば後からでもディスク容量は変更できます。ただ、自分は一度10GB→20GBに変更した際にubuntuが起動できなくなってしまったので、あらかじめ余裕をもって容量を選択することをお勧めします。

ROSのインストール

以下を参考にしました。
https://qiita.com/srs/items/e0e0a9dc3f94c2d3348e

install.sh
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 install curl 

curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

sudo apt update

sudo apt install ros-melodic-desktop-full

apt search ros-melodic

sudo apt-get install python-rosdep

sudo rosdep init

rosdep update

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

source ~/.bashrc

source /opt/ros/noetic/setup.bash

sudo apt-get -y install python-rosinstall

sudo apt-get install -y python3-catkin-tools

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/src

catkin init

cd ~/catkin_ws

catkin build

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

上記をターミナルで順番に実行していけば完了です。(melodicの部分はnoeticなど環境に合わせて変更してください。)

roscore

 最後に上記のroscoreをしてエラー表示が出なければインストールできているはずです。

ROSパッケージを作る

 上記のインストールでcatkin_wsの中にsrcというファイルができていると思います。ROSのファイル構造はROSパッケージというものを基本単位として扱うという特徴があり、そのROSパッケージを入れ子にするようにファイルを作っていきます。今回チュートリアル用のROSパッケージを、ROS.orgを参考にbeginner_tutorialsという名前で作成します。

cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

このROSパッケージは後でHello Worldするときに使用します。

よく使うROSパッケージやツールをインストール

 ROSのインストールで参考にさせていただいた記事に書いてあるものをとりあえずインストールしました。

sudo apt-get install -y ros-melodic-joystick-drivers
sudo apt-get install -y ros-melodic-jsk-visualization
sudo apt-get install -y ros-melodic-image-proc

sudo apt-get install -y git
sudo apt-get install -y vim

Pub&Sub通信でHello Worldする

Pub&Sub通信について

 ROSのフレームワークではPub&Sub通信(パブリッシュ/サブスクライブ通信)が使われており、データ送信側をパブリッシャ、データ受信側をサブスクライバと呼びます。データはトピックという単位で扱いますが、ROSではROSトピックという名前で使用されます。また、ROSではプログラムの最小単位をROSノードと言います。つまり、各ROSノードがROSトピックを送受信することで通信を行うという仕組みになります。

ソースコード

 最初はROS.orgのチュートリアルを見てやっていったのですが、わからないところが多かったので以下の記事を参考にさせていただきました。
https://qiita.com/srs/items/26ca826802d07a9e3d4e
 手順はこんな感じです。
① catkin_ws/src/beginner_tutorials/srcに移動する
②Publisherのc++のプログラムファイルを作る
③Subscriberのc++のプログラムファイルを作る
④catkin_ws/src/beginner_tutorialsに移動する
⑤CMakeLists.txtを書き足す
⑥ビルド
 PublisherとSubscriberのソースコードはそのままコピペでやりました。

 現在のファイルはこのようになっているはずです。

スクリーンショット (926).png

 ROSでは基本的にソースコードはすべて各ROSパッケージのsrcの中に保存するみたいです。

CMakeLists.txtの書き足し

 私の場合、先ほどの記事と少し違う点があったので一応載せておきます。

cmake_minimum_required(VERSION 3.0.2)
project(beginner_tutorials)

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
)
#以下の部分を書き足してください

include_directories(
  ${catkin_INCLUDE_DIRS}    
)

add_executable(basic_simple_talker   src/basic_simple_talker.cpp) 
add_executable(basic_simple_listener src/basic_simple_listener.cpp) 

target_link_libraries(basic_simple_talker
  ${catkin_LIBRARIES}
)


target_link_libraries(basic_simple_listener
  ${catkin_LIBRARIES}
)

CMakeLists.txtファイルは大量のコメントアウトがあり一見わかりにくいのですが、実際には少し変えるだけです。

実行

実行の手順
①catkin buildでビルドする
②3つのターミナルを開く
③1つ目のターミナルでroscoreを実行
④2つ目のターミナルでPublisherのコードを実行
⑤3つ目のターミナルでSubscriberのコードを実行

cd ~/catkin_ws
catkin build

ターミナルで上記を実行するとcatkin_ws内のすべてのROSパッケージをビルドが開始されます。ここでエラーが出た場合基本的にはPublisher、Subscriber、CMakeLists.txtのうちどれかのファイル名または中身のタイプミスなどが原因だと考えられます。

source ~/catkin_ws/devel/setup.bash

 開いた3つのターミナルすべてで上記を実行する。

roscore

 1つ目のターミナルで上記を実行する。

rosrun basic_lecture basic_simple_talker

 2つ目のターミナルで上記を実行する。

rosrun basic_lecture basic_simple_listener

 3つ目のターミナルで上記を実行する。

実行結果

1つ目(roscore)のターミナル

スクリーンショット (928).png

2つ目(basic_simple_talker)のターミナル

スクリーンショット (929).png

3つ目(basic_simple_listener)のターミナル

スクリーンショット (930).png

パブリッシャ、サブスクライバともに成功が確認できました。

まとめ

 ROSに関して全くの初心者だったので、ROSのバージョンをどれがいいのか悩んだり、ROS特有のファイル構造がよくわからなかったりなどなれない部分が多く最初の理解に戸惑いました。最終的には一応成功したのでROSについて基礎の基礎は理解できたような気がします。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1