ROS2でGazeboシミュレータの中でTurtleBot3を走らせる

何も新しいことはありませんが、とりあえずやってみたら結構「おおっ」って感じだったのでメモしておきます。

Gazeboはオープンソースの物理シミュレータ、TurtleBot3は実際に販売されている教育用ロボットですが、シミュレータモデルが提供されています。ROS1ではお馴染みでしたが、ROS2にもすでにちゃんと移植されているようでした。

ROS2 galacticがセットアップされていることを前提にしています。

“ROS2でGazeboシミュレータの中でTurtleBot3を走らせる” の続きを読む

ROSを用いて自動運転ロボットを作る [序章]

久々の投稿になります。突然になりますが、ここ最近、とあるきっかけで自律移動・自動運転の技術に興味をもっていろいろと調べたりしています。そして、これをDIYで製作してみようと思いましたので、その記録をここに書いておこうと思います。

まずは何となく理解したこの分野のあらましから。大学院の専門などではないので間違いがあったらご指摘いただければ幸いです。というか、ROSまでたどり着けませんでした。

世間的にも、自動車の自動運転が何かと話題になってきていますが、意外とその技術的な内容は知られていないように思います。自動運転車の話題は世間的には最近の人工知能ブームに乗って出てきたようにも見えますが、実は10年以上も前から研究されている技術です。また、最近のブームは主にDeep Learningによる画像認識・自然言語処理などの技術を皮切りに始まっているように思いますが、自動運転の基礎技術はこれらとは全く別の、確率論をベースとしたアルゴリズムとなっています。

この分野の基礎技術が、Probablistic Robotics(邦訳:確率ロボティクス)という本にまとめられています。著者はSebastian Thrunというスタンフォード大学の教授で、移動ロボット分野の権威であり後にGoogle自動運転車プロジェクトのリーダーを務めた方です。

この本はかなり分量もあり数学ベースの理論もかなりあるため、読み切るのはなかなか大変そうです。私もまだ途中です。ここでは、勉強の経過なども書いていけたらと思っています。

自律移動ロボから自動運転車へ

さて、上で自動運転車の技術が昔から研究されてきたと書きましたが、最初から全て自動車において研究されてきたわけではないようです。現在の自動運転車の技術分野が生まれてくる以前に、「自律移動ロボット」という一大研究分野がありました。自律移動ロボットというと概念としては広そうですが、レーザーレンジセンサ(LIDAR)と左右2つの駆動輪を備え、マップ作成と自己位置推定、経路計画といった手順で目標位置までの移動を行うロボットを指すことが多いようです。初期の研究として以下のようなものがあります。

Minerva's Image

[Carnegie Mellon’s Robotic Tourguide Project, http://www.cs.cmu.edu/afs/cs/Web/People/minerva/]

カーネギーメロン大学の博物館で案内役を行うロボットだったようです。この実験が行われたのが1999年とのことで、かなり私たちの感覚より早くから研究が行われていたかがわかると思います。この研究を行っていたのがまさにSebastian Thrunで、後にGoogle自動運転車プロジェクトの初代リーダーを務めています。このことからも、自動運転車の技術が自律移動ロボットの技術の発展であるということがわかると思います。

誰でも自律移動ロボを作れる時代に!

さて、そこからもう少し時代が進み、2000年代後半に、ある密かなブームが起こりました。それはiRobot社がロボット掃除機・Roombaを発売したことと、Microsoft社がゲーム向けデバイスとしてKinectを発売したことによります。Roombaはともかく、Kinectは一般人より研究者が大喜びだったなどと言われていました。

それは何故でしょうか。まずKinectは、それまでにないほど安価に深度データやモーションキャプチャを行えるセンサとして使うことができたからです。これまで、上記の移動ロボのように深度データを取得するにはLIDARが一般的でしたが、これは2017年現在の低性能なラインナップでも10万円くらいする高価なセンサです。また、人間の骨格の動きを測定する専用のモーションキャプチャシステムなどはいくらするか想像もつきません。しかし、これらがKinectの登場により1万円程度で誰でもできるようになってしまったのです。これによって、趣味人やお金のない研究室などで大ブームとなりました。

もう一つはRoombaです。これはKinectほどのインパクトではないかもしれませんが、実は、安価な車輪ロボとして都合が良いものだったのです。車輪ロボで自律移動を行おうとした場合、左右それぞれのモータの速度を外部から制御できることと、エンコーダ値(車輪の実際の回転数=移動距離)を取得できることが必要となります。ですので、ミニ四駆やラジコンのようなシステムでは不十分ということになります。速度制御とエンコーダ搭載は、自作もできないことはないですが、メカや電子回路、マイコンなどの知識が必要となり、ちゃんと使えるものを作るにはそれなりに骨の折れる作業でした。しかし、Roombaは一般向け製品でありながら、外部からシリアル通信で速度制御ができ、エンコーダを搭載し、さらに(実は)強度や搬送可能重量もそこそこあるという、数万円で手に入る立派な車輪ロボだったのです。

Roombaの一般向け製品の多くが実は隠しシリアルポートを備えています。研究目的やDIYへの配慮の姿勢がさすがシリコンバレー企業という感じでしょうか。

これらKinectとRoomba、さらに制御を行うためのノートPCや流行りの高機能CPUボード(Raspberry Piなど)を組み合わせれば、立派な移動ロボが作れてしまいます。中古などを上手く使えば、1万円以下でもできるかもしれません。後は、ソフトです。ソフトも、オープンソースコミュニティの発達によって、自律走行のための高度なソフトを無料で手に入れることができます。腕があれば自分で全て作ることもできます。PC内で動くソフトの開発も面白いですが、上記のようにセンサとアクチュエータをつけることで実世界に飛び出すことができます!DIYで何でもできる面白い時代だと思います。

それでは、次回から実際の製作に入っていきたいと思います!