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お待ちしております。