ネイン開発メンバーブログスマートフォン用の表示で見るネイン開発メンバーブログサヨナラ、スクリーン。ヒアラブルサービスを開発している株式会社ネインの、開発ブログです2019-11-01SLAM(自己位置推定)の各種技術まとめ先月ネインに入社したJと申します。3D-CADでハード系の開発を担当しています。前々回、スガがOPEN-VSLAMの動作テストについて紹介しました。その続きの話になります。●アップルのARKITについてなぜネインでSLAMを探っているのかネインではXR(AR/MR/VRの総称)で「空気を読む」世界を作ろうとしています。https://www.pc-webzine.com/entry/2019/06/post-308.htmlARのテクノロジーは主に2つから成り立っています。1カメラ画像の平面や物体を認識し、3次元空間を作成する。2撮影している位置が、3次元空間内のどこにいるのかを把握する。これを実現する方法の一つとして、SLAMに注目をしています。SLAM」があり、vSLAMはスマホやドローンなど小さなハードウェアに利用されています。SLAMは大きく高価なものが多いので、自動車等の大きなハードウェアに利用)vSLAMはさらにいくつかの方式(PTAM、DTAM、LSD-SLAM、ORB-SLAMなど)があり、ORB-SLAMの動画でリアルタイムに地図作成と自己位置推定を行っている様子を知ることができます。3マップ生成を行います。補正することで地図精度を高めています。CLOSED"と表示され、瞬時に地図を修正しています)SLAMの歴史と特徴をまとめました。ARアプリが開発されています。Odometry)を使っていて、カメラ画像+加速度センサ+ジャイロセンサで自己位置推定を行なっています。VIOは局所的な狭い範囲でのARに焦点を置いているため、計算コストが低い利点があります。SLAMは広範囲に焦点を置いているため、精度が高い利点があります。今後open-VSLAM以外も動かして、それぞれのSLAMを比べたいと思っています。開催レポ!先日、ネイン渋谷オフィスにて「Flutterもくもく会」を開催しました!月1ペースで開催し、かれこれ3回目の開催になります。今回はリピーターの参加者さんもいて盛況に開催することができました。Flutterもくもく会を開催したきっかけネインではiOS/Androidのネイティブアプリ開発にFlutterを用いています。Flutterは新しい技術でトレンドも目まぐるしく変化します。自己紹介&きょうやることの発表まずは簡単な自己紹介と、その日に取り組むことを発表します。タイム自己紹介が終わったら、あとはもくもくと開発します。いえ、無言で開発する必要はなく、わからない点などを聞きながら開発してもOKです。今回は皆さん集中してたのか、黙々と開発していました。80分程のもくもくタイムですが、いざ取り組んでみるとあっという間に終わります。成果発表さて、もくもくのあとは簡単な成果発表をします。いちおう任意で発表ですが、みなさん発表されていました。トラブル発生して思うように進捗がなかった人、時間ギリギリで目標達成した人、様々です。私自身、今回はFlutterとfirebaseを連携する、というテーマで開発したのですが、なんとかfirebaseでユーザー認証するところまでやりきることができました!さすが両方ともGoogle製サービスとだけあって、ドキュメントが丁寧ですすめやすい印象でした。最後に簡単な懇親会をしました。今回は軽食として、お酒とピザを用意しました。・深センの工場でおばちゃんがイヤホン組み立ててる話などネインならではのネタで盛り上がりました。開催レポ!Tweet2019-10-10OPEN-VSLAMでSLAM(自己位置推定)を試してみたエンジニアのスガです。SLAMという技術を試す機会がありましたので今回はそちらを紹介します。Mappingの略で、日本語だと自己位置推定と地図作成を同時に行うことを言います。カメラやセンサーを使って取得した情報から地図を作成し、また自分がその地図のどこにいるかを推定する技術となります。身近なところではお掃除ロボットなどに活用されているそうです。OPEN-VSLAMの実行画面SLAMには位置推定の方法や使うセンサなどによっていろいろな手法が考案されています。その手法の実装方法も多く公開されているのですが、多くがLinux環境によるものでした。私の環境がWindowsでしたので、WSLという機能を利用してLinuxのUbuntu16.04の環境を構築することにしました。Linuxというwindowsの機能の1つです。いうとwindowsでアプリケーションとしてLinuxを使うようなイメージかと思います。通常WSLは有効になっていないため、有効化、インストールが必要になりますので下記を参考に進めました。https://qiita.com/Aruneko/items/c79810b0b015bebf30bb今回SLAMのWSLでの動作が公式で公開されていたOPEN-VSLAMという手法を試してみましたのでそちらを紹介いたします。公式ページは下記になります。https://github.com/xdspacelab/openvslamここでWSLという機能は、コンソールのみとなっており操作はほとんどコマンドによるものになります。いわゆる画面表示であるGUIがないため、操作には多少慣れが必要かもしれません。GUIがないと、この後の操作でカメラや地図の画像を表示することができなくなってしまうため画像を表示するときはWindowsの画面を使うように設定が必要です。今回は下記のリンクを参考にVcXsrvをインストールしました。https://www.atmarkit.co.jp/ait/articles/1812/06/news040.htmlこれでUbuntu16.04の準備ができましたので早速OPEN-VSLAMの準備を進めます。インストール手順https://openvslam.readthedocs.io/en/master/installation.html基本的には公式の手順通りに進めていけばいいのですが、インストールする際にrootユーザにしていない場合適宜sudoを頭につける必要がありました。表示するViewerがPangolinViewerとSocketViewerの2種類から選ぶようになっているのでどちらかを選択する必要があります。私はPangolinViewerを選択したのでそちらの手順で進めました。選んだViewerによって最後のBuildの引数が違うので注意が必要です。Buildができて最後の手順でヘルプが表示することができたら次のチュートリアルに移ります。チュートリアルhttps://openvslam.readthedocs.io/en/master/simple_tutorial.htmlチュートリアルもインストールと同様に順にコマンドを打っていけばOKです。video_slamコマンドを実行するとカメラの画像とマッピングの様子が表示されます。マッピングが終わったら、マッピングしていた画面の[Terminate]のボタンを押すと終了します。video_slamコマンドで地図データが生成されたので最後にrun_video_localizationコマンドを実行するとローカライズ(位置推定)が行われます。生成されたマップの上をカメラ動画に合わせて動いていることが確認できると思います。この手順で使った動画以外にもサンプルとして使える動画ファイルが同じページで公開されているのでそちらも試すことができると思います。今後は自分で撮影した映像を使って地図作成ができるか試してみたり、ほかの手法も調査していく予定です。20:42OPEN-VSLAMでSLAM(自己位置推定)を試してみたTweet2019-09-06自己紹介:スガ@ファームウェア開発はじめましてスガといいます。6月に入社したばかりなのですが、今回は私の仕事についてご紹介と自己紹介ができたらと思います。私はファームウェアの開発部門に所属しています。イヤホンのファームウェアはなにをしているか簡単に説明しますと、イヤホンのボタンを押したとき、音楽再生命令をスマートフォンに送ったり、電池が少なくなるとLEDの点滅や音でお知らせしたりなどの機能の制御を行っています。弊社のZeenyは通知を音声でお知らせするのですが、そのためにスマートフォンのアプリと通信を行っていたりしています。そんなイヤホンの中には信号処理をするDSPが内蔵しており、今はその調整が私の主な仕事です。調整内容としては、音を聞き取りやすくするようにイコライザーをかけたり,マイクの音量を調整したりなどです。入社したばかりでまだまだわからないことが多いですが、いいものを作れるように頑張っていきたいです。最後に私の自己紹介をさせていただきますと、前職では音響設備のエンジニアをしていました。会議室やホールの音響設備で建築現場の職人さんにまざりながら機器の設定や制御システムの構築などを行っていました。設備ではなく音を扱う「もの」を作りたいという思いからネインに入社し今に至ります。個人的な趣味ですが音楽が好きで、休日となるとCDショップを端から端まで歩き回って新しい音楽を探したり、ライブを見に行ったりしています。18:05自己紹介:スガ@ファームウェア開発Tweet2019-08-27メンバー紹介:エリ@iOSエンジニア初めまして、開発メンバーのエリです。今回は自己紹介と会社の雰囲気についてお話ししたいと思います。私は高校生の頃からダンスをしており、ダンスの仕事のために上京しました。ダンスの仕事を続けていましたが、ふと自分の将来について考え始めた時にもっと違う分野でも自分の可能性を広げたいと思いました。当時とても楽しかったことを思い出し、何か勉強していたことが何かにつながらないかと思い色々仕事を探していたところネインに出会いました。アプリ開発に関しては完全なる素人だったので先輩方におんぶに抱っこ状態で笑、たくさん勉強させていただき今では、いちプログラマーとして仕事を任せていただけるようになりました。これから勉強していかなくてはいけないことだらけですがより良いものを提供できるよう頑張ります!!!仕事では、たっくさん頭を使うので、社内にはいつもチョコレートなどのお菓子が常備されています。お菓子好きの私としては、とても嬉しいことです笑また、会社が渋谷ということもあり、おしゃれで美味しいご飯屋さんも流行りのタピオカ屋さんもたくさんあるので、時間がある時に近辺を散策するのもとても楽しいです。週に一回お昼はみんなで必ず一緒にご飯を食べます。小さな会社なので、全員でのコミュニケーションはとても大事です。何を食べようかみんなで考えたり、最近どこへ遊びにいったなど仕事のことを一旦抜きにして、他愛もない話をしている時間がとても楽しいです。Nainではアプリ開発にFlutterを導入しています。Nativeを普段は使っていますが、同じくクロスプラットフォーム対応のFlutterは気になる技術でした。先日Nainにて開催されたFlutterもくもく会をきっかけに、環境構築〜チュートリアルまでをやってみたので、その感想を書きたいと思います。Reloadとは、コードを編集したらその改修が即座にアプリ(シミュレーターなど)に反映される機能です。コードを変更した瞬間にコンパイルとか無しで反映されるので、開発の効率がグンとアップします。Nativeでも存在するのですが、Flutterのほうが速い印象でした。Reload:いまの画面で更新が反映される。