mathjax

2018年3月14日水曜日

「ROSではじめるロボットプログラミング」を読み進める。

「ROSではじめるロボットプログラミング」を読み始めた。

2015年6月25日に初版が出ている。3年も前の本なので少し事情が変わっている。今に置き換えつつ読み進めることとした。

第3章 「ROS」のインストール

Ubuntu14.04をインストールすることを推奨されているが、ここはUbuntu16.04で行うこととした。またインストールするROSはindigoではなくkineticとした。(lunarでも良かったのか。)

http://wiki.ros.org/kinetic/Installation/Ubuntu

こちらを参照して、別段問題もなくインストールは完了した。

第6章 「ROS」で「Hello World」 

python hello_world.pyを実行する際に2つばかりエラーに遭遇した。

ModuleNotFoundError: No module named 'rospkg'
$ pip install rospy
ModuleNotFoundError: No module named 'catkin_pkg'
$ pip install catkin_pkg
rospkg, catkin_pkgが入っていないために起きているエラーだったのでこれらをインストールして無事にHello Worldが表示された。

第7章 「ROS」のプログラムを書く

p43

$echo $ROS_PACKAGE_PATH
/home/username/catkin_ws/src:/opt/ros/kinetic/share
となった。:/opt/ros/indigo/stacksに相当する部分が無いがこれで大丈夫なのだろうか。


p44
後述する理由により、
~/catkin_ws/src$ catkin_create_pkg ros_start rospy roscpp std_msgs

~/catkin_ws/src$ catkin_create_pkg ros_start rospy roscpp std_msgs rqt_gui rqt_gui_py
としておくとよい。


p54
新しいターミナルで下記を実行しようとしてエラーが出た。
~/catkin_ws/src/ros_start/scripts$ rosrun ros_start listener.py
[rospack] Error: package 'ros_start' not found
はてと思ったが、
$ source ~/catkin_ws/devel/setup.bash
を実行することで、rosrun〜を実行できるようになった。「~/.bashrc」に書いた設定は再起動をするまでは自動で適用されないために起きたのだろう。

$ rosrun ros_start listener.
[INFO] [1520768038.194115]: I heard hello world 1520768038.1924894
[INFO] [1520768038.294062]: I heard hello world 1520768038.2925231
[INFO] [1520768038.394050]: I heard hello world 1520768038.3925247

少し表記が異なるけれど、使っているバージョンの違いなどからくるものと思われる。

そしてrqt_consoleが上がらない。rqt_consoleのtutorialにある事前にインストールされているべきパッケージのうち、ros-kinetic-rqtが入っていなかったので、これを入れた。
$ apt-get install ros-kinetic-rqt
しかし、まだエラーが起きる。 rqt_guiが無いとかなんとか。検索してみるとrqt_gui rqt_gui_pyをcatkin_create_pkgの時に書くっぽい。いや、それはp44ここはp54どうやって戻せばいいのか。
 
~/catkin_ws/src$ catkin_create_pkg ros_start rospy roscpp std_msgs rqt_gui rqt_gui_py
を実行してみたところ、package.xmlが既に存在していると怒られた。仕方なく、ros_startの中の
package.xml
CMakeLists.txt
/include/ros_start
/src
を削除して再度実行。catkin_create_pkgは通った。恐らくcatkin_makeをもう一度しなければならないので、
$ cd ~/catkin_ws
$ catkin_make
をしたところ、
~/catkin_ws$ catkin_make
Traceback (most recent call last):
  File "/opt/ros/kinetic/bin/catkin_make", line 12, in <module>
    from catkin.init_workspace import init_workspace
ImportError: No module named catkin.init_workspace
いや、困るんだが。
~/catkin_ws$ source /opt/ros/kinetic/setup.bash
~/catkin_ws$ catkin_make 
で通り、
~/catkin_ws$ source ~/catkin_ws/devel/setup.bash
roscoreを上げた後、rqt_consoleが上がるようになった。


この後、色々していたら、ROSはPython3.xだとうまく動かないのでは?という状況に遭遇し、環境をPython2.7に直して、ROSのインストールからやり直し始めた。
$ sudo apt-get install ros-kinetic-desktop-full
でエラー。
Errors were encountered while processing:
 update-notifier-common
 flashplugin-installer
 update-notifier
ということでこれらをアンインストール。
$ sudo apt remove update-notifier-common
をした後、同様にアンインストールのコマンドを入れたが他2つはインストールされていないというメッセージになった。
$ sudo apt install --reinstall python-debian python3-debian python-chardet python3-chardet
をした後、
$ sudo apt-get --reinstall install ros-kinetic-desktop-full
が通った。

スクリプトを動かすために、
ModuleNotFoundError: No module named 'rospkg'
$ pip install rospy
ModuleNotFoundError: No module named 'catkin_pkg'
$ pip install catkin_pkg
なども再度遭遇。


第8章 「シュミレータ」上の「ロボット」を動かす

p62
シミュレータを動かそうとすると
ImportError: No module named defusedxml.xmlrpc
のエラーに遭遇し、
$ sudo apt-get install python-defusedxml
$ pip install defusedxml
で回避。起動はするが、エラーメッセージは出ていたので、
$ pip install numpy
も入れた。

2 件のコメント:

  1. とても助かりました.
    この手の本は,アップデートに対応が難しくて,大変ですね.

    返信削除
  2. お役に立ったようで幸いです。

    返信削除