ROSでserviceによる通信
1. ROSパッケージを作る
cd ~/catkin_ws
catkin_create_pkg test_service rospy
新しくプロジェクトを作成した直後の~/catkin_ws/test_serviceのディレクトリ構成は以下のようなファイル階層だと思われる。
.
├── CMakeLists.txt
├── package.xml
└── src
2. サービスを定義する
新しいサービスを作成するには3ステップある。
- サービスコールの入出力のためのサービス定義ファイルの作成
- ビルドシステム1の変更
- ビルドシステム2の変更
1.サービス定義ファイルの作成
gedit ~/catkin_ws/src/test_service/srv/WordCount.srv
以下の文字列を貼り付ける
string words
---
uint32 count
続きを読む
ROSの開発環境構築からpub/sub通信まで
0. ubuntuの起動とROSの環境構築
開発環境であるubuntu16.04を用意して起動する。
参考:https://kledgeb.blogspot.jp/2016/04/ubuntu-1604-1-ubuntu-1604ubuntuubuntu.html
次にROS KineticのUbuntu16.04 へのインストールを行う。
端末を立ち上げて以下のコマンドを入力する。
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu \
$(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 \
--recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full python-rosinstall
sudo rosdep init
rosdep update
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
1. ROSのワークスペースを作る
端末を立ち上げて以下のコマンドを入力する。
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
ここで一度makeしておく。
ROSではcatkin_makeというコマンドを使ってワークスペースのプロジェクトをビルドする。
また、初回でこのコマンドを行えばワークスペースに必要なファイルやディレクトリが生成される。
catkin_make
catkin_makeしたら以下のようなファイル階層になっていると思われる。
ros_ws
|--build
|--devel
|--src
- build: ビルドに関する設定やmakeのlogのファイルが入っている。
- devel: 実行ファイルやmakeによって生成されたものが入っている。
- src: ユーザがソースコードを保存する場所。
これでROSのワークスペースが作成できた
続きを読むROSのプロセス通信の概要
ROSにおけるプロセス間通信の重要性
ROSで推薦されている開発スタイルは以下の様なものである。
- とにかくプロセス(ROSではこれをNodeと呼ぶ)を立ち上げまくる
- プロセス間のデータはネットワーク経由で通信する
例えば、上の図のようなシステム構成を考えてみる。
これは、ステレオ視によって外部の三次元の環境を認識し、それを回避するような動作計画を行うロボットシステムである。
このようなシステムをROSで実装する場合、角丸で囲われているものがそれぞれ独立したプロセスとして実行される。
そして、矢印で繋がれた部分がプロセス間通信である。
このようなスタイルで開発されたシステムにおける利点は、
- 特に何も考えなくてもマルチコアの恩恵を受けられる
- システムの一部(あるプロセス)がバグで死んでも、システム全体は死なない
- 複数マシンでの分散システムに自然と拡張できる
- コードの再利用性が高くなる
といったものがあげられる。
続きを読むROSのシステム構成図
センサやアクチュエータを用いる場合のROSのシステム構成図
センサやアクチュエータとPC(ROS)のシステム構成図を以下に示す。
脳みそとなる部分にはPCを用いる。PCはデスクトップ型やノート型、Raspberry Piシリーズなどubuntuの動くものであれば良い。
センサ類は基本的にusbでPCと接続する。組み込み用途のセンサなどusbでデータを送れないセンサは、一旦電子基板で処理してからPCにusbなどで送る。
アクチュエータ類もPCから直接は動かせないので、一度ドライバなどの電子基板を経由して駆動させる。
PCは得られたセンサ類の情報から次に駆動させるアクチュエータの計算を行う。
ARC2017に出場しROSを用いたチームのシステム構成図を示す。
複数のカメラ、役割分担された複数のPCを用いているが、基本的な構成は同じである。
続きを読むROSの概要と事例とメリットについて
ROSとは
ROSとは Robot Operating System の略で、ロボット開発のための様々なソフトウェアの集合のこと。
ROSは OS と付いているが、いわゆるLinuxやWindowsといったOSではない。
基本的には、以下の総称と考えれば良い。
雑に言えば誰でも利用可能なロボット開発ツールの一つである。
ROSを用いて開発されたロボットの事例
Amazon Roboticsの物流補助ロボット
自律移動ロボットによるAmazon物流センターの自動化・省人化を目指す。Sonyのaibo
2017年に販売された家庭向けロボットaiboには多数のセンサとアクチュエータが搭載されており、それらの処理はROSで行われる。
rosのpublisherで複数のメッセージを配信する
概要
オライリーのros本の3章トピック通信までを読んだので、理解の定着化のためにも rosで動く電卓ツールを作ってみた
プログラミングROS ―Pythonによるロボットアプリケーション開発 (オライリー・ジャパン)
- 作者: Morgan Quigley,Brian Gerkey,William D. Smart,河田卓志,松田晃一,福地正樹,由谷哲夫
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/12/13
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
環境
ubuntu 16.04
続きを読む