aptpod Tech Blog

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

Rust+uinputでキー入力カスタマイズ ついでにdebパッケージ化する

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

aptpod Advent Calendar 2021の3日目を担当しますOTチームの大久保です。

今年はRustのエッジ製品への適用がはじまり、RustでLinuxのシステムコールを呼ぶような処理を実装するような場面が増えました。今回はその一例として、Linux上でキー入力カスタマイズをするコードをRustで実装してみます。ついでに、debパッケージにしてUbuntuにインストール、systemdのサービスとして立ち上げるまで行います。

続きを読む

デザインガイドライン制作で意識するポイント7つ

f:id:aptpod_tech-writer:20211201154613j:plain

aptpod Advent Calendar 2021  2日目の記事を担当する、コーポレート・マーケティング室、デザインチームの「チェン ・ルイ」と申します。普段は社内製品のアプリケーションのUIデザイン業務を行なっています。

現在、aptpodでは自社Webアプリケーションのデザインガイドラインを整理しております。 これまであったaptpodのWebアプリケーションにおける課題と、それに対処するためにデザインガイドラインの作成において意識したポイントについてご紹介します。

続きを読む

数字でみてみるアプトポッド

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

aptpod Advent Calendar 2021 1日目の記事です。

みなさまお久しぶりです。アプトポッドで人事をしている神前(こうさき)と申します。

前回の記事からおよそ1年半ぶりの執筆、かつAdvent Calendarの一発目を担当することになり、またもや戦慄することになったのですが宜しくお願いいたします。

f:id:aptpod_tech-writer:20211125153712p:plain
CTOからの依頼に応える、の図

さてどんなテーマで書こうかなと考えていたのですが、ちょうど3年前のAdvent Calenderに人事マネージャーの小沢が書いた組織振り返りの記事がありましたので、これを引き継ぐ形でいまのアプトポッドを数字で色々みてみることにしました。

  • 組織構成
  • 職種
  • 職種属性
  • 年齢
  • 性別
  • 居住地
  • まとめ
続きを読む

WebCodecs の VideoDecoder を使用して H.264 の動画を再生してみた

f:id:aptpod_tech-writer:20211110183537j:plain

はじめに

こんにちは。Visual M2M Data Visualizer Team の白金です。

弊社の製品の intdashでは、H.264形式の動画データを収集/計測できます。計測した動画データは、Fragmented MP4 のフォーマットを使用したライブ動画をストリーミング再生したり、計測した動画を後から確認するためにHLSのフォーマットで再生する機能があります。

今回は、ライブ動画の再生機能を改善するための施策として 先日 Google Chrome の Version 94 でリリースされた WebCodecs の機能に含まれる VideoDecoder を使用して、H.264 のライブ動画をストリーミングで再生を試してみたのでご紹介します。

  • はじめに
  • WebCodecs とは
  • VideoDecoder を使用することで解決したい課題
    • 課題 1: 欠損時の各動画フレームのタイムスタンプの判別
    • 課題 2: Google Chrome で動作する H.264 デコーダーの遅延
  • VideoDecoder の使い方
  • H.264 の動画をデコードする
    • Annex B
    • AVCDecoderConfigurationRecord
  • H.264 の動画を再生してみる
    • Server を起動する
    • 動画を再生する画面を表示する
    • 動画を送信する
  • おわりに
続きを読む

ROS2で任意のメッセージをC++ノードでブリッジする方法

f:id:aptpod-tetsu:20211001141621p:plain

Protocol/Robotics Teamの酒井 (@neko_suki) です。

以前「ROS2メッセージの遠隔リアルタイムデータ伝送を実現する新プロダクトのご紹介」という記事で開発中の intdash_ros2bridge というプロダクトを紹介しました。

今回は、前回記載したとおり、技術にフォーカスして技術的な詳細を含めた進捗をご紹介します。

intdash_ros2bridgeは、ROS2上で「任意のトピック、サービス、アクションのC++実装によるブリッジ」を実現します。ブリッジとは、ROS2空間の内部のデータからインターネット経由で伝送できるメッセージ形式への橋渡しをする処理のことを指します。

intdash_ros2bridgeによって遠隔地のROS2空間をつなぐことが可能になります。その結果ROS1と同様にROS2でも遠隔制御やモニタリングなどが実現できます。

f:id:aptpod_tech-writer:20210916170952p:plain
構成図

intdash_ros2bridgeではROSメッセージの伝送のために以下の2つの方法でブリッジを行います。

  • 効率的なメッセージ伝送のための Common Data Representation (CDR) 形式という生データに近いフォーマットへのブリッジ
  • 弊社製品のVisual M2M Data Visualizer で可視化するための、JSONへのブリッジ

今回の記事では、最初にトピック、サービス、アクションをブリッジする方法について簡単に紹介します。次に、トピックをブリッジする方法、トピックをJSONに変換して伝送する方法の2点を詳細に掘り下げて説明します。

  • ROSメッセージをブリッジする方法
  • トピックのブリッジ
    • subscribe
    • publish
  • JSONへのブリッジ
  • まとめ
  • Appendix
    • create_generic_subscriptionの実装
    • create_generic_publisherの実装
    • MessageMembers の取得方法
続きを読む