たかくんの成長

大学1年生、たかくんの成長を綴ります。学習記録や学生生活に関することが多いと思われます。

C++を使って,ROSでHello, ROS!をしてみる。

以前,カメさんを走らせたので今度はハロー,ロス!していきたいと思います。C++で。

 

karia68.hatenablog.com

 

 

*もちろんROSを入れていなければ出来ません。

1.ROSで遊ぶためのWorkspaceを作る

まず,ROSを動かすためのファイルたちを入れる,ディレクトリを作成します。ROSにおいてこのディレクトリのことをWorkspaceと呼ぶようです。ディレクトリというのはほぼフォルダと同義です。難しく考えすぎないように(それは自分)。まあ,文字通り作業場所をあらかじめ作っておくということですね。では作っていきましょう。

 

まずターミナルを開きます。デフォルトで現在のディレクトリが /homeになっていると思うので,そのまま

mkdir ros

とブチ込んでrosというディレクトリを作成しましょう。mkdirはそのままmake directoryということですね。ここで,

ls

というコマンドをブチ込むと現在のディレクトリに入っているファイルの一覧を確認できます。便利です。

続いてさらに,rosディレクトリの中にsrcというディレクトリを作成します。そのためにひとまず

cd ros

とブチ込んでrosディレクトリに移動しましょう。そんでそこでまた

mkdir src

とブチ込んでsrcというディレクトリを作成します。そしたら最後にまた

cd src

とブチ込んで場所をsrcに移動してから

catkin_create_pkg agitr

とブチ込みます。このagitrつーのは僕が参考にしてる本からの抜粋なので,そこの部分の名前はなんでも良いです。なんでもよいのです。そうすると,agitrというディレクトリがsrcの中に生成されまして,そしてその中にpackage.xml, CMakeLists.txt という2つのファイルが生み出されます。よろしいでしょうか。

なので,構造としては

ros---src---agitr--package.xml, CMakeLists.txt

という感じになります。

2.C++でHello, ROS!を書く

次に,agitrの中でヘロー,ロス!のプログラムを書きます。つまりhello.cppというテキストファイルをagitrの中にブチ込むことになります。なのでagitrの中に存在するファイルは合計3つ,hello.cpp, package.xml, CMakeLists.txtですね。

気になるhello.cppの中身はこうです。

#include <ros/ros.h>

int main(int argc, char **argv) {

    ros::init(argc, argv, "hello_ros");

    ros::NodeHandle nh;

    ROS_INFO_STREAM("Hello, ROS!");

}

間違っていたらごめんなさい。例によってコードの意味は省きます。C++全くわからないので。

ros---src---agitr--package.xml, CMakeLists.txt, hello.cpp

3.コンパイルする

次に,さきほど書いたC++のプログラムを認識してもらうために,同じディレクトリの中に入っているCMakeLists.txtの中身をちょろっと書き換えます。中身は,非常に丁寧にたくさんのコメントがついているのですが,もともとの,実質のコード部分はこうです。

cmake_minimum_required(VERSION 2.8.3)

project(agitr)

find_package(catkin REQUIRED)

catkin_package()

include_directories(include ${catkin_INCLUDE_DIRS})

 

そんで,元々のやつをこう書き換えます。

cmake_minimum_required(VERSION 2.8.3)

project(agitr)

find_package(catkin REQUIRED COMPONENTS roscpp)

catkin_package()

include_directories(include ${catkin_INCLUDE_DIRS})

add_executable(hello hello.cpp)

target_link_libraries(hello ${catkin_LIBRARIES})

 

はい,それではついにコンパイルです。ターミナルにこうブチ込みましょう。

catkin_make

成功したら,ダダダっといろいろなメッセージが流れに流れます。コンパイル成功です。

4.プログラムを実行する

 コンパイルに成功するとですね,rosの中にdevel, buildというディレクトリが出現します。はい,あともうちょっとです。

 

ros---src    ---agitr---package.xml

     --- build           --- CMakeLists.txt

     ---devel            ---hello.cpp

 

まず現在のターミナルでroscoreをブチ込みましょう。roscoreっていうのはROSというシステムを動かす上での中核となるやつですね。マスターです。管理人です。

roscore

そして,新たにターミナルを開いて,そこで

source devel/setup.bash

とブチ込みます。続けてそのまま,,,,

rosrun agitr hello

とブチコメば・・・・?

 

f:id:karia68:20180817193210p:plain

 

 

 やったね!!!!!!ハロー!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ROS!!!!!!!!!!!!!!

 

参考

A gentle introduction to ROS