SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ROSとRaspberryPiで遠隔みまもりロボットを作ろう(「Tech-Sketch」出張所/番外編)

ラズパイで動くロボット「GoPiGo」をつかって遠隔見守りロボットを作ろう(3)スマホ連携編

ROSとRaspberry Piで遠隔みまもりロボットを作ろう 第3回(「Tech-Sketch」出張所/番外編)

  • このエントリーをはてなブックマークに追加

 本連載では、Raspberry Pi(ラズベリーパイ)で動く移動ロボットキットである「GoPiGo」を使って、遠隔見守りロボットを作る手順をご紹介します。前回は、連載を通じてGoPiGoの開発に使用するROSの基礎と、新しく機能を取り込む方法を学びました。今回は、スマホを使ってGoPiGoを遠隔操作する方法を解説します。

  • このエントリーをはてなブックマークに追加

はじめに

 連載の第2回に引き続き、Raspberry Piで動作する小型ロボット「GoPiGo」を使って、遠隔見守りロボットを作っていきます。

 前回は、この連載を通じて利用するロボット用のフレームワークであるROS(Robot Operating System)の基本的な要素の説明や、新たな機能の組み込みを行いました。今回は、自宅などのローカルエリアネットワーク内で、GoPiGoをスマホで遠隔操作できるようにしたいと思います。

今回のゴール

 完成イメージは下図のようになります。GoPiGoに搭載したUSBカメラから周辺の映像を取得し、ユーザがスマホでその映像を見ながらジョイスティックでGoPiGoを操作できるようにします。

今回作成する遠隔操作画面
今回作成する遠隔操作画面

 なお、今回はローカルエリア内のみに制限されていますが、第1回の遠隔見守りロボットの概要の項でも解説した通り、最終的にクラウドを経由することで外出先など、どこにいてもロボットの遠隔操作ができるようにします。そちらは、本連載の第4回以降で詳しく解説します。

 ではさっそくはじめましょう!

今回必要なROSパッケージのインストール

 GoPiGoをスマホで遠隔操作できるようにするために、接続されているUSBカメラの画像を取得できるようにしたり、スマホ上に画像を表示できるようにしたりと、GoPiGoに新しい機能をいくつか追加していきます。それらの機能はROSにデフォルトでは入っていませんが、追加パッケージとして用意されているので、GoPiGoにそれらをインストールしましょう。

 まず、手元のPCからGoPiGoにSSH接続します。パスワードはデフォルトでubuntuです。

GoPiGoにログイン
$ ssh ubuntu@GoPiGoのIPアドレス

 ログイン後、今回の遠隔操作で必要になるパッケージをすべてインストールしましょう。

パッケージのインストール
$ sudo apt-get update
$ sudo apt-get install ros-indigo-rosbridge-suite ros-indigo-roswww ros-indigo-libuvc-camera ros-indigo-web-video-server
$ rospack profile

1. カメラ映像をブラウザで見てみる

 インストールしたパッケージの機能を1つずつ理解するために、まずは簡単な構成を作って解説していきます。ここではまず、GoPiGoに接続されたUSBカメラ映像をブラウザに表示します。

USBカメラを使う準備

 今回、USBカメラ画像の取得には、ROSのlibuvc_cameraパッケージを利用します。このパッケージは、多くのUSBカメラで使われているUSB Video Class(UVC)規格のROSインターフェースです。このパッケージにより、取得した画像をROSで扱うことができるようになります。

 このノードの実行時にデバイスの読み込み・書き込みのパーミッションがないというエラーが出ます。chmodコマンドで毎回パーミッションを与えてあげるのは面倒なので、利用するUSBカメラのデバイス情報をカーネルに永続的に教えてパーミッション変更なしでカメラにアクセスできるようにしましょう。

 まず、USBカメラをGoPiGoに接続し、USB接続された機器の情報を表示します。

USBデバイス一覧表示
$ lsusb

 この中で、自身がお使いのUSBカメラを探し、ID以下の数値(ベンダID:プロダクトID)をメモしておきます。

 例えば、著者が使っているUSBカメラ(Logicool HD Webcam C270)は次のようにベンダIDが046d、プロダクトIDが0825と表示されました。

著者の実行結果
$ lsusb
Bus 001 Device 007: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 005: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
~以下略~

 次に、新規に/etc/udev/rules.d/99-uvc.rulesというファイルを作り、下記をコピペしてください。ここで、ATTRS{idVendor}とATTRS{idProduct}以下に、先ほどメモしたベンダIDとプロダクトIDを入力してください。例えば筆者のUSBカメラの場合は下記のようになります。

SUBSYSTEMS=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0825", MODE="0666"

 保存後、USBカメラをいったん抜いて差し直してください。これで、パーミッション変更なしでカメラにアクセスできるようになりました。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
実行

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ROSとRaspberryPiで遠隔みまもりロボットを作ろう(「Tech-Sketch」出張所/番外編)連載記事一覧

もっと読む

この記事の著者

古賀 勇多(TIS株式会社)(コガ ユウタ)

TIS株式会社 AIサービス事業部AIサービス企画開発部所属。2015年入社後、自律移動ロボットの研究開発に従事。ロボット・クラウド・機械学習を活用した、人と共生できるロボットシステムの開発を目標にしている。最近興味がある技術は電子工作や3D CAD、DIY。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10068 2017/04/13 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング