Quince@RoboCupRescue/WRS
におけるROS活用
岡田佳都（東北大学／理研AIPセンター）
小島匠太郎（東北大学）
水野直希（東北大学）

ROSCon JP 20181

はじめにROSCon JP 20182

自己紹介: 岡田 佳都
 東北大学 大学院情報科学研究科 田所研 助教
 理研 革新知能統合研究センター 客員研究員
普段の研究:

災害対応ロボットの操縦支援(Okada, 2010)

usr:

球殻ドローンによるインフラ点検(左: 水谷, 2013; 右: 坂井, 2018)

yoshito-okada & org: yoshito-n-students
ROSCon JP 20183

RoboCupRescue / WRS RoboCupRescue:
災害対応性能を競うロボコン (2006～/毎年開催)
 World Robot Summit (プラント災害予防チャレンジ):プラントにおける日常点検性能/災害対応性能を競うロボコン(2018.10 プレ大会，2020 本大会)

要求性能の例 (共通):

不整地走行 (ガレキや階段想定)物体操作 (補修やバルブ操作想定)
ROSCon JP 2018

物体検出 & 地図生成4

チーム紹介: Quix
 東北大田所研の学生を中心にしたチーム
 2015年からROSを段階的に導入し，開発や統合を加速

2015

2017

2018

 ROSは操縦卓のみ
 ROSをロボットにも導入 関節角指令の 2015版アームの5自由度アーム (非ROS) 引き継ぎに失敗

ROSCon JP 2018

 2017から多くの引き継ぎ
 手先位置司令の6自由度アーム

5QuinceにおけるROS活用（自家製パッケージ紹介）: githubで公開されているパッケージ(発表者製はorganization省略): ROS標準パッケージ
ROSCon JP 20186

Quinceのハード構成
アーム 全長1.2m
 7自由度 (グリッパ1自由度含)

外界センサ
 RGBカメラ (前・後・肘・手先) x4
 測域センサ (地図生成用) x1
 熱画像カメラ・CO2センサ・マイク

内界センサ IMU x1
 エンコーダ・電流センサ (各モータ)
 電圧センサ (バッテリ)クローラ
 クローラベルト x2系統 (左右) サブクローラ (取付軸に1自由度) x4

 W450 x L700 x H500mm(アーム，サブクローラを畳んだ状態)

ROSCon JP 2018

 40kg7

クローラ: Maxon Motors & EPOS4
 クローラベルトとサブクローラ取付軸はMaxon製モータ(各100W)とドライバ(EPOS4)で駆動
 クローラベルトは速度制御，サブクローラ角は位置制御

eposx_hardware (forked from RIVeR-Lab/epos_hardware) 位置/速度/電流制御のオンライン切替
 ros_control準拠
 制御目標値の上下限のオンライン変更
 EPOS/EPOS2/EPOS4(
dynamic_joint_limits_interface) USB/RS242/CANOpen
ROSCon JP 20188

アーム: 6関節を逆運動学で操縦ハードウェア Dynamixel Pro
 MX-106 RGBカメラx3x3（＋グリッパに1個）
x3※RoboCup用にCO2センサ，スピーカも搭載

ソフトウェア MoveIt!

 逆運動学を用いた目標手先位置への軌道計画

 mofpy（自家製） Joy → Twistやサービス等，何にでも変換 twist_jogger（自家製）ROSCon JP 2018

 Twist → 各ジョイント角度指令に変換

resibots/dynamixel_control_hw
 ros_control準拠のDynamixelドライバ

9

アーム in Action

ジョイスティックによる定型姿勢＋手先位置指令

Gazeboを使ったアームのシミュレータ

ROSCon JP 201810

IMU: Bosch BNO055 USB Stick
採用理由 USB接続型で挿すだけで使える
 USBメモリサイズ
 姿勢を内部計算 (100Hz)
 地磁気使用/不使用を選択可 ¥3,500 @Digikey
注意点 ファームはProprietary 評価用製品
bno055_usb_stick Pub: sensor_msgs/IMU, MagneticField, Temperaturegeometry_msgs/Pose, TF
 後挿し・再接続可
ROSCon JP 201811

カメラ: 任意視点に再投影① 実カメラの画像を地形上に投影

開発動機
 ロボット中心線上に遠隔走行用のカメラを置きたいがアームがあり無理 アラウンドビュー映像が欲しいが高い位置にカメラを置きたくない 全天球カメラの映像を常にアームの手先が中心になるように切り出したい…

② 別視点の仮想カメラの画像として再投影

image_reprojection
 カメラモデル*: Pinhole, Fisheye
 地形モデル*: 平面，球，DEM, Mesh
* プラグインで追加可能

 カメラ視点や地形原点はtfベース

ROSCon JP 201812

ラベル検出: Affine-SIFT (1/2)
課題: SIFT, SURF等の代表的な特徴はアフィン不変ではない

画像特徴による一般的なラベル検出(〇〇不変=〇〇が変化しても特徴が不変)① 参照画像から特徴を抽出=③ 特徴を比較=スケール不変

=回転不変

照明不変

しかし …

≠

② 対象画像から特徴を抽出

ROSCon JP 201813

ラベル検出: Affine-SIFT (2/2)
Affine-SIFT (Yu & Morel, 2011)label_detection
 Affine-SIFT実装…

① 参照画像を様々にアフィン変換し特徴を抽出③ 特徴を比較② 対象画像を様々にアフィン変換し特徴を抽出…
ROSCon JP 2018(affine_invariant_features)を用いたラベル検出

 SURF, BRISK, AKAZEも利用可能 追加コード記述なしで参照特徴の抽出や検出対象の変更が可能

14

ROSを用いたシステム統合のポイント４点

ROSCon JP 201815

ターミナルマルチプレクサを使用した起動シーケンス
目的 エラー発生時に問題が生じた機能のみ再起動できる構成

Quince操縦用ターミナル走行制御

方法
 機能ごとにターミナルを分割してlaunchを実行 スクリプトによりターミナル分割と実行を自動化

カメラ・センサ
アーム制御
rviz

ROSCon JP 2018効果
 どの機能にエラーが生じたかひと目で分かる 機能ごとの再起動が容易
16

複数マシンにまたがるシステムの構築:
システム時刻の同期
Quinceのシステム時刻同期
外部NTPサーバ

操縦PC:
NTPサーバ

情報共有のため時刻同期が必須
 マシン同士で時計がずれるとtfなどが誤動作
Chrony*を用いた時刻同期
 NTPクライアント兼サーバ
 システム起動後，自動で時刻を同期（ネット接続時）* wiki.ros.org/ROS/NetworkSetup

稼働中
常に同期
ロボット: NTPクライアント

サーバとなるマシン
 より高い頻度で外部ネットワークに接続するマシンをサーバとする 実時刻により近い時計に同期するため
ROSCon JP 201817

複数マシンにまたがるシステムの構築:
roscore・ノードを実行するマシンの決め方
coscoreを実行するマシンの決め方 システムの基幹となるマシン
 または最初に起動するマシン
ノードを実行するマシンの決め方
 マシンをまたいで共有されるトピックが最小限となるようノードを配置
 処理にリアルタイム性を要するノードは情報元に近いマシンで起動
ex. 姿勢計算ノードはIMUが接続されているマシンで実行

ROSCon JP 201818

コンフリクトの解消“Topic_C”という名前が重複
nodeA1
Topic_C

nodeB1

nodeA2
nodeB2

ネームスペースの導入
Namespace_A
nodeA1

Topic_C

nodeA2

Topic_C

nodeB2Namespace_B
nodeB1

複雑なシステムにおける名前のコンフリクト
 ノード・トピックなどの名前がかぶり誤動作の原因となる
 特に複数人が開発に携わるときに起こりやすい解決方法 機能または場所ごとにネームスペースを分ける 要素開発時にabsoluteなトピック名を使用せず統合時にlaunchファイルでネームスペース指定
 tfに関しても~tf_prefixで座標名にネームスペースを付加できる
ROSCon JP 201819

おわりにROSCon JP 201820

ROSに参加しませんか？
意外と楽 一番高いのは最初の心理的ハードル
 小さなバグ報告や初歩的な質問 (する側/答える側) だけでもOK 日本語化も高需要&低難易度
 公式コミュニティ+githubで完結
メリット
 開発者や質問者との議論を通じたより深い理解 技術力アップ エンジニアとしての自己アピール
最後のデモは…
ROSCon JP 201821

pkg 一覧
Organization:

https://github.com/yoshito-n-students

IMU:

https://github.com/yoshito-n-students/bno055_usb_stick

EPOS:

https://github.com/yoshito-n-students/eposx_hardware

仮想カメラ:

https://github.com/yoshito-n-students/image_reprojection

Affine-SIFT:

https://github.com/yoshito-n-students/affine_invariant_features

ラベル検出:

https://github.com/yoshito-n-students/label_detection

サンプルlaunch & デモ:https://github.com/yoshito-n-students/rosconjp18_demo

ROSCon JP 201822

ありがとうございました！

usr:

yoshito-okada & org: yoshito-n-students
ROSCon JP 201823