ROS概要
ミドルウェア。ubuntu, win, osx, android, 組み込み系で動く
2015年の情報で5000パッケージ。XML-RPCとTCP, UDPで接続。
代表的パッケージ
・SLAMを含むナビゲーション
・moveitでのモーションプランニング機能
・OpenCVやPointcloudLibraryなどのライブラリと密に結合した各種画像処理、点群処理、認識パッケージがあり
・gazeboによる動力学シミュレータ、rviz等の可視化ツール
・音声系は弱いかも
・対応センサやロボット、要素となるハードウェアが豊富。PLCとかもある
・状態遷移マシンsmach
・機械学習でscikit-learn、深層学習ならchainerかtensorflow
・二足歩行はロボット側のAPI
・対話処理はこれという定番はない。一応日本語対応のrospeexはあるが、試作的
point cloud libraryは、googleやトヨタなども財団に協力して、提供されているライブラリ BSDライセンス
ROS2
基本はubuntuだけCIツール(Jenkins)でテストされていたのが、 Ubuntu Xenial, OS X El Capitan as well as Windows 10までになる。
言語は、C++11だったのがC++17対応になったり、Python2だったのがPython3.5になったりする。接続がDDSになる。
ROS1.xでは、TCP,UDPを使った独自規格の通信だが、無線など通信の不安定な状況ではQoS(Quality of Service)の機能が無いので動作の保証がされない。リアルタイム通信もサポートされていない。今後採用されるDDSなら、QoSの確保とリアルタイム通信が可能。
http://design.ros2.org/articles/why_ros2.html
この辺をみると、マルチロボット、組み込みシステムとの親和性?の向上(ベアメタル(non-OS)マイコンとの通信が容易?)、リアルタイム性、通信のクオリティ保証、プロダクトのライフサイクルマネジメントを考慮した何らかのモデル管理システム?を強化するっぽいように書いてある。
ROS1のシステムとの間はブリッジを介して通信。
Navigationの技術
move_baseにふくまれる、大域的経路計画はA*とダイクストラ法。局所的動作計画はDynamicWindowApproach。
gmappingにふくまれる、地図生成は、Rao-Blackwellized Particle FilterによるGrid-based SLAM。
AMCLの自己位置推定は、アダプティブモンテカルロ法。パーティクルフィルタを用いたモンテカルロローカリゼーション。
Cf.モンテカルロ法
MoveIt!のアルゴリズム
LBKPIECEというアルゴリズムだが、RRTConnectも。
rosrubyとかrosrustとかやってる人もいる。