導入
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
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のソースコードはそのままコピペでやりました。
現在のファイルはこのようになっているはずです。
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)のターミナル
2つ目(basic_simple_talker)のターミナル
3つ目(basic_simple_listener)のターミナル
パブリッシャ、サブスクライバともに成功が確認できました。
まとめ
ROSに関して全くの初心者だったので、ROSのバージョンをどれがいいのか悩んだり、ROS特有のファイル構造がよくわからなかったりなどなれない部分が多く最初の理解に戸惑いました。最終的には一応成功したのでROSについて基礎の基礎は理解できたような気がします。