Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

詳細ハードウェア構成 Raspberry Pi 4 UPS DCモータドライバ TB6612 レーザスキャナ RPLIDAR A1M8 モータ用電源 メカナムホイール DCモータ × 4 このへんは3Dプリンタ で適当に作成

Slide 7

Slide 7 text

ROSとは ROS (Robot Operating System)はソフトウェア開発者のロボット・アプリケーション作成を支援するライブラリとツールを提供しています . 具 体的には, ハードウェア抽象化, デバイスドライバ,ライブラリ,視覚化ツール , メッセージ通信,パッケージ管理など が提供されています. - http://wiki.ros.org/ja OSと名前がついているが、LinuxなどのOSとは抽象化のレベルが違う 実体としてはLinux上で動くユーザ空間ソフトウェアの集合体 ドライバ ROS センサーだよ すごいやつだよ Linux I2Cのデバイスだよ 私は電気でうごく 顧客が本当に 必要だったもの 図:抽象化レベルのイメージ

Slide 8

Slide 8 text

ROSの通信 コンポーネント間の通信はPubSub(データの内容はROS側で規定) ● センサー:データを取得タイミングで送信(物理的な限界もあり様々) ● データ利用側:必要なトピックをサブスクライブできれば動く rosbag(=センサデータを記録・ダミーを再生できる)で都度リアルに動かさな くても開発が可能

Slide 9

Slide 9 text

ソフトウェアの構成 コントローラ @Laptop PubSub to ROS @Raspberry Pi 移動・回転方向 モータドライバ rplidar cartographer_ros Rviz(可視化) ラジコン部分は自作(https://github.com/juntaki/ros-pubsub) SLAMは既存パッケージのくみあわせ 点群 マップ

Slide 10

Slide 10 text

ノードの自作は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使いこなし情報

Slide 11

Slide 11 text

参考:BIRのアーキテクチャ BIRのアンケートシステムと配信システムの連携にPubSub(とGo)を使う構成 ● アンケート: 発生したイベントをPubSubに送信 ● 配信システム: イベントを元に督促・配信状況をチューニング アンケートにリアルに回答しなくても、配信システムのテストが可能!? 詳細はブログ記事→

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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