2020年3月31日火曜日

Azure Kinect DK使ってみた

Azure Kinect DKが日本でも発売されたので買ってみました。
購入は↓から
https://www.microsoft.com/ja-jp/p/azure-kinect-dk/8pp5vxmd9nhq?rtc=1&activetab=pivot:overviewtab

SDKとROSとオープンソースで提供されているのでUbuntu 18.04 Melodic環境にインストールしてみました。

1)SDKインストール

まずは↓を参考にaptリポジトリを追加します。

https://docs.microsoft.com/en-us/windows-server/administration/linux-package-repository-for-microsoft-software

具体的には以下のような感じです。
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo apt-add-repository https://packages.microsoft.com/ubuntu/18.04/prod
sudo apt-get update
したらaptでインストールします。ROSノードはSDKバージョン1.1って書いてあったけど1.4でも動きました。また、ファームウェアを更新しろ、って書いてありますが、Linuxでやる方法がわからなかったのでやりませんでした。が、一応今の所動いています。分かる人教えてください。

sudo apt install k4a-tools libk4a1.4-dev
で、はまりどころは、udev.rulesです。
https://github.com/microsoft/Azure-Kinect-Sensor-SDK/blob/develop/docs/usage.md
ここの一番下に記述がありますが、他のドキュメントには記述ありません。
git clone https://github.com/microsoft/Azure-Kinect-Sensor-SDK.git
sudo cp Azure-Kinect-Sensor-SDK/scripts/99-k4a.rules /etc/udev/rules.d/sudo udevadm control --reloadsudo udevadm trigger
しておきます。
これで準備完了。Kinectを差し込んで
k4aviewer
するとViewerが立ち上がります。



2)ROS

ROSノードも用意されています。
https://github.com/microsoft/Azure_Kinect_ROS_Driver

libk4a1.4-devをちゃんとインストールしておけば普通にビルドできます。
ドキュメントはあまりないですが、rtabmapが使えるみたいです。私は動かせませんでした。

点群は
roslaunch azure_kinect_ros_driver driver.launch
して、rvizで確認出来ます。
IMUデータとかも取れてます。


リリースしてしばらく立っているからか、ソフトウェアはよく出来ている印象。点群もなかなかきれいですし、いい感じ(波打っていない、平面が出ている)な気がしました。

CPU使用率は40%くらい(Intel Core i7-9750H 2.6GHz)。GPUメモリ120MBくらい使っていました。

3)宣伝

ということで弊社スマイルロボティクス株式会社はAzure Kinect DKを使ってロボットを動かしてくれるエンジニアを募集しております。元トヨタ・元SCHAFT・元Googleの社長がROSのブログを書いている会社で働きたい方、ご連絡お待ちしております。

https://www.smilerobotics.com

2019年1月23日水曜日

とあるロボットプログラマのキーボード選定

最近キーボードに凝っています。

学生の頃はThinkPad信者だったのでキーボードというとトラックポイントつきのThinkPadキーボードじゃないとだめでした。

キーから手を離さずにマウス操作できるなんて最高ですよね。
就職してからはふつーのマウスとキーボードを使うしかなかったのでそれになれて、
最近肩こりがひどいのでその対策のためにセパレート型(分離型)のキーボードを試し始めました。
分離型といってもなかなか奥が深い、というか、理想のキーボードにはなかなか出会えません。

分離型自体は非常に気に入りました。(肩こりは全く良くなっていません)でも、そもそも発売している機種が圧倒的に少ないことなどから微妙にかゆいところに手が届きません。

で、キーボードにこだわりを持ち、自作してしまおうという自作キーボードという世界があります。自作キーボード界では分離式もメジャーです。自作とはいっても他人のデザインがオープンソースで落ちていて比較的簡単に作れたり、キットになっていたり、組み立て後のものを買えたりもします。

ですが、これまたしっくり来るものがなく、やっぱ自作したくなります。

が、自作だと品質に自信がもてないし、設計の時間やスキルが足りないので、買えるものなら出来合いのものを買いたいです。


ポイント1:数字キーがある。


ロボットプログラマは数字を普通のプログラマより高頻度で使います。ロボットの制御パラメータや数式などです。なので数字キーは重要です。ですが自作キーボード界などとがったキーボードは数字キーがなかったりします。

レイヤーという概念があって、少ないボタンでも使えるようになっているのです。ですが私にとって数字キーは簡単に入力する必要があるので、そういうキーの少ないキーボードは使いたくありません。


ポイント2:正しいブラインドタッチ



これは私のこだわりですが、正しいブラインドタッチを壊したくないです。例えば6キーは右手人差し指で押すと決まっていますが、これが分離型だと、左についてたりすることがあります。これがむちゃくちゃストレスになります。

こういう尖ったキーボードは配置は自由にソフトウェアで設定できますが、キーが存在しないことには設定のしようがないのです。


ポイント3:矢印キーがある。



これは設定でどうにかなることが多いですが、矢印キーは結構使います。とくに上キーが重要です。ロボットを動かすときってずっと着席してるわけじゃないので、立った状態でコマンドを打ちたくなったりします。そんなときシェルのヒストリを使うのでそのときに上キーが必要です。座っていればCtrl-pとかでいいですが、立ってると両手使うのは難しいです。


ポイント4:マウスを触るときもある



私はマウスも結構使います。ロボットプログラマにとってはGUIも非常に重要なツールなので、マウスも結構使います。なのでThinkPadのトラックポイントが最高なのですが、分離型だと難しい。自作している人もいます。


ポイント5:かっこいい



かっちょいいと思えること。ロボットプログラマたるもの見た目にはこだわりたい。ただし私にはセンスはないので自分が納得するもの。

で、実際に私がここ数年で実際に買った履歴を紹介します。

これらを買う前はHHKBを使っていました。


1.WhiteFox

https://www.kickstarter.com/projects/lekashman/whitefox-mechanical-keyboard?lang=ja






普通のメカニカルキーボードですが見た目がかっちょいいのと、コンパクトだけど矢印キーとかあるし、いいと思ってbackしました。ただKickstarterなんで、とどく頃には分離型にかぶれていたのであまり使ってないです。


2.Koolertron Programmable Split Mechanical Keyboard

https://www.amazon.com/Koolertron-Programmable-Mechanical-Keyboard-Ergonomic/dp/B076FTKD6F


最初に買った分離式キーボード。キートップに印字がないのがクールだし、矢印キー一応あるし、6キーが左右どっちにもある。これは結構お気に入りです。
キーが多いのでコンフィグでどうにでもなるのがいいです。

あえて言えばちょっとデザインがこなれていない感じがします。

3.Kinesis Freestyle Pro (PC & Mac) Mechanical / Programmable


https://www.kinesis-ergo.com/shop/freestyle-pro/






新商品として出たので会社用に買いました。しかし、これ6キーが左にしかないんです。
キー配置はプログラマブルですが、物理的にないのもには割り当てられない。

その一点だけの不自由なんですがホント我慢できない。

また、このころからマウスも便利に使いたい欲が出てきました。


4.Ultimate Hacking Keyboard


https://ultimatehackingkeyboard.com/





これは動画みたほうがいいです。
トラックポイントとかつけられる、分離型キーボードです。
しかし、6は右手だって言っただろー!!!
エスケープもないし矢印キーもない。コンフィグするにもキーが足りない気がしますね。だめそう。


すごく待たされたけど、キーボードだけ到着(2018/06に発注して2018/12ごろ届きました。)。トラックポイントとかはまだ届いていません (2019/01/23時点)。


5.Mint60

http://eucalyn.hatenadiary.jp/entry/about-mint60-01





日本の方が作られている自作キーボード。キットで購入。
矢印キーあるし、数字もあるし。6が右手だし。
エスケープ位置がおかしいですが、これはコンフィグでなんとかなりそう。見た目もおしゃれだし、自作体験もしてみたい!ということで購入。

あとはマウスがどうにかなれば、という気がします。

今の所LEDもかっちょいいし、最高にお気に入りです。ただ私の自作能力の欠如のせいでたまに一部のキーが効かなくなるという重大な問題を抱えてしまっています・・・。商品として買いたい。



6.Key Mouse

https://www.keymouse.com/







トラックボール付きの分離型キーボードがやっと見つかりました。値段が高いので躊躇しましたが、買いました。6が右手だし。
はたしてトラックボールを使いこなせるか?

しかし、右手側のキーの数が足りなくて、バックスペースキーを置く場所がない。なので親指キーを使わざるを得ない。ところがパームレストが高すぎて親指のところに手が届きません。うーんいまいち。日本人向けじゃないですね。



というわけで、まだ理想のキーボード探しは終わっていません。プログラマにとってキーボードとは最も身近なツールなのでこだわりたいですね!


みなさんもこだわりのツール、キーボードありましたら教えてください。


これ全部でいくら使ったんだろう・・・。考えたくない。。

(9月くらいに書いてあった原稿を今投稿しています。)

2018年10月6日土曜日

ROSじゃない日本のロボットのコミュニティを

ロボットに関する話題ならなんでもOKな日本語のDiscordのサーバー作りました!

招待リンクはこちら

https://discord.gg/uXX2Hh6

(リンクから入れない人は、アプリからサーバーの追加にこのURLを貼ってください。)

Discordはゲーム用のSkype・Slackみたいなもので、今のところ無料で使えます。
ゲーム以外で使っても問題ないようで、私が購読しているのは
Rustの開発用Discordと、自作キーボードのコミュニティーのDiscordです。


すごく機能も名前も似ているものとして、Discourseがありますが、
こちらはOpenSourceで自前でサーバを立てるフォーラム形式のコミュニティーであり、
Rustも公式コミュニティーはDiscourseだし、ROSもDiscourseがありますね。


Discordはゲーム用ということもあって、なんとなくゆるい感じがして好きです。
またアプリの出来がよいのと、サーバー切り替えが非常に簡単(Slackと比較すると)です。

よく考えたらメンバーはROS Slack使っているんだからSlackのほうがよかった気もしますが・・・。ROS関係ないしね。


tl;dr

設立の趣旨としては

ROSのコミュニティーは非常に盛り上がっていて楽しいんだけど、「ROS縛り」みたいになっていて、
ROS関係ない人たちが入り込めないのが非常にもったいないなと。
まあ参加したければ無理やりROSに結びつければいいんだけど、もっと自然に日本のロボットをやっている人たちを
結びつけるようなコミュニティーがあったらいいなぁ、とかなり前から思っていました。

多分過去にはRoboticsメーリングリストとかがそういう役割だったんでしょうけど、今は気軽に議論出来るものではなく、イベント通知専用になっちゃっていますね。
2018年にメーリングリストってのもありえないので、比較的なうい感じのDiscordにしてみました。

個人的には子供を抱っこしながら片手で出来る娯楽を増やしたい、という欲求がありました。

また先日Twitterで公開でやり取りをしている人とか見かけましたが、
Twitterだと、はたから議論入っていくの難しいですよね。
Discordとかのほうが複数人の意見聞いたりするのに便利だと思いますし、これまでこういうコミュニティーは日本にはなかった。

なにか問題が起きるまではゆるーく運営したいと思いますので、仲良くやりましょう。
どんどん広めてください。使い方もどんどん提案してください。

英語だとredditで私がやりたいことに近いことができていると思っているのですが、日本だと2ch(5ch)は匿名なので議論にならないし、他に有力な掲示板はないので出来ません。

2018年7月2日月曜日

C++は難しいという話

最近ハマったのでみなさんにクイズです。

以下のコードをビルドして実行すると何が起きるでしょうか?
実際に実行する前に何が起きるか想像して、出力をノートに書いてみてください。



clangでビルドするなら、

$ clang++ -std=c++11 test.cpp

って感じです。

次に、-DTEST2をつけて

$ clang++ -std=c++11 test.cpp -DTEST2

とするとどうなるでしょうか?


正しく予想出来たらC++を理解していると言ってもいいかもしれません(だめでしょうけど)。

2017年11月6日月曜日

urdf-vizのバイナリリリースの自動化

URDFのビューワーの urdf-viz のバイナリリリースをはじめました。

Linux(たぶんなんでも動く)/MacOS/Windows用の3つがあります。さすがに64bit版だけです。

↓からダウンロード出来ます。

https://github.com/OTL/urdf-viz/releases

Windowsだとurdfファイルをurdf-viz.exeのアイコンにドラッグ・アンド・ドロップでURDF可視化できちゃう(rospackとかPATH通っていれば。もしくはmeshファイルのPathがurdfからの相対で書かれている場合は)ので本当に楽でいいです。(っていうかwindowsでrospack動くのか?)

前回は手動でリリースしたんですが、いい加減めんどくさいので自動化しました。

↓を参考に、というかこれを利用して環境を作りました。

https://github.com/japaric/trust

Linux/MacOS用にはおなじみのtravis-ciを使って、Windows用のCIには Appveryor を使いました。

タグをpushするとgithubのreleaseを自動で作ってくれて、そこにバイナリを配置してくれるようになっています。
githubのdeploy用のキーをさらに暗号化して 設定することでこういうことが出来るようです。

2017年9月2日土曜日

このロボットがすごい2017東洋大学 川越キャンパス

毎年ロボット界の幅広く面白い登壇者が一般の人向けに超面白い話をする
「このロボットがすごい」に登壇することになりました!

このロボットがすごい2017
http://konorobo.main.jp/

日時: 2017年9月12日(火) 14:30~17:30
場所: 東洋大学 川越キャンパス (7号館721室)

個人的な思い出としては、2015年のTadakuma先生の「ドロクサロボティクス」という名言が忘れられません。

このような超面白イベントに、たんなる場末のBloggerの私が出演するのは非常に僭越です。

とはいえ出来る限り頑張りたいです。

主催者の方が私にROSの黎明期から見てきた私の話を聞きたい、ということで
出演が決まったので、この機会にぜひ読者の皆様も私に聞いてみたいことがあれば教えてほしいです。

どうか少しでも話を面白くするために助けてください!

コメント欄かtewitter @OTL までおねがいします

2017年8月26日土曜日

robotics.rs

ロボット界におけるRustの情報を集めるためにドメインを取得しました。
Rustは .rs ドメイン(セルビア)を使うのが一般的です。
日本のレジストラだと高くて、取得難易度も高いので、
http://www.istanco.com というセルビアのサイトを使いました。

http://robotics.rs/

Rustのロボットライブラリを集めるサイトにしています。
とりあえず自分のライブラリ(ひどい)と自分が使っているライブラリを
載せてみました。

何かオススメライブラリあったらPRお待ちしております。

2017年8月21日月曜日

Rustで書かれたURDF Viewer: urdf-viz

今やロボットに最も適した言語として有名になりつつあるRustでURDFを可視化するツールを作りました。

http://github.com/OTL/urdf-viz

ぶっちゃけRustを勉強するために作り始めたのですが、やっと実用的な状態になったのでアナウンスしました。


Rustにはすでに

あたりを自分で作りました。


特徴的な機能として以下があります。
  • Rustなのでシングルバイナリで動く
  • 関節角度Limitを考慮して関節を動かせる
  • 逆運動学(ヤコビアン)で手先を動かせる
Ubuntu16.04 64bitを使っている人は↓からダウンロードできます。

Rust使っている人は

$ cargo install urdf-viz

でインストールできます。

使い勝手は正直かなり悪いですが、やりたいことはなんとかできるのではないでしょうか?
フィードバックお待ちしております。

今回これを作ってみて、URDFフォーマットに少し詳しくなりました。

2017年5月19日金曜日

ポエム:Rustはロボットプログラミングのデファクトスタンダード言語となりえるか

RustはMozillaが開発するプログラミング言語で以下のような特徴のあるらしい。

Rust は安全性、速度並列性にフォーカスした現代的なシステムプログラミング 用のプログラミング言語です。 ガベージコレクション無しでメモリ安全であることが、これを可能にしています。

速度、並列性、GC無し、などは制御の人だったら魅力的に感じるのではないだろうか。

ロボットのプログラミングというと、C++かPythonあたりを使っている人が多いだろう。私はPythonが大好きで趣味ではPythonばかり書いていた。そして仕事ではC++がほとんどだ。
だが、ここ2ヶ月くらいRustにハマっている。ひょっとしたらRustはロボットと非常に相性がいいのではないかと思っている。

Rustのいいところ


RustはC++に似た特徴がいくつかある。
効率がよい、GCがない、低レベルまでかける、といったロボットならではの要求を満たすところだ。

そしてC++より以下の点でロボット開発に向いていると思う。

とくにチャレンジングなロボット開発をしていて、リアルタイムな制御もしていて、最終的な品質も担保したいような場合にマッチすると思う。



1. 柔軟で強力なエラーハンドリング


C++だと例外を投げたり、返り値でエラーハンドリングする。しかしこれは簡単に無視できてしまう。
一旦例外を捕捉しないでコードを書いてしまえば、どこで何をキャッチすべきかなかなか解らなくなってしまう。
一方RustではResult型という返り値でエラーハンドリングするようになっていて、これは基本的に無視出来ない。無視するにはunwrap()関数を呼ぶなどする必要がある。なのであとでエラーハンドリングをちゃんとしようとしたときに、unwrap()を検索すれば、どこのエラーをハンドルすればいいかが分かりやすい。
もとからちゃんとハンドリングしてコード書ければいいが、開発の段階では書いたコードが実際にロボット上でうまく動くか確かめるために、とりあえずコードを動かしたい要求がある。一旦エラーを無視して書いたコードがあとで高品質に出来るというのがとても素晴らしい。
ロボットのコードは本質的に失敗が発生するもので、そのハンドリングはロボットの品質に直結する。

2.なれるまではコンパイルが大変=テストなくてもそれなりに動く?


Rustはコンパイル時に厳密に型チェックがあり、なかなかコンパイルが通らない。所有権という概念もなかなか慣れず、初心者はコンパイルを通すのに苦労する。
一方でこれはテストを書かなくてもそれなりに動くことが期待できるということでもある。型のない言語だとユニットテストがないと本当に動くか分からないが、Rustではコンパイル出来たコードは大抵動く。ロボット開発ではコードを動かすのにロボットへ転送したり、ロボットを充電したり、準備したり、とにかくコストがかかる。コンパイル時にエラーを出せるだけ出せればトータルコストを大きく下げることになる。
型は書くのが面倒だが、Rustは型推論があるので型を省略できることが多く、それほど苦にはならない。includeファイルがいらないから新しい型を追加するもの簡単だ。
ちなみにテストもコードと同じ場所に書くことが出来るため、テストも書きやすい。

3.並列性


ロボットではマルチプロセス、マルチスレッドは当たり前になっているが、スレッドの取扱はC++では非常に難しい。人間の理解の範疇を超えていると思う。Rustではオブジェクトの所有権が厳密に定まっているためマルチスレッドでも安全にデータアクセスしやすい。まだあまり試してないので本当に便利かは分かっていない。

4.現代的なビルドとパッケージシステム


cargoというビルドツールが標準で提供される。また、crateという外部ライブラリとの連携ツールも統合されている。crateはnpmやpipのようなものだ。現代的な言語ではあるのが当たり前となっているが、C++にはないので嬉しい。
ビルドもCMakeのよく分からないマクロと格闘したり、automakeのようや過去の遺産も必要ない。また、code styleなども公式に決まっているから、rustfmtというフォーマットツールを使えば、スタイルの統一も容易。


5.Roboticsのどのフィールドにでも使える



ロボットプログラミングというと、知能系はPythonで決まりだし、画像処理や制御はC++だし、マイコンはCだったり最近はRaspiでもPythonだったりするけど、Rustはそのどこにでも最適だと思う。
LLVMだからWebでも使えるらしいし。(つかわなけど)
ロボットのプログラムが全部Rustになったら幸せな世界ではないか。



もちろんRustはC++と同じようになんでも出来る言語をめざしているから、だめなことも出来てしまう。ただ危険なことはunsafeブロック内でしかできないので分かりやすい。

あとは個人的趣味だけど、ifが値を持つとか、最後の式がreturnされるから明示的にreturn書かなくていいとか、lambdaが書きやすいとか、元lisperには非常に馴染みやすい。マクロも強力らしい。


Rustの悪いところ


一方で悪いところも結構ある。


  1. 歴史がないのでググってもあまり情報が出てこなかったりする。また、決定的なライブラリがまだなかったりする。ただ、Webとかの人に比べて、Roboticsの人たちは自分でライブラリを作るのに慣れているからそれほど問題にならないのでは、と思う。
  2. 難しすぎる。新しい概念についていくのがつらい。仲間もなかなか増えなさそう。
  3. ツリーやグラフが書きにくい。ロボットだとわりとグラフとかツリー構造とかよく出てくるけど、Rustの所有権モデルだとtreeの表現が非常にやりづらい。ロボットモデルはTreeだし、RRTとかもろTreeだし。
  4. Mozillaが開発元っていうのがちょっと不安 (cf: Swift, Go)

私は結構気に入ったので、少しロボットの人たちに布教してみようと思う。


参考



Goとの違いを知りたい人むけ
C++との違いを知りたい人むけ

ROS Japan UG #10 勉強会

明日 5/20 14:00- 10回目となるROS勉強会が開かれます。

https://rosjp.connpass.com/event/55125/

私も一応発表します。
最近ハマっているRustというプログラミング言語の話をする予定です。

先立ってポエムじみたRustのアピール文をかいたのでこちらも読んでもらえるとうれしいです。
http://ros-robot.blogspot.jp/2017/05/rust.html

残念ながら懇親会までは行けそうにないですが、発表時間中に楽しめたらと思います。

よろしくおねがいします〜。

Twitterでは #rosjp でつぶやきまくると思うので、 #rosjp 見ておくと楽しいかも。

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よりはカッコいいのではと思います。パーカーは季節はずれ過ぎですね。


2015年12月30日水曜日

お年玉で買いたいロボット2016

2015のクリスマスに向けて書こうと思っていましたが、全く間に合いませんでした。
しかしお年玉(みなさんむしろあげる方だと思いますが・・・)には間に合いました!

今回は私が今個人的に欲しいものを紹介しますので、みなさん自分へのお年玉として買って、私に紹介してください!

Deep Learning Robot


ほとんどTurtlebot2 (Kobuki + Xtion + ROS)なんですが、NVIDIAのTegra K1を積んでいて、すぐにDeep Learningの勉強が始められるようになっています。
このAutonomousという会社、最初商社かと思ったんですけど、HP見るとどうやらメーカーで、以前kickstarterで話題になったPersonal RobotをKickstarterで成功させた(かなり楽観的なビデオでどこまでできるか怪しく、まだ発送してないが)会社です。ちょっと心配。




スマホで操作できるBB8



スターウォーズ見ましたか?なかなかおもしろかったですね。個人的にはロボット・ドロイドがあまり出てこなかったのが残念でした。今作のヒロインであるBB8のおもちゃが出てます。
知っている方も多いと思いますが、ボール型ロボットのSphero製ですので我々には馴染み深いですね。





レゴ アイデア ウォーリー




Wall-Eのレゴはかなり前からユーザによって作られていたのですが、2015年にやっと公式から発売になりました。ロボット好きにはたまらない商品ではないでしょうか。私はめっちゃ欲しいです(が、ちょっと高い!(7,000円))。
公式のLEGO ideas というところでアイデアを募集しており、人気があると公式に発売されるという仕組みから生まれました。



Raspberry Pi Zero


これはもう持っていますが紹介します。脅威の$5という価格で発売されたARM搭載のLinuxが動くボードです。A+よりスペックはむしろ高いくらいで、コストパフォーマンスが半端ないです。
現在日本で入手するにはAdafruitのセットを買うのが良さそうです。私はそこから2つ買いましたが送料も相まって10,000円近くかかりました。
Raspberry Pi自体はROSも動くはずですが、情報がindigoで止まっています。Zeroでは動くのか、誰か試してみてはどうでしょうか?
(Raspberry Pi 2 B であればUbuntuほとんどそのまま動くので簡単ですが、Zeroはコンパイルが必要と思われます。)

UP BOX



UP Plus2の後継になる3Dプリンタです。
私はUP Plus2を最近買いました。今のところ順調に動いています。
これは民生用3Dプリンタ一般に言えることだと思いますが、メンテナンスや成功率、管理方法などまだまだ製品としてはかなりレベルが低く、ユーザのスキルが求められます。しかし熟練すると非常に便利ですね。とくにRapid Prototypingとして使うには最高です。
非商用&小規模スタートアップのみですが、完全フリーで使える簡単な3DCADもようやく出てきて(私はfusion360を使っています。)CADの習熟と3Dプリンタの習熟により、作りたいものが一晩で(設計は除く・製造のみ)出来上がる世界がやってきました。
このUP BOXはその上位機種で、欲しかったんですが値段が高すぎた(300,000円)ので諦めました。




これ全部買えば確実にロボット充な一年になると思います。では良いお年を〜。

2015年12月5日土曜日

ROS解説書無料公開

日本語の解説書が九大の倉爪先生のグループから無料公開されました!


http://irvs.github.io/rosbook_jp/

自律移動や、MoveItまで詳細に解説されていますので、私もぜひ読んでみたいです。

導入部分も私の本より詳細な解説がされていますので、私の本を読んで、もっと詳しく知りたいという人にはぜひオススメしたいです。パッケージの探し方を実際のROS wikiのキャプチャー画面を示しながら解説するのはとてもいいと思いました。

ROSの精神であるオープンソースでの教科書なので、情報も正確に保てるし、すばらしいです。

2015年8月20日木曜日

Gazeboの今更な紹介とMac OSX (10.10.4) にGazebo (Version 6) をインストール

gazebo_bigGazeboはROSを作っているOSRF(Open Source Robotics Foundation)が作っているオープンソースの汎用ロボットシミュレータです。ROSと連携しているので世界中のロボット研究者たちに使われています。



公式HPは

http://gazebosim.org/

です。



特徴としては
  • 複数のシミュレーションエンジンを切り替え可能(ODE, Bullet, Simbody, DART)
  • OGREを使ったきれいなレンダリング
  • センサ、ノイズをシミュレート
  • プラグイン方式
  • コマンドラインで操作できる
  • TCP/IP経由で操作できる
などがあります。

2015/07/27にVersion6がリリースされるなど、活発に開発が行われています。
Version6では
  • Windowsのサポート(Beta)
  • Oculus2サポート
などが取り込まれました。

その歴史は古く2002年から始まったようです。

同じOSRFなので、ROSとの連携もばっちりですが、先日リリースされたROS Jade Turtleでは Gazebo5.0が使われており、さっそくバージョンがひとつ前になってしまっています。

また、Indigoでは2.2が使われており、非常に古いです。Hydroに至っては1.9であり、すでにサポートは終了しています(ROS側もサポート終了しています)。

ROSと同じところが作っているのにGazeboは
  • ROSとは違うミドルウェア( Goolgeが作ったProtobufを利用)
  • ROSとは違うロボットモデル(SDF。ROSはURDF)
  • 独自のロボットライブラリIgnitionを持つ(http://ignitionrobotics.org/)
など、独立志向が強いのが面白いところです。

少し古くなってしまいましたが、日本語ではakioさんの資料が詳しいです。
http://www.slideshare.net/akio19937/1rosrosgazebo



ではMac OSX Yosemite(Macbook pro 13inch 2015)にインストールしてみます。

http://gazebosim.org/tutorials?tut=install_on_mac&ver=6.0&cat=install

1.howbrewのインストール

私はすでにインストールしてあるのでスキップしました。
以下のコマンドで入れられます。

  1. ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2. XQuartzのインストール

MacでXWindowを使うための環境であるXQuartzが必要です。
私はすでにいれてあるのでスキップしました。

3. brewでGazeboと必要なライブラリをインストール

brew tap osrf/simulation
brew install gazebo6
gazebo

これで完了です。
コンパイルするのでしばらく時間がかかります。待ちましょう。

brewなどに慣れている人にとっては結構簡単ですね。まあ、Linuxのほうが楽ですが。
すでにOSXにROSを入れているプロの方は、Version6を入れるといろいろバージョン違いでコンフリクトするので気をつけましょう。

ここまでやってみて、おとなしくJadeに合わせてVersion5を使うのがいいと思いました。