3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【ROSではじめるロボットプログラミング:小倉崇氏著】を【docker-ros-desktop-vnc:Tiryoh氏】上で学ぶ

Posted at

1.はじめた理由

・"ROSjp"で初心者には『ROSではじめるロボットプログラミング(小倉崇氏著)』がお勧めとのことだったので、トライしてみました。
・ただ、Kineticを今のUbuntu上に直に入れるのは躊躇があったので、評判の高いTiryoh氏の【docker-ros-desktop-vnc】を使ってみました。

2.結果

・『14「ジョイスティック」による操縦プログラム』『19−4「サーボ・モータ」を使う』以外は全て実行できました
 (共に手頃な機材が無かった為です。プログラムの確認自体ができていません)
・進めていく中で、躓いた点を順にリストアップしていきます

3.準備

・本自体
 ・本を図書館から借りましょう。中古品の入手は金銭的に無謀です
 ・本の正誤表をチェックして、修正します。下記のリンク先を参照してください。
 ・プログラムの修正も何点かあります。上手く動かなかった時も、下記リンク先を参照ください
[ OTL/ros_book_programs](https://github.com/OTL/ros_book_programs/tree/master/ros_start)

・Docker
 ・Dockerが動く環境を準備してください
 ・GPUは使わないので、気にしなくても問題ないです。CPUは第9世代のi5で十分動きます
 ・Tiryohさんの【docker-ros-desktop-vnc】から必要なイメージファイルを落としてきます
 docker-ros-desktop-vnc
 ・この記事は、depricatedになっている【Kinetic】イメージを使用しています。使った理由は以下の通りです
  ・始めた当初は「depricated」では無かった
  ・本のROSバージョンは【Indigo】なので、なるべく近い【Kinetic】を選んだ

 ・何故かインストールできないときは、まず以下のコマンドを叩いてから再トライする

$ sudo apt-get update

 ・以下、本の中で出てくる【Indigo】は、すべて【Kinetic】に読み替えてください

4.Docker Container の作成と注意点

・Tiryoh氏のページにもあるように

$ docker run -p 6080:80 --shm-size=512m tiryoh/ros-desktop-vnc:kinetic

とコマンドを打てばContainerが完成しますが、後半、このContainerが使えなくなります。
・それは、
 【17:「ROS」を使って「分散画像処理」】:USBカメラの接続
 【19−3:「rossserial」でマイコンをつなぐ】;USBSerialとしてのArduinoへの接続
 です
・共にDocker Containerにポートを開ける必要があるので、Containerの再作成が必要です

USBカメラの場合、USBカメラのポート(今回は、【/dev/video0】)を調べて、以下のコマンドで再作成しました

$ docker run -p 6080:80 --shm-size=512m --device /dev/video0:/dev/video0:mwr tiryoh/ros-desktop-vnc:kinetic

但し、このContainerは、USBカメラが繋がった状態でないと起動しません。

Arduino(USBSerial)は、【dev/ttyACM0】と認識され上手くContainerが生成できなかったので、なんでもありの【--privileged】オプションをつけて走らせました

$ docker run -p 6080:80 --shm-size=512m --privileged tiryoh/ros-desktop-vnc:kinetic

・この場合、下図のコマンドでループに入ってしまいましたが、【Ctrl+C】で無理矢理に抜けるとContainerが生成され、Docker上から【dev/ttyACM0】もアクセスできたので、結果オーライとしています。
Docker_run_全ポート.png
Containerを再作成すると、本に沿って作ったROS環境を再構築する必要があります。(私は結局、4回作り直しています(笑))
・どの形のContainerを作るかは最初に決めておいたほうが楽です。ただ、再構築する事自体も勉強になりました。

5.第1〜2章/第4〜7章/第9〜12章/第15〜16章/第20章

・書籍に沿って進めてください

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

・『3.3:「ROS」をインストールする』
 ・『ROSをインストールする』箇所は飛ばしてください。既にインストール済みです
 ・『rosdep』のインストールからは、書籍に沿って進めてください

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

・『8.1:「シミュレータ」の「インストール」と実行』
 ・【Kobuki】のインストールが上手く行きません。以下のページを参考にして【turtleBot】で代用します
 ・【turtleBot】自体、13章でインストールするので、無駄にはなりません
ROS-kineticでturtlebot gazeboを動かす

$ sudo apt-get update
$ sudo apt-get install ros-kinetic-turtlebot-gazebo
$ sudo apt-get install ros-kinetic-turtlebot ros-kinetic-turtlebot-apps ros-kinetic-turtlebot-interactions ros-kinetic-turtlebot-simulator ros-kinetic-kobuki-ftdi ros-kinetic-ar-track-alvar-msgs
$ . /opt/ros/kinetic/setup.bash

・【turtleBot】の実行(初回の起動時は結構な時間がかかります。)

$ roslaunch turtlebot_gazebo turtlebot_world.launch

・それ以降は、『8.6:「PR2」を動かす』まで書籍に沿って進めてください

・『8.6:「PR2」を動かす』
 ・『PR2』のインストールは問題ありませんが、最初にインストールされている【gazebo V7.0.0】では正しく動作しません
 ・以下のページを参考に【gazebo】のアップデートを行います
ROS講座67 車輪ロボットを作る7

$ sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
$ cd /tmp/
$ wget http://packages.osrfoundation.org/gazebo.key
$ sudo apt-key add gazebo.key
$ sudo apt-get update
$ sudo apt-get install gazebo7

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo reboot

・これで、正しく『PR2』上でも「vel_bumper.py」が動作します

8.第13章:「ROS」のGUI

・『13.1:rviz』
 ・「Turtlebot」は既にインストール済みですので、再インストールは不要です
 ・『P124:/odem』の設定時に画面に色付きの柱が出ている場合は、【Convariance】のチェックを外す
 ・それ以外は、書籍に沿って進めてください

9.第14章:「ジョイスティック」でロボット操作

・手頃なジョイスティックが無かったので、確認していません

10.第17章:「ROS」を使って「分散画像処理」

・Docker Container自体は、『3.準備』を参照ください
・「USBカメラ」の「ROSドライバ」のインストール方法を下記を参考に変更します
ROS KineticでのUSBカメラ接続とキャリブレーションまで

$ sudo apt-get install ros-kinetic-uvc-camera

 ・同時にImage関連のパッケージもインストールする

$ sudo apt-get install ros-kinetic-image-*
$ sudo apt-get install ros-kinetic-image-view

 ・カメラのパーミッションを変更する(Containerの再起動毎に必要/何故か『777』じゃないと動かない)

$ sudo chmod 777 /dev/video0

 ・roscoreを別の端末で立ち上げて、以下のコマンドで確認する

$ rosrun uvc_camera uvc_camera_node
$ rosrun image_view image_view image:=/image_raw(P154の1行目のコマンドから「/usv-cam」が無い)

 ・それ以外は、書籍に沿って進めてください

11.第18章:「tf」を使って「座標変換」

・「18.4:「tf」を「rviz」で確認する
 ・図70で「Robot」が表示されない場合は、【RobotModel】をON、表示自体が無いときは『Add』する
 ・図71で「TF」が表示されていない場合は、「TF」を『Add』する

12.第19章:自分の「ロボット」を「ROS」で動かす

・19.3.「rosserial」でマイコンとつなぐ
 ・Docker Container自体は、『3.準備』を参照ください
 ・P184 の以下のコマンドは、最後の【.】まで入力すること

$ rosrun rosserial_arduino make_libraries.py .

 ・ライブラリの中に「ros_lib」が無ければ、Addする

 ・Arduinoとつなぐためにシリアルポートの書き換えが必要です。以下のコマンドでarduinoからSerialポートが見えるようになります
  (ポートが【/dev/ttyACM0】の場合)
【Ubuntu】arduinoに書き込もうとしたら怒られた

$ sudo usermod -a -G dialout <username>
$ sudo chmod a+rw /dev/ttyACM0

 ・それ以外は、書籍に沿って進めてください

以上

初版:2021年9月5日

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?