aptpod Tech Blog

株式会社アプトポッドのテクノロジーブログです

高位合成でFPGA開発!最短 1日で映像リサイズ機能を実装する

f:id:apt-k-ueno:20200107190949j:plain

aptpodでは複数のカメラをフレーム単位で同期させて映像を取得できるカメラデバイスの開発を行なっています。前日の記事では、このカメラデバイスのエンコードを担当するSoCの話でしたが、aptpod Advent Calendar 2019 13日目の今回は映像のフロントエンドに使用しているFPGAについての話題です。

カメラデバイスを開発する上で、FPGAでイメージセンサから取得した画像データをリサイズする機能を実装する必要が出てきたのですが、RTL設計経験のない私でも流行りの高位合成でサクッと実装できた話をまとめます。

前日に続き塩出が担当します。

続きを読む

AM5728 上のIVAを使ってH.264エンコードしてみた

aptpodでは、複数のCANバスのデータを時刻同期して取得できるSynchronized CAN Transceiverに続き、このデバイスと時刻同期し、かつ複数のカメラ映像をフレーム単位で同期させて録画できるカメラデバイスの開発を行なっています。

このデバイスには、TI社製のAM5728というSoC(System on a Chip)の採用を検討しています。このSoCには様々なコアが搭載されており、その中でもマルチメディア処理を担当するIVA(ハードウェアアクセラレータ)は1080p60の映像を処理できる優れものです。

aptpod Advent Calendar 2019の12日目は、このSoCを使って1920x1080 30fpsのH.264エンコードをしてみた話をハードウェアエンジニアの塩出がお届けします。

続きを読む

機械学習のシステム開発の難しさを独断でまとめてみた

aptpod Advent Calendar 2019 11日目 先日お菓子のデモの記事を投稿したキシダがまたお送りします。みなさま、ここ最近『機械学習』とか『AI』とか耳にすることが多くなってきていると思いますが、現実はどれくらいの導入率かご存知ですか?

なんと、14〜15% (※1)らしいです。
意外に導入まで成功しているプロジェクトはまだ増えてきていません。

そこで、『機械学習プロジェクトって具体的にどういうふうにすすめるの?』とか『普通のシステム開発と違って何が難しいの?』という疑問の声に勝手にお答えして、完全な独断と偏見ですが、一般的な機械学習案件に対してよくある困った事例のご紹介とそれに対して私個人が意識していることをこちらにまとめてみようかと思います。
技術的なところではなく、案件における考え方や進め方的なところを中心に掘り下げてます。

続きを読む

Rust+wasmでWebSocket上にバイナリデータ(CBOR)を流してみる

f:id:apt-k-ueno:20200107191523j:plain

この記事はAptpod Advent Calendar 2019の10日目の記事です。

先端技術調査グループの大久保です。

前回の記事では、WebSocketのechoサーバにアクセスするwasmをRustとGoで作成しました。今回は、echoだけでは物足りないので、意味のあるバイナリデータをサーバから流して、クライアント側、すなわちWebブラウザ上に表示するまでやってみます。あまり大きくないデータならJSONにして文字列を流せば良いのですが、JSONだとサイズが問題になるようなケースを想定して、JSONよりコンパクトなCBORを使ってみます。

ちなみに今回はRust作ったところで力尽きたので、対応するGoのコードは残念ながらありません。

続きを読む

IoTデバイスのスループットがサクッと上がるかも

「データが上がって来るの遅いけど、電波悪いからしょうがないな〜」なんてアッサリ諦めてないでしょうか?

そんな方に「BBRを有効にすればスループットが上がるかも!」という話を、aptpod Advent Calendar 2019の9日目ではお送りします。担当のサーバーサイドエンジニアに憧れるエンベデッドエンジニア ochiai です。

はじめに

この記事では、BBRを有効にする方法と、スループットの実測にフォーカスしています。

なので、「BBRのアルゴリズムが知りたいんだよ!」とか、「輻輳制御アルゴリズムって何なのさ?」って方は、他の資料を参考にしてください。オススメを記載しておきます。

続きを読む