2017年1月7日土曜日

Anki cozmoをROSで動かす

前回CozmoSDKのインストールをしました。
SDKが出たら当然ROS化したくなるのが心情です。

なので作ってみました。以下です。

https://github.com/OTL/cozmo_driver

マニアックな動画も用意しました。rqt_ez_publisherで動かして、rvizで表示しています。
https://www.youtube.com/watch?v=1RK-Mo6DGEw



出来たもの

いまのところ以下のようなことが出来てます。
  • カメラ画像のPublish (sensor_msgs/Image)
  • 台車の操作 (geometry_msgs/Twist)
  • 首とリフトの操作(面倒だったのでstd_msgs/Float64でやっちゃってます)
  • 発話 (std_msgs/String)
  • 背中のLED操作 (std_msgs/ColorRGBA)
  • 首とリフトの角度をPublish(sensor_msgs/JointState)
  • 見えたCubeの位置姿勢をPublish, /tf
  • バッテリ残量 (sensor_msgs/BatteryState)
  • IMU (sensor_msgs/Imu)
今後できそうなこととしては
  • trajectory_msgs/JointTrajectoryのサポート
  • キューブ関係
があります。Cozmo SDKは機能が豊富なのですべてをカバーするのは結構大変です。公式からなかなか出ないのも納得。機能的にSDK自体が豊富でよく出来ているのでROSでラップするありがたみもあまり感じないかもです。SDK自体がそもそもAndroidとの単なるブリッジだし、それをさらにラップするのもなぁ、って感じ。

Cozmoは発売してかなり経つのですが、いままでROS対応した人が(おそらく)いなかったのには理由があります。
Cozmo SDKがpython3.5必須なので、python2.7が必要なrospyとは同居出来ないのです。
私はその事実を知って驚愕しましたが、(危険な?)ハックでなんとか動かしました。なのでしばらくは日の目をみなそう(公式にReleaseできなかったり、動かしたくないと思う人もいるかも。)

Python3でrospy?

一応Python3でROS(のごく一部)を動かす方法を下に書いておきますが、真似しないようにしましょう。
やっても動くものは限られるので今回のようなシチュエーションじゃないと意味ないです。今回作ったcozmo_driverが使うのはrospyとメッセージ定義くらいだったのでなんとか動きました。(最近のROSはpython3でも動くように推奨されているので公式に近いコードは本質的には動くが、バイナリインストールとの兼ね合いで問題が発生している。)

sudo apt-get install python3-yaml
sudo pip3 install rospkg catkin_pkg

ハードウェア構成

Cozmo SDKを使ってないとわかりにくいのですが、ハードウェア的には結構ややこしいことになっています。

Cozmo(WiFi Station) <---WiFi---> Android Phone() <--- USB cable ---> PC (SDK and ROS)

となっています。なのでROSは完全に手元のPCで動いていて、それが携帯に送られ、Cozmoが動きます。ちょっと微妙ですが、Cozmo SDKとはそういうものなのです。

2017年1月6日金曜日

Anki Cozmo SDKをUbuntu16.04にインストールする

AnkiのCozmoを米アマゾンから買いました。非常に良く出来ています。
https://anki.com/en-us/cozmo
http://www.itmedia.co.jp/news/articles/1606/28/news124.html



日本で買うと4万円近いですが本当は$180です。amazon.comから買いましょう。
https://www.amazon.com/dp/B01GA1298S

SDKが用意してあって、自由にプログラミングすることができます。
カメラが付いていて、かわいいロボットが$180で手に入るのはすばらしいですね。

SDKの情報は以下から入手出来ます。
https://developer.anki.com/en-us

Python3.5を使うことから、古いOS(Ubuntu14.04)だとインストールがちょっと厄介なので、Ubuntu16.04にインストールしてみます。MacやWindowsもサポートされています。

Linux用インストール手順
http://cozmosdk.anki.com/docs/install-linux.html#install-linux

Python3と依存関係のインストール


sudo apt-get update
sudo apt-get install python3 python3-pip python3-pil.imagetk

SDKインストール


pip3 install --user 'cozmo[camera]'

あとはAndroid/iOSでやることが違います。これはSDKが携帯を経由してロボットを動かすという仕組みだからです。そもそもcozmoは家庭内LAN・インターネットに接続しません。
ロボット自体がWLANステーションとなって、携帯とだけつながります。

今回はAndroidでやります。

Android&Linux用手順

http://cozmosdk.anki.com/docs/adb.html#adb

sudo apt-get install default-jre adb

本当はadbは公式から入れないといけないみたいですが、端折って標準のやつを入れてみましたが今のところ動いています。(が、真似しないほうがいいでしょう)

あとはAndroidを開発者モードにしてUSBデバッグを有効な状態にすればOK。("Android USBデバッグ" ググってください)

最後に動作確認として以下の4行をPython3で実行してcozmoが喋ればOK!(必ずpython3で実行する必要があります)

Hello Worldプログラム


import cozmo
def cozmo_program(robot: cozmo.robot.Robot):
    robot.say_text("Hello World").wait_for_completed()
cozmo.run_program(cozmo_program)

これは以下のものをコピペしたものです。(Apache License, Version 2.0)
https://github.com/anki/cozmo-python-sdk/blob/master/examples/tutorials/01_basics/01_hello_world.py

まだチュートリアルとかはあまり充実していませんが、色々できそうです。
APIも良く出来ていると思います。

次回ROSで動かします。

2016年11月23日水曜日

メーリスからdiscource.ros.orgへの移行

本家のROSメーリスであるros-users (http://lists.ros.org/mailman/listinfo/ros-users)のメーリングリストが http://discourse.ros.org/ に移行するようです。

http://discourse.ros.org/t/ros-users-welcome-to-discourse-ros-org/551

これによって自分の興味あるトピックだけ通知を受け取ったり、過去ログを探したり、など柔軟に議論に参加出来るようになります。

背景として、このメーリスでは求人情報が流れまくっているので、それがうざい、というような議論が以前有りました。それに対して対策をちゃんとうった形になります。

今はどっちに投稿してもいいようですが、メーリスはなくなるようですね。ちゃんとアカウント作って、自分の興味あるトピックの通知をしておけば今までと同じように使えるし、興味ないものはMuteしておくことも出来ます。

早速GitHubと連携させてアカウント作りました。

メーリスへの転送はしばらくされるようですが、メーリスへのポストは出来なくなって、discourceへのポストしかできなくなるようです。

OSRFはコミュニティーのための環境に非常に力を入れてますね〜。

2016年8月12日金曜日

コミケへGO

のむむさん(https://twitter.com/umumon)の通称「ROSの薄い本(!?)」、「ROSではじめるホビーロボット」の新刊がコミケ三日目(8/14 (日))に出るようです。

http://koso2dan.kakurezato.com/diary.html#2016-08-02


なんとrostensorflowを紹介してもらえているらしいです。一発ネタだったのに、うれしい!!
ロボットだけじゃなく、機械学習や画像認識に興味ある方は必見なのではないでしょうか。

場所は、3日目 西g-20bらしいのでコミケいく方はぜひ。

既刊はRTで変えます。WEBでも買えます。
http://www.rt-shop.jp/index.php?main_page=product_info&products_id=3319

2016年6月30日木曜日

rostensorflow (というには程遠いけど一応動く一般物体認識ROSノード)作ってみた

DMM.make AKIBAでのROS勉強会のLT枠が空いてそうだったので、前日に急遽作ったネタを紹介します。

前日にRTの中川さんの唐揚げロボットの記事を見て、ピーンと来ました。
http://robotstart.info/2016/06/23/tensorflow_nekonote.html

「rostensorflow」をググって、ヒットしないことをまず確認。

ちょうどTensorFlowを調査していて、一般物体認識サンプルを発見したところだったので、これをちょっといじればROSノードに出来るだろうと。

制作時間30分。発表資料は5分くらいか?

発表資料↓ (スライドシェアに上げるのもおこがましい)
https://docs.google.com/presentation/d/1Ga1duM1yrlj5Ew-AwjF3THsRbRR4df5ag2Ao9typE1o/edit?usp=sharing

コードはたったこれだけです。ほとんどサンプルの関数呼び出しで、メインはほとんどコピペです。書きなぐりそのまま。



githubはこちら。 https://github.com/OTL/rostensorflow

試すにはROSの他にTensorFlowもインストールする必要があります。
tensorflowはvirtualenvじゃなく、pipでシステムにいれちゃいましょう。
UbuntuでROSの人なら以下の2行でいれれます。

$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl 
$ sudo pip install --upgrade $TF_BINARY_URL

動かし方は↓だけ。いつもどおりターミナル4つ用意して、

$ roscore
$ rosrun cv_camera cv_camera_node
$ python image_recognition.py image:=/cv_camera/image_raw
$ rostopic echo /result

2016年6月26日日曜日

ROS勉強会@DMM.make AKIBA

全くまとまっていませんが、メモ状態で公開します。
雰囲気を味わって貰えるとよいかと。


最初にDMM.makeとGroove Xの紹介がありました。

RT中川さん

RT知っている人挙手ー> 大体知っているもよう。

Raspberry Pi Mouse V2
Raspberry Pi 3Bにも対応(電流かな?)

ROSに対応しているっぽい。
小さい&安いので受けているそうです。

リポジトリはこれかな?
https://github.com/ryuichiueda/raspimouse_ros

発表資料
http://www.slideshare.net/YukiNakagawa2/201606268ros

@OTLさん


ROS使うのやめようぜ(適材適所で使おう)という発表。

https://docs.google.com/presentation/d/1gKVSVT75A4FsKJ_yXhne46qvsr5W8z3e2E2_J_cCC0I/edit?usp=sharing

@longjieさん

Multi-masterの話。昔からいろいろあるけど今使えるものがあまりない。
https://docs.google.com/presentation/d/1XM7x1SQDECO6A7phvw0mEaaMID0NNKweFHU4k2inUAk/edit#slide=id.p

- rocon_*
- rapyuta.org
- multimaster_fkie (<- これが簡単だった)

dockerですぐためせるようにしたよ!

https://github.com/longjie/learn_ros_multimaster

@k_yoneさん

オフレコビデオ集がありました。
image_pipelineへのコミットなど。これがあるロボットで使われているらしい。

https://github.com/ros-perception/image_pipeline/commit/620d50cae7cc7e32d4cdb913e18cdb18904f612a
とか、結構してる。すげー。

本当の発表は「納品用ROS機の手癖」。

オススメハードウェアやシステム構成を紹介。
実際にロボット運用するときに有用な情報がありました。
僕的には「あるある」って感じで面白かった。

GrooveX林さん(社長じゃないほう)

ROSの導入から混乱期から成熟期へ

テクノロード高橋さん/ @n_sugiuraさん

いつもの距離センサ(赤外線センサ GP2Y0A02YK)+ラジコンサーボ(RS303MR)でのSLAMをやってみる話。

GMAPPING,AMCL動くの??ー>動いてる〜〜〜!

近日発売予定!!
楽しみ。

斎藤さん

もうおなじみになったHitoshi Saitoさんの自作ロボット、TurtleReal2(1万円で自律移動ロボット)での自律移動の話。

http://forestofazumino.web.fc2.com/turtlereal2/ros_8th_seminer_ppt.pdf

本のとおりにやったけど動かない!
ステップバイステップでの自律移動させ方。初めてやる人には超役に立ちそう。

今後どこまで進むか楽しみです。


akioさん


ROSCRAFT!
ROSでMINECRAFT世界に触れちゃうというシステム。
すげー。
MinecraftMod + rosjavaで実現。

スティーブをROS(/joy)で操作 + カメラ画像のpublishを実現していた。
AIの力を借りて自律Minecraftが出来そう。
教育にも使えるのでは?とのこと。

https://speakerdeck.com/akio/2016-06-26-di-8hui-rosmian-qiang-hui-zi-liao-roscraft

ここからはLTということで短時間のネタ。。。。


豆蔵 大国さん
昔オブジェクト指向だったけど、もうオブジェクト指向ではお金稼げないので・・・。
「初公開」中国の産業用ロボットシステムの開発をしたらしい。

@longjie0723さん

CythonをROSで使う話。「Cythonはいいぞ。」
Pythonは遅い。C++はめんどい。そこでCythonだ。

https://github.com/longjie/ros_cython_example

@mabonki0725さん

強化学習の話. sarsa(λ)法?

@OTLさん

rostensorflow。一発ネタです。
https://docs.google.com/presentation/d/1Ga1duM1yrlj5Ew-AwjF3THsRbRR4df5ag2Ao9typE1o/edit?usp=sharing

ROS Tシャツhttps://docs.google.com/presentation/d/13hDbaQ1WiQKuBoznGimANMY8NSN5aJavNN9Pv5xMpmg/edit?usp=sharing

O里さんと林さんが買ってくれました!ありがとうございます!


akio

catkin toolsの紹介。もはや使わない理由はないのかな。

https://speakerdeck.com/akio/2016-06-26-di-8hui-rosmian-qiang-hui-ltzi-liao-catkin-tools

@marona77

nodeletの紹介。資料がすばらしい。
http://www.slideshare.net/yosukekurihara77

最後は@k_yoneのアメリカライフハック!

GrooveX林さん(社長のほう)

受託せずに投資でやっています。100億かかるかも?で投資募ってる。
自動運転+EV+かわいい
BB8,トトロ? ー>ドラえもん
メンバー募集中!

2016年5月24日火曜日

Kinetic Kameリリース

日本人のごりおし(?)で決定したKinetic Kame(欧米人はちゃんと発音できているのか・・?)がリリースされました!!

http://www.ros.org/news/2016/05/ros-kinetic-kame-released.html

Ubuntu16.04が標準サポートになるので、Jadeをすっとばして、Indigo以来のこれからの主流になるのではないでしょうか?

私はまだUbuntu16.04がインストール出来ていないのでインストールしていません。

これまでの差分は以下に詳しくのっていますので要チェックでしょう。

http://wiki.ros.org/kinetic/Migration


私が個人的に気になったのは

  • roslaunchの$(eval <expression>) のサポート(.launchにpython直接書けちゃう)
  • rosnodejsの公式サポート(またメッセージジェネレーションが遅くなるのか・・・?
  • OpenCVが3.1に
  • Qtが5に
くらいですかねぇ。

まだリリースされていないパッケージも多いので、すぐには移行出来ないと思いますが、管理しているパッケージがある人はリリースしましょう。(私はまだです。)

そしてちょうどいいタイミングでTシャツとパーカーが届きました。みなさんもGetしましたか?

前回のJadeよりはカッコいいのではと思います。パーカーは季節はずれ過ぎですね。