ROSでSLAMラジコンをつくる

 ROSでSLAMラジコンをつくる

De059f612e2f68589831e4bde0f15c83?s=128

Jumpei Takiyasu

August 28, 2020
Tweet

Transcript

  1. Jumpei Takiyasu @juntaki M3, Inc. 2020-08-28 TechTalk

  2. 自己紹介 滝安純平(@juntaki) BIRのエンジニアTL 過去の発表など • Go・GCPでいろいろつくる • 3Dプリンタをつかったロボット • いいかんじの設計を考える(Clean

    Architecture)
  3. つくったもの SLAM※ができるラジコンをROSを 使ってつくった 自動運転など、周りの状況に適応でき るロボットのベースとなる技術の実験 ※Simultaneous Localization and Mapping 自己位置推定と環境地図作成を同時に行うこと

  4. LIDAR(Light Detection and Ranging) 測距レーザーをぐるぐる回すことで、 点群データがえられるセンサ ちゃんとした物は数十万円はする これが LIDAR LIDAR動作イメージ

  5. デモ 左:生成したマップ、右:現実

  6. 詳細ハードウェア構成 Raspberry Pi 4 UPS DCモータドライバ TB6612 レーザスキャナ RPLIDAR A1M8

    モータ用電源 メカナムホイール DCモータ × 4 このへんは3Dプリンタ で適当に作成
  7. ROSとは ROS (Robot Operating System)はソフトウェア開発者のロボット・アプリケーション作成を支援するライブラリとツールを提供しています . 具 体的には, ハードウェア抽象化, デバイスドライバ,ライブラリ,視覚化ツール

    , メッセージ通信,パッケージ管理など が提供されています. - http://wiki.ros.org/ja OSと名前がついているが、LinuxなどのOSとは抽象化のレベルが違う 実体としてはLinux上で動くユーザ空間ソフトウェアの集合体 ドライバ ROS センサーだよ すごいやつだよ Linux I2Cのデバイスだよ 私は電気でうごく 顧客が本当に 必要だったもの 図:抽象化レベルのイメージ
  8. ROSの通信 コンポーネント間の通信はPubSub(データの内容はROS側で規定) • センサー:データを取得タイミングで送信(物理的な限界もあり様々) • データ利用側:必要なトピックをサブスクライブできれば動く rosbag(=センサデータを記録・ダミーを再生できる)で都度リアルに動かさな くても開発が可能

  9. ソフトウェアの構成 コントローラ @Laptop PubSub to ROS @Raspberry Pi 移動・回転方向 モータドライバ

    rplidar cartographer_ros Rviz(可視化) ラジコン部分は自作(https://github.com/juntaki/ros-pubsub) SLAMは既存パッケージのくみあわせ 点群 マップ
  10. ノードの自作はGoで aler9/goroslib: ROS client library for the Go programming language

    クロスコンパイルが簡単&Goroutineなどと相性が良いのでGoでつくると楽 ROSのインストールはDocker ROSパッケージとROSとUbuntuのバージョンの相性が厳しいので絶対に Dockerを使ったほうがいい Dockerを使えばいいと気づくまで3回くらいRaspberry PiにUbuntuを再インストールしました ROS使いこなし情報
  11. 参考:BIRのアーキテクチャ BIRのアンケートシステムと配信システムの連携にPubSub(とGo)を使う構成 • アンケート: 発生したイベントをPubSubに送信 • 配信システム: イベントを元に督促・配信状況をチューニング アンケートにリアルに回答しなくても、配信システムのテストが可能!? 詳細はブログ記事→

  12. まとめ ROSでSLAMができるラジコンをつくった

  13. おまけ:自動字幕ツールについて 下記のライブラリのサンプルコード(caption2)として公開しています juntaki/amivoice-go: AmiVoice Cloud PlatformのGoライブラリ