![見出し画像](https://assets.st-note.com/production/uploads/images/51678192/rectangle_large_type_2_fc7a5e3ae999d8c2c87cc4ab612116fd.png?width=1200)
ROSの成長秘話をジェフ・ビグスさんに聞いた【コモさんの「ロボっていいとも!」】
こんにちは、コモリでございます。
ロボティクス業界のキーパーソンの友達の輪を広げるインタビューコーナー「ロボっていいとも!」のお時間となりました。
世の中には多くの支持を集めたソフトウェアがいくつもあります。WindowsやMacOSなどは当然ですが、Unityもその中の一つに挙げられるのではないか・・・と私は思っています。
そしてロボット開発の世界でも「ROS」というオープンソースのソフトウェアは世界中で多くの人が使っており、日々改良が加えられています。
そんなROSがどのように誕生し、成長したのかを、今回のゲストはよく知っています。そして日本のROSコミュニティにもたくさん貢献されている方なので、今回はそのあたりの話を詳しく聞いてみたいと思います。
それではゲストをお招きしましょう。本日のゲスト、株式会社アールティの中川友紀子さんからのご紹介、Open Roboticsのジェフ・ビグス(Geoffrey Biggs)さんです!
ジェフ・ビグス(Geoffrey Biggs)
Open Source Robotics Corporation Inc. - Consulting Software Engineer
ジェフ:こんにちは。よろしくお願いします。
4歳でコンピュータに触れ、大学でロボット用開発言語を研究
――ジェフさんはROSコミュニティで幅広く活躍されるロボットエンジニアですが、小さい頃からロボットなどに触れていたんですか?
最初はコンピュータを触るところからですね。4歳の頃にコモドール64を買い与えられて、その後プログラミングを始めて、10歳の頃にはデータベースプログラムを作っていました。
――どんなデータベースでしたか?
さすがにそこまで複雑なものではありませんでした。扱えるデータはテキストだけで。小さい頃はSF小説などが好きで、それらを収集・整理するためにデータベースプログラムを開発しました。
――ロボットとの接点はいつ頃からですか?
大学でもプログラミングを学ぶ道に進み、3年生の頃にロボットを制作するプロジェクトに参加したことがキッカケですね。
そこでの経験がすごく楽しかったので、その後研究室に入ってインターンとしてロボットソフトウェア開発に本格的に取り組みました。研究室では大学院生と一緒に研究を進めました。そこでの経験で、ロボットの研究とはどういうことか?などが分かり始めてきました。
――その当時はどんなロボットを開発していたんですか?
今から思えばすごく単純なもので、サーボが2つだけ付いたペンギンみたいに歩くロボットでした。片方に傾いて一歩進んで、もう片方に傾いてさらに一歩進む・・・みたいな感じですね。でも、その傾きのタイミングをずらすことで、向きを変えて歩くことができるようにしていました。搭載していた「68HC11」という8ビットマイコンでサーボの位置などをミリ秒で計算する・・・という感じでした。
あと、そのロボットの頭部にはカメラも付けていて、カメラ映像から位置を計算してあちこち歩き回れるようにしました。今っぽく言うなら、コンピュータビジョンで位置を把握する・・・という感じ。カメラはたしか、三菱の「M16C」を搭載していたはずです。
そして、大学卒業後に一度は就職したのですが、3ヶ月後に大学院に入学できるようになり、再び大学キャンパスへ戻って博士課程の勉強を始めました。そこでもロボット関連に関わって、専門はロボットソフトウェアを開発するプログラミング言語の研究でした。
――言語開発とのことですが、どんなことができる言語だったんですか?
Pythonベースでロボット向けに特殊なセマンティクスとシンタックスを追加し、ロボットソフトウェアを開発する時に発生する独特な概念をこの言語で書けるようにしました。
例を挙げれば、ロボットは実世界でランダムに発生するイベントに常に対処しなければならないので、私が作った言語ではイベントウォッチング(=イベントを探す)のためのセマンティクスを実装していました。なので、プログラマはわざわざコールバックを自身で登録するのではなく、もっとハイレベルで「このイベントが起こったら、このリアクションを実行する」という感じで、直感的にプログラミングできるようにしました。
ロボット開発分野でオープンソースの海原へ
【筆者コメント】
このインタビューパートは、ジェフさんが過去に公開したプレゼンテーション資料を併せて読むと理解が深まると思います。ぜひご参考までに。
https://swest.toppers.jp/SWEST20/program/pdfs/s2a_public.pdf
――大学院を卒業されてから、独立行政法人産業技術総合研究所(産総研)へ就職されたんですよね。来日されて産総研さんに入られたのはどうしてですか?
実は大学院生だった2003年ごろから、「Player」という1999年に南カリフォルニア大学で誕生した世界初のオープンソースのロボットソフトウェアフレームワークの開発に携わっていました。
携わったキッカケは、研究室で購入したロボットをPlayerで動くようにしたかったからだったのですが、いざ触り始めているとPlayerに様々な不具合があることに気づいたんです。そこで私はプロジェクトに参加して、同じ研究室の人と一緒にPlayerのアーキテクチャから見直して改善を行いました。その流れでさらにロボット開発のアーキテクチャについて、より深く知ることができました。
そして博士号取得をする頃に、またオープンソースのソフトウェアですが、日本の産総研が「OpenRTM-aist」というロボット開発ソフトウェアの開発プロジェクトの存在を知り、ポスドク(博士研究員)のポジションを得てOpenRTM-aistのプロジェクトに参加したのが産総研に入社した経緯です。
――産総研さんのOpenRTM-aistプロジェクトで、ジェフさんはどのような役割だったのでしょうか?
本体の開発というよりは、ツール類の開発・整備が多かったです。たとえばコンソールからコマンドラインでOpenRTM-aistを使えるようにするツールなどのように、OpenRTM-aistをより便利に使えるためのツール開発ですね。
――私もロボット開発分野にいる人間なので、多くのロボット開発用ミドルウェアと接するのですが、そのミドルウェアの数だけツールセットも多くありますよね。
私は2007年に来日したのですが、その頃はロボット開発用ミドルウェアが爆発的に増えていた時代でしたね。
Playerが誕生した1999年頃はオープンソースのミドルウェアがありませんでした。何かロボットやパーツを買うと、そのパッケージの中に専用のソフトウェアが同梱されていた時代。しかし、オープンソースのPlayerが登場したことにより、多くの人が「もう専用のソフトウェアを同梱する必要が無く、ロボットなどを買った人が自由にオープンソースを入手できればいい」という考え方になったのです。
そこから3年後には「Orocos」というオープンソースのミドルウェアがヨーロッパで誕生して、これも多くの人気を獲得しました。特にOrocosはリアルタイム制御が得意だったので。
その後も世界各国でオープンソースのソフトウェアが登場し、日本でもOpenRTM-aistプロジェクトが日本初のオープンソースのロボット開発用ソフトウェアが誕生したわけです。
一方で、こうした爆発的なソフトウェア誕生期を経て、現在ではだいぶミドルウェアも減ってきましたよね。主にはROSやOrocosが使われることが多いと思います。
ROSとの出会いはPlayerがキッカケ
――産総研さんに勤務されていた時は他のプロジェクトにも携わっていたのですか?
2011年頃には主任研究員になって、一旦OpenRTM-aistプロジェクトから離れて、ロボットの安全分野の研究に携わることになりました。それは産総研を離れる2018年頃まで続くのですが、一方でロボットフレームワークにも引き続き手を出してはいて、ROSを使ってロボット開発もやってました。
――もう2011年にはROSを使われていたんですね?
いえ、もっと前です。ROSが誕生した2007年にはもう触っていました。
最初にROSはウィローガレージ(Willow Garage)社が開発しており、そこでソフトウェア部分のプロジェクトリーダーをやっていたのがブライアン・ガーキ(Brian Gerkey)という人なのですが、この人はPlayerの開発者でもあったんです。先ほども話したとおり、私は大学時代にPlayerを使っていてブライアンとも知り合いだったので、そんな縁もあって最初のROSに触れる機会があったんです。
――そんな古くからROSと出会っていたんですね。最初のROSってどんなソフトウェアでしたか?
今と比べると全然違うソフトウェアみたいな感じではなかったね。当然APIも変化してきましたけど、ソフトウェアのコンセプトは今も昔も変わっていないです。コンセプトは最初の時点でキレイに作られていましたね。
ROSはスタンフォード大学の「Switchyard」というロボット開発用フレームワークのプロジェクトから発展して生まれたものですが、ROSはPlayerと異なるコンセプトを持ってるものの、似ている部分もあったりして。最初はAPIもパッケージも全然少なかったですけど、その後ドンドン作って増えていって・・・。それが楽しかったですね。
フレームワークだけでなく、周辺ツールの重要性
――本当にROSのパッケージは凄い数がありますよね?
パッケージ数は、最初の頃から比べると数千倍には増えているんじゃないですかね。(笑) 数えていないし、数えられないくらい増えていますよね。
――私もROSコミュニティに居て驚くのは、これだけの膨大なパッケージがありながら、公式からはキチンとマイルストーンが示されて、さらにその通りにリリースされている点。オープンソースコミュニティでここまでしっかりしているのは凄いと思っていて、まるでLinuxコミュニティのようですよね。
ここまでROSが広がったのは、「安定性」と「周辺ツールの使いやすさ」がポイントだったと思っています。
まず「安定性」の話をすると、ROSは最初から「ROSをインストールしたら、自分のロボットはすぐ動く」ことを目指して設計・開発されていました。そのために、継続的インテグレーション(CI)も最初から整備していました。Playerの頃は無かったのですが、(前述の)ウィローガレージ社は最初から「redmine」を導入し、Issueトラッキングも全部やっていました。そうすることで安定性を確保できるよう開発していました。
もう一つの「周辺ツールの使いやすさ」について。Playerはあまりツールが無くてもある程度までは普及しましたが、ROSコミュニティを運営して気づいたことはツールの重要性。やはり使いやすいツールがないと普及しないと考え、立ち上げの頃からツールをいっぱい作って使いやすさを整えるようにしました。「rviz」(=ROS用の3Dビジュアライゼーションツール)も早い時期から登場したツールでしたね。
――私はROSを使い始めてそこまで時間は経過していないですが、すでにツールが豊富だった点と、その中でビジュアライゼーションツールがすでにある点で「ROSは便利」と感じていました。
ビジュアライゼーションツールの有無は本当に重要ですね。それがあれば「ROSで開発してみよう」と思う人も増えると思うので。
”Any code is good code.”
――さて、ROSコミュニティに多大な貢献をされているジェフさんですが、現在はROSをメンテナンスするOpen Roboticsで働いているんですよね?
【筆者コメント】
Open Roboticsはオープンソースを活用したロボット開発向けソフトウェアやハードウェアプラットフォームの開発などを手掛ける非営利団体で、ROSやGazeboのメンテナンスも担っている。CEOは前述でも登場したブライアン・ガーキ氏。
はい、産総研から自動運転のスタートアップ企業のティアフォーを経て、現在はOpen Roboticsのエンジニアとしてフルタイムで働いています。
Open Roboticsの本社はアメリカですが、世界中にスタッフがいます。規模で言うとアメリカが一番多くて、次がシンガポール。あとは南米スペインという順番だと思います。当然、私は日本から働いています。
私はシンガポールを中心としたアジアチームの中で働いています。シンガポールのメンバーは主にアプリケーション開発をメインで行っていますが、私はその中でLow Levelのシステム開発を担当しています。なので、シンガポールのチームが「こんな機能が欲しい」というROSへの要望があれば、その機能を私が開発しています。
あと、Open Roboticsの業務の傍らで、前職のティアフォーにもコンサルティングとしてROSに関するアドバイスなどを行っています。
――そんなジェフさんに伺いたいのですが、日本のROSコミュニティは他の国のコミュニティと比べてどういう印象をお持ちですか?
日本のROSコミュニティは他の国と比べて結構元気だと思います。ROSJPでイベントを実施すると、100人はあっという間に集まりますしね。中国は日本よりももっと大規模にユーザーが集まりますが、アメリカやドイツ、フランスなどのイベントはもっと小規模ですね。
逆にアメリカなどは、ソースコードへの貢献度が非常に高く、そっちの面でのコミュニケーションは上手だと思います。
――やはりそれは言語が原因だったりしますかね?
多分それはあると思いますし、文化的なところも影響しているかもしれません。
――私もそこまで英語が得意ではないので、尻込みしてしまうことも多いのですが、日本のROSコミュニティの人たちが世界の開発者とうまくコミュニケーションするためのアドバイスなどありますか?
日本のユーザーの皆さんは、もっと自分に自信を持ったほうが良いと思います。「自分は間違っているかも・・・」と思いがちでしょうけど、「自分はこういうことで貢献しましたよ!」と自信を持ってアピールしていったほうがいいです。
そのためには、他の開発者と戦うことも厭わないほうがいいと思います。「自分がやったことに対して、相手が嫌だと言うから、もうこれ以上やらない」と簡単に諦めるのは、オープンソースの世界ではダメです。オープンソースの世界は広いので、反対する人も当然出てくるものだと思っていたほうがいいです。「私はこう思うから、こうしたほうがいいと思う」ということをキチンと言えるようになったほうがいいと思います。
――英語のコミュニケーションではなく、ソースコードを書いてアピールできればと個人的には奮起したいところですが・・・。
日本の方はPull-Requestを出すこと自体が少ないですね。きっと「コードもダメだろう」と思ってしまっているかもしれませんね。もちろん、もっと出してほしいと思っています。
ブライアン・ガーキさんは"Any code is good code."という言葉を言うのですが、「どんなコードでも、どんな貢献でも、それは良い事なんだ」ということですね。実際、彼が手掛けたPlayerもその考えの下で大きなプロジェクトに成長したのです。当然、ROSもどんな貢献もちゃんと見るようにしていますし、技術的な理由が無ければ却下することもありません。
――凄く勇気をもらえる言葉ですね。
なので、英語のコミュニケーションが難しければ、まずはソースコードを書いてみることをオススメします。
お友達紹介
コモ:それではお友達紹介のお時間になりましたので、お友達をご紹介いただけると。
ジェフ:Preferred Networksの近藤豊さんをご紹介させてください。コモさんもご存じの通り、ROS Japanユーザーグループの主宰メンバーであり、またその主宰の座を先日退任されたので、この機会に日本のROSコミュニティの歴史を掘り下げてもらうのも良いかと思います。
コモ:ありがとうございます。近藤さんに伝言はありますか?
ジェフ:「日本のROSコミュニティを元気にさせた物語を期待している!」と伝えてほしいです。近藤さんがいなかったらROSJPやROSCon JPはたぶんありません。
コモ:はい、今日はありがとうございましたー。