Non-engineer memoblog

エンジニアではない人間のメモブログ(備忘録とアウトプット欲のために)

Raspberry PiへROS (Robot Operating System)のインストールと実行

興味があったのでROSを学習してみよう、ということでインストールと動作の実行を行って見たいと思います。

※最初にRaspberry Pi3(Raspbian)へのインストールを行おうとしましたが、なぜか途中でうまくいかなくなったためRaspberry Pi2にて正式対応のUbuntuへインストール。


以下の記事と書籍を参考にしました。
ラズパイで動くロボット「GoPiGo」をつかって遠隔見守りロボットを作ろう(1) 開発準備編 (1/6):CodeZine(コードジン)
ROSではじめるロボットプログラミング―フリーのロボット用「フレームワーク」 (I・O BOOKS)

wicd-cursesのインストール

※Ubuntu14.04 LTSはMicroSDに転送済み

$ sudo apt-get update 
$ sudo apt-get wicd-curses 
$ sudo reboot 
$ sudo wicd-curses  

すんなり起動ができず、いったんapt-get dist-upgradeをなど試しているうちに起動しました。

公式サイトに従ってROS Indigoのインストール

$ sudo update-locale LANG=C LANGUAGE=C LC_ALL=C LC_MESSAGES=POSIX 
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list' 
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net --recv-key 0xB01FA116 
$ sudo apt-get update 
$ sudo apt-get install ros-indigo-ros-base -y  

rosdepのインストールと初期化

$ sudo apt-get install python-rosdep 
$ sudo rosdep init 
$ rosdep update  

ROSの環境変数をシステムに反映/rosinstallのインストール

$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc 
$ source ~/.bashrc 
$ sudo apt-get install python-rosinstall  

ここまでも良くわからない失敗などを繰り返し、なんとかインストール完了。

Hello worldを実行

import rospy

rospy.init_node('hello_world_node')
rospy.loginfo('hello world')
rospy.spin()

実行

$ python hellow_world.py  

ファイルがありませんとエラー発生。

パーミッションを変更

$ chmod u+x hellow_world.py  

再度実行したらきちんと'hello world'が表示されました。

ワークスペースディレクトリを作成

$ mkdir -p ~/catkin_ws/src 
$ cd ~/catkin_ws/  

ROSの起動

ここでもう1つターミナルを立ち上げる。

$ roscore 
... logging to /home/ubuntu/.ros/log/71ba861e-f35d-11e6-b4a0-0022cffb11db/roslaunch-ubuntu-1318.log 
Checking log directory for disk usage. This may take awhile. 

~中略~ 

setting /run_id to 71ba861e-f35d-11e6-b4a0-0022cffb11db 
process[rosout-1]: started with pid [1343] 
started core service [/rosout]


きちんと起動されました。

ROSワークスペースの作成

$ mkdir -p ~/catkin_ws/src 
$ cd ~/catkin_ws/src/ 
$ catkin_init_workspace 
$ catkin_make  

CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found. Please set CMAKE_CXX_COMPILER to a valid compiler path or name.

catkin_makeでエラー発生。

g++ をインストール

$ sudo apt-get install g++  

再度実行

$ catkin_make 

#### Running command: "make -j4 -l4" in "/home/ubuntu/catkin_ws/build"  

きちんとビルドされました。


その他の実行は以下(長くなってきたため...)

$ source ~/catkin_ws/devel/setup.bash 
$ vim ~/.bashrc 

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

$ echo $ROS_PACKAGE_PATH 

/home/ubuntu/catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks 

$ cd ~/catkin_ws/src 
$ catkin_create_pkg ros_start rospy roscpp std_msgs 
$ cd ~/catkin_ws 
$ catkin_make 
$ source ~/catkin_ws/devel/setup.bash 
$ roscd ros_start 
$ cd ~/catkin_ws/src/ros_start 
$ mkdir scripts 
$ cd scripts  

Pubkisherの作成

Subscriberの作成

パーミッションを変更

$ chmod 755 talker.py listener.py 

ここでさらにもう1つターミナルを立ち上げて(計3つ)実行

$ roscore 
$ rosrun ros_start talker.py 
$ rosrun ros_start listener.py  

以下のようにポーリングっぽいループ処理が走りました!

[INFO] [WallTime: 1487159069.768171] I heard hello. world 1487159069.77 
[INFO] [WallTime: 1487159069.868088] I heard hello. world 1487159069.87 
[INFO] [WallTime: 1487159069.968091] I heard hello. world 1487159069.97 
[INFO] [WallTime: 1487159070.068077] I heard hello. world 1487159070.07 
[INFO] [WallTime: 1487159070.168078] I heard hello. world 1487159070.17 
[INFO] [WallTime: 1487159070.268178] I heard hello. world 1487159070.27  

.....という形で一応、動作できたっぽいです。ココに到達するまですんなりうまくいかないところもあり、試行錯誤したのでとりあえずホッとしました。