LoginSignup
11
11

More than 5 years have passed since last update.

NAOqiとROSの比較

Posted at

正確にはNAOqi Frameworkと狭義のROSの比較になります。
ライブラリや生態系では圧倒的にROSが巨大だと思います。

多言語化

PythonとC++をベースとするところが似ています。

NAOqi ROS
メイン言語 Python/C++ C++/Python/Lisp
Server (呼び出される側) △ C++のみ ◯ C++/Python/Lisp/Java/matlab/...
Client (呼び出し側) ◯ 上記 + .NET/Java/matlab/... ◯ 上記 + Javascript/..

NAOqiでは関数を外部から呼び出す側(クライアント)は豊富に用意されていますが、呼び出される側(サーバー)はC++のみのサポートとなっています。

分散環境

NAOqi ROS
呼び出し方式 RPC PubSub(Topic) / RPC(Service)
ローカル呼び出し △ (Nodelet)
遠隔通信方式 △ (SOAP) ◯ (TCP)

ROSは接続だけXMLRPCで遅いですが、その後の通信は生TCPなので、
結構早いです。
一方でNAOqiは遠隔呼び出しがすべてSOAPなので、基本的に遅いです。

非同期呼び出し

NAOqi ROS
◯ (post) △ (Actionlib)

ROSではPubSubをうまく組み合わせたActionlibという仕組みを使って非同期呼び出しを行います。結構面倒です。
それに比べてNAOqiはmodule.doSomething()をmodule.post.doSomething()とするだけで非同期呼び出しになるので、非常に簡単です。

総括

NAOqiフレームワークはシナリオ記述のために非常に便利であると思います。ROSはPubSubを基本とするので、シーケンスで何かを書くのが非常にやりづらいです。(そのため、部品としての独立性が高まると思います。)
ROSは汎用的な部品のためのミドルウェア、NAOqiはロボットを動かすためのSDKという側面が強いですね。

間違いとかあると思いますので、twitterやコメントでご指摘いただけるとうれしいです。

11
11
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
11
11