1 of 14

ROBOMASTER S1をROSと繋げて遊ぶ

佐藤 陽威

Hidaka, Robosemi

2 of 14

自己紹介

  • 佐藤陽威(さとう ひだか)
  • 所属:都立大学 M2
  • 普段はロボットのハードウェアの研究をしてます�面白い素材などあったらお知らせいただけると喜びます。
  • 趣味:ボカロ曲を聴きまくること�

鳥型ロボットを作ったりしてます

Hidaka, Robosemi

3 of 14

内容

  • ROBOMASTER S1のCANについて
  • python ROSパッケージの作成
  • Rosboardの紹介、使い方
  • Ngrokとの組み合わせ
  • みんなで動かす

Hidaka, Robosemi

4 of 14

DJI RoboMaster S1

  • ダイレクトドライブなジンバル、足回り
  • 高品質なハードウェア、安定した走行が可能
  • スマートホン専用アプリによる操作システム

実験用のデバイスとして非常に素晴らしく

インターフェースにとらわれずに動かすことができると嬉しい

66,000円

Hidaka, Robosemi

5 of 14

ROBOMASTER S1のまっとうな遊び方

  • RoboMaster-SDK
  • Robomaster S1のWi-Fiホットスポットに接続して、�pythonで動かせる(らしい)

$ pip install robomaster

Ubuntu 16.04

python3.7

Hidaka, Robosemi

6 of 14

別解

  • ROBOMASTER S1の内部の通信にはCANを採用しているので、線を2本(CANH, CANL)を指すことでCAN BUSの仲間になることができる

CANable Pro �(USB-CAN変換)

Jetsona Nano

3000円くらい

インテリジェントコントローラ

モータ

ジンバル

LED

モーション

コントローラ

CAN-BUS

Hidaka, Robosemi

7 of 14

How to hack?

神記事!!

$ sudo slcand -o –c –s8 /dev/ttyUSB0 can0�$ ifconfig can0 up

$ candump can0

CANのツールを利用して流れてくるメッセージを取得する

頑張って解析!!

ほんとに大変、なんとかLEDを制御できた

Hidaka, Robosemi

8 of 14

Jetson, Velodyneを載せてみよう

  • ROBOMASTER S1の頭にのせてみる�「あれっ動かない?」�起動時のキャリブレーションで頭を振る�velodyneが重すぎてキャリブレーション失敗、動かなくなる
  • 仕方ないので機体にしっかり固定してやる�

断念

ココ!

Hidaka, Robosemi

9 of 14

ハックできた!よし、ROSとつなげよう

  • 指令値をcmd_velに置き換えるだけ
  • robomaster_s1_driver�https://github.com/sgrsn/robomaster_s1_driver

$ rosrun robomaster_s1_driver robomaster_node

$ rosrun turtlesim turtle_teleop_key /turtle1/cmd_vel:=/cmd_vel

x

y

z

Hidaka, Robosemi

10 of 14

rosboard, rosshowの紹介

  • rosboard

Webサーバーを実行するROSノード

Webブラウザから開けるRvizみたいなもの

  • rosshow

ターミナルで利用可能な視覚化ツール�PointCloud2, Image, LaserScanなどがターミナルで表示できる

センサーを接続したPCにSSHして、そのままtopicを確認できる

/usb_cam/image_rawを表示

Hidaka, Robosemi

11 of 14

rosboardとつなげる

  • rosboardからcmd_velを吐き出して、robomaster nodeが受け取る
  • ブラウザからrobomasterが動かせる!

/cmd_vel

/usb_cam/image_raw

$ rosrun robomaster_s1_driver robomaster_node�$ rosrun rosboard rosboard_node�$ rosrun usb_cam usb_cam_node

Hidaka, Robosemi

12 of 14

rosboard + ngrok

  • ngrok�任意のポートを外部に公開できるサービス、ソフトウェア�例えば、��でsshサーバを公開することができる

  • Rosboardで使用しているポートは8888なので��でrosboardを外部に公開することができる!

$ ngrok tcp 22

$ ngrok http 8888

似たようなサービス

  • Heroku
  • AWS
  • GAS

Hidaka, Robosemi

13 of 14

実況プレイ

$ rosrun robomaster_s1_driver robomaster_node�$ rosrun rosboard rosboard_node�$ rosrun usb_cam usb_cam_node

$ ngrok http 8888

Hidaka, Robosemi

14 of 14

まとめ

  • Robomaster s1をcmd_velから動かすノードを作成した。
  • rosboard, rosshowの紹介
  • 遊び方その1 rosboard + ngrok
  • 遊び方その2 LiDARの固定、navigation

Hidaka, Robosemi