ET West 2015 JASAセミナー【Session： JASA-2】

OSSライセンスとロボット⽤OSS
2015年6⽉11⽇
OSS活⽤WG/技術本部副本部⻑
⽵岡尚三 (株)アックスl© Japan Embedded Systems Technology Association 2015

今、OSS(オープンソース・ソフトウェア)なのか?

l© Japan Embedded Systems Technology Association 20152

⼤⼈のOSS使⽤は、すでに⼗数年の歴史あり
1980年代中,後期〜・Ciscoは、BSD UNIXベースのルータ
1990年代末期〜
・Linuxが、家電各社(SONY,パナソニック,シャープなど)にて採用
・半導体企業も独自CPUに、Linuxを移植
ナウ・Android, Linux, BSDが無ければ、IT機器を作るのが大変※JASA会員企業 いわく:
お客様の指定で、OSS採用を行わねばならない!
これから・ロボット用 OSSが、続々と出現中
3

OSSでも、巨⼤ソフトウェア・スタック

OS(Linux, BSD, OpenSolaris)
インターネット接続
Windowシステム(窓、描画管理)
⽂字レンダリング3Dグラフィックス
仮名漢字変換ブラウザ、メーラマルチメディア(⾳楽、動画)の記録/再⽣プログラミング⾔語 Ruby,Perl,PHP…
オフィススイート4

蓬田宏樹、他著「Androidの野望」日経エレクトロニクス 2007年
12月17日号 p.47-69 より引用

5

OSSの本当の利点

「無料だから嬉しい」とか⾔ってると、負ける特定企業のOSとは違い、ソースがあるので理解し、独⾃の改良が可能デファクト・スタンダードがOSSなら、特定ベンダに囲い込まれない特定のソフトウェアのリリース(バージョンアップ)に引っ張られない・独⾃に品質を上げたソフトウェアを、⾃由に維持できる
・※⽇本の⼀部の分野に、アレな発注主も居るようだが…

6

OSSって⾯倒くさい !?
ライセンス問題
・ソースコード公開義務(!?)—誤解が多い品質問題

・適当に作られた無料のソフトウェアの品質は?

—どこの誰だか、知らない⼈が作ったものでしょ…
—タダのものがそんなに良ければ、プロは商売あがったりだよタダのものが、かなり良い、ということは、⾮常に頻繁にある・品質の押さえ⽅は、⼤事

OSS共通の問題をみんなで考えよう
・→ JASAOSS活⽤委員会
7

OSSのせいで、仕事が減る?!
これまで、受託して,仕様を起こし、⼀品づつ作っていたlライブラリ/モジュール(サブルーチン)を作って販売していた
しかし、現在、lJPEG デコード・ルーチンの開発を委託する顧客がいるだろうか?
顧客が、OSS前提で仕様を決めている
lサービス主導の時代
lWindows+ブラウザで、できていることは、できて欲しい高度なロボットを、すぐに作りたいOSSを活用する世界をみんなで考えよう
・→ JASAOSS活用委員会
8代表的なOSSライセンスl© Japan Embedded Systems Technology Association 20159

代表的なライセンス
GPL
BSDライセンス
・MITライセンス

Apacheライセンス
Mozilla publicライセンス(MPL)

10

GPL
GPL
・ソースコードは、そのバイナリを持っている人には、公開されるべき。という思想・改変したソースコードも、公開されなければならない—独自に改良したコードも公開しなければならない—(組み込みの世界では、厳しいと言えるだろう)
・GPLのソフトウェアにリンクしたソフトウェアのソースコードも、公開しなければならない—独自に作ったソフトウェアも、GPLソフトウェアにリンクしたら、自動的に公開義務が生ずる—(極めて厳しい、と言えるだろう)
LGPL
・ライブラリのために作られたライセンス
・LGPLライブラリは、ダイナミック・リンクであれば、リンクを行っても、他のソフトウェアに、GPL (LGPL)が伝播することは無い
・小さな組み込みシステムでは、ダイナミック・リンクが現実的ではないかも・→ 結局、小規模 組み込みシステムでは厳しい、と言えるかもGPL v3問題
・ソースコードを寄付した人が持っている特許が、そのソースコードに含まれていた場合、当該 特許を無償で無制限に許諾しなけ`ればならない
・大企業の多くが、GPL v3のソフトウェアの開発には関わっていない—Linuxは、GPLv2 維持宣言をしている(2014年秋 現在)

11GPL:よくある誤謬
ソースはインターネットで配布しなければならない・嘘ですソースを誰にでも上げなければいけない
・嘘です・バイナリを持っている⼈にだけ、ソース⼊⼿の権利があります誰とライセンス契約をすればいいのか・する必要はありません
GPL違反をするとストールマンに訴えられる
・嘘です・⽇本では、プログラムの著作権者しか訴える権利がありません
・ストールマンが怒る可能性はありますが、それには法的な意味はありません

12

MPL
Mozilla publicライセンス(MPL)
・MPLのソースコードは、MPLとして公開する(GPLへの移⾏は可能)・改変しても構わない。ただし、特許を含むコードは改変不可
・他のモジュール,ファイルは、別なライセンスでも構わない—独⾃に作ったモジュールの公開義務は⽣じない

CDDL・旧Sunが、NetBeans IDEやOpen Solarisで採⽤していた・MPLに⾮常に近い。
・ソフトウェアの開発者の規定が明確
13

BSDに近いBSDライセンス
・MITライセンスは、BSDと同じ・何をしても、ソースコードの開示義務は無い
・古いBSDライセンスは「宣伝条項」があったが…
—宣伝条項: すべての広告にライセンス表示を入れる
・現在のBSDライセンスは、「宣伝条項」は無い
Apacheライセンス
・Apache Licenseのコードが使われていることを知らせる文言を入れる。という義務がある程度・何をしても、ソースコードの開示義務は無い
・ライセンスを変更してもよい・ライセンスされたファイルに元々ある著作権と特許権の記述はそのまま保持
・Apache Licenseのコード中に特許を含んでいる場合、特許を無償で無限に許諾しなければならない

14

ライセンスの知識は必要
正しい知識があれば、問題は出ない・GPLであっても、ソフトウェア作成者は、・みんなに使って欲しいと考えている・→ ユーザが困るようなことはしていない(はず)ズルは⽌めよう・GPLのコードの断⽚を、独⾃開発のソフトウ
ェアに混ぜると、公開義務が⽣じる—BSDライセンスのものは、ライセンス表⽰をソースコードに⼊れれば、問題無い

15

ロボット⽤OSSl© Japan Embedded Systems Technology Association 201516

ロボットもOSS時代
英語版Wikipedia「Open-source robotics」の項
http://en.wikipedia.org/wiki/Open-source_robotics

フル・ロボット・プロジェクト32個
ソフトウェアのみのプロジェクト 28 個
オープン・ハードウェア・プロジェクト:3個

17OSSロボット例 (たけおか謹製)
人間の顔を見つけたら、追尾する・顔の位置を判断して、右へ行くか、左へ行くかを決める
Linux+OpenCV+OpenEL
OpenCVは顔認識などを含む
総合的な画像処理ライブラリ
OpenELはJASAなどが推進している
ロボット用の下位の抽象化層の規格
・DCモータの制御はOpenELハードウェア
・RaspberryPi—ARM11@700MHz—512MBytesRAM
・USBカメラ・DCモータ

18

OpenCV
画像処理のミドルウェア

・Intel, Willow Garage が開発
・いろんなものが⼊っている
・極めて便利—画像処理 (Image Processing)—構造解析 (Structural Analysis)—モーション解析と物体追跡 (Motion Analysis andObject Tracking)—パターン認識 (Pattern Recognition)—カメラキャリブレーションと3次元再構成 (Camera
Calibration and 3D Reconstruction)—機械学習—ユーザインタフェース

19OpenCVによる顔認識OpenCV
・一般的画像処理
・画像認識
—学習器
—認識器
・カメラ入力部USBカメラを接続
・ロジクール QCAM-E2500, 30万画素
・Logicool 861200
・カメラ入力顔認識・学習済みデータが用意されている・簡単に使用できる・ロボットの目玉にでも「たけおか opencv raspberrypi」でググる

20

ロボット⽤OSS
ミドルウェアl© Japan Embedded Systems Technology Association 2015
21

en.Wikipedia「Open-source robotics」のOSS上位など
NXJ
・Lego NXTロボット・キット用のOSS Javaプログラミング環境
CLARAty
・JPL(ジェット推進研究所)で開発されている、Mars(火星)プログラムの一部として。
ROS (Robot Operating System)
・BSDライセンス。すでに50以上のロボットで動作
URBI・C++の分散/組み込み コンポーネント・フレームワーク
・ + 並列/イベント駆動 制御スクリプト言語
Player (robot framework)
OpenRTM-aist (robotics technology middleware)
・日本の産総研が開発※上記のいくつかは、ロボット・ミドルウェアである22

ロボット⽤ミドルウェアとは
フレームワーク
・コンポーネントをつなぐ・コンポーネントの独⽴性を⾼めさせる・オーバーヘッド無し
・存在を感じさせない
参考 http://en.wikipedia.org/wiki/Robotics_middleware

23

ROS
Robot Operationg System
http://wiki.ros.org/
ロボットのミドルウェアと、たくさんのコンポーネント
BSDライセンス
すでに50以上のロボットで動作 2007年 the Stanford Artificial Intelligence Laboratory で開発
・Stanford AI Robot STAIR project2008〜2013年 Willow Garageが中⼼に開発中2013年〜 the Open Source Robotics Foundation※参考 http://en.wikipedia.org/wiki/Robot_Operating_System24

ROS
データの流れに応じて、コンポーネントをつなぐ⾃動⾞の⾃動運転でも採⽤OpenCVも含まれている雑に⾔ってしまえば…
ロボットを作るためのソフトウェア部品の多くが含まれている

画像は下記より引⽤
http://www.ros.org/news/resources/2010/poster2color_revis.jpg

25

ROSパッケージの適⽤分野
知覚 (Perception)
物体認知 (Object Identification)
セグメンテーションと認識 (Segmentation and recognition)
顔認識 (Face recognition)
ジェスチャ認識 (Gesture recognition)
動作追跡 (Motion tracking)エゴモーション (Egomotion)
運動理解 (Motion understanding)運動からの構造 (Structure from motion (SFM))
ステレオビジョン:2台のカメラを通して、奥行き知覚・(Stereo vision: depth perception via two cameras)モーション (Motion)
移動ロボット工学 (Mobile robotics)制御 (Control)計画 (Planning)把握 (Grasping)※http://en.wikipedia.org/wiki/Robot_Operating_Systemから引用、和訳

26

ROS
データの流れに応じて、コンポーネントをつなぐ

http://www.clearpathrobotics.com/blog/how-to-guide-ros-101/ より引⽤

27

ROS
ROSエコ・システムのソフトウェアは3つのグループに分けられる・(1) ⾔語やプラットフォームから独⽴したツール—ROSベースのソフトウェアを作ったり分散させるために使⽤・(2) ROSクライアント・ライブラリ実装—roscpp, rospy, roslispなど
・(3)アプリケーションに関連するコードを含んだパッケージ—ひとつ以上のROSクライアント・ライブラリが使⽤※http://en.wikipedia.org/wiki/Robot_Operating_Sys
temから引⽤、和訳
28

RTミドルウェア
産総研などが開発しているロボット用ミドルウェア
・RTコンポーネントは、OMGにて、国際標準化
RT (Robot Technology/Robotic Technology)とは・ロボット機能要素
RTミドルウエアとは・様々な機能要素をモジュール化 (RTコンポーネント)
・RTCを、ソフトウエア的に統合するためのプラットフォーム
RTミドルウエアの目的・仕様をオープンにする・様々な実装同士が相互接続できるようにする・オープンアーキテクチャのプラットフォームを確立する
通信はCORBAベース
「OpenRTM-aist」は、RTミドルウェアの産総研による実現
・ライセンスは、LGPLおよび産総研と個別に契約するライセンスのデュアルラ
イセンス方式
画像引用元,参考 http://www.openrtm.org/openrtm/ja/node/161#toc5
http://www.openrtm.org/openrtm/ja/content/openrtm-aist-official-website

29

RTミドルウエア

http://www.openrtm.org/openrtm/ja/content/rt%E3%83%9F%E3%83%89%E3%83%AB%E3%
82%A6%E3%82%A8%E3%82%A2%E3%81%A8%E3%81%AF%EF%BC%9F-0 よりコピー30RTミドルウェア

引用元
http://www.aist.go.jp/aist_j/press_release/pr2005/pr20050224/pr20050224.html

31

RTC(RTコンポーネント) OMG標準RTM / OpenRTM-aist は・コンポーネントモデル
・そのインターフェー ス
・である「RTC」が OMG 国際標準
OMG (Object Management Group)・1989年に設立されたソフトウエア標準化団 体・CORBA (Common Object Request Broker Architecture)分散オブジェクトミド
ルウエア:
・ UML (Unified Modeling Language) ソフトウェアモデリング言語
・などを策定・管理している組織
RTCのインターフェース仕様
・OMG において, 産総研と米国ミドルウエアベンダ RTI (Real TimeInnovations) により標準化
・RTC (Robotic Technology Component) Specification (http://www.omg.org/spec/RTC/1.0/ ) として2008年4月に公式リリース
http://www.openrtm.org/openrtm/ja/content/rt%E3%83%9F%E3%83%89%E3%83%AB%
E3%82%A6%E3%82%A8%E3%82%A2%E3%81%A8%E3%81%AF%EF%BC%9F-0#toc4 より引き写し

32OpenELJASA,産総研などが推進しているフレームワーク
国際規格にするべく、OMGに提案中
RTミドルウェアなどのコンポーネントの可搬性を⾼めるハードウェアに近い層を、抽象化
OpenEL準拠で書かれたソフトウェア(RTC)は、ハードウェア・ドライバに依存せずに動作する
参考

http://jasa.or.jp/openel/Main_Page/ja#OpenEL.E3.81.AE.E6.AD.B4
33

OpenEL(RTMiddleware/ROSなど)

引用元

http://jasa.or.jp/openel/Main_Page/ja34

OpenEL

引用元 http://www.jasa.or.jp/top/activity_bulletin/bulletin041-05.html

35

OpenEL使⽤ オレオレ実例

・ライントレーサ
Multi Thread BASICインタープリタ
OS無し
OpenELでDCモータ駆動
PIC32MX250(MIPSコア@50MHz、ROM128KB,RAM32KB)
秋⽉で360円

・顔追尾ロボット
OpenCV under LinuxOpenELで DCモータ駆動
Raspi(ARM11@700MHz, 512MBメモリ)

36

「OSSライセンスとロボット用OSS 2015」
2015/06/11 発行
発行者

一般社団法人 組込みシステム技術協会
東京都中央区日本橋浜町1丁目8-12
TEL: 03(5821)7973 FAX: 03(5821)0444
URL: http://www.jasa.or.jp/

本書の著作権は一般社団法人組込みシステム技術協会(以下、JASA）が有します。
JASAの許可無く、本書の複製、再配布、譲渡、展示はできません。
また本書の改変、翻案、翻訳の権利はJASAが占有します。
その他、JASAが定めた著作権規程に準じます。

© Japan Embedded Systems Technology Association 201537