<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Software :: Eat, Sleep, Hack...</title>
    <link>https://teamknox.com/tech/robotics/robocar/software/index.html</link>
    <description>制御アーキテクチャ システム全体図は以下のとおりになる。オペレータは手持ちのPC(WinMax2)やuConsole + GameController&#39;のWeb画面でTriClopsを操縦する。このTriClopsをWebから制御する基盤として、**Mimeguri(三囲)** - Yet Another Mobile AI Robotics Infrastructure`を開発した。&#xA;Webブラウザで動作するアプリケーションの分類をWebアプリと言うなら、Mimeguriは間違いなくWebアプリの基盤である。そう、オンプレサーバでのWebアプリ開発だ。ただし、いつものWebアプリ開発と違うのは、実現にあたってセンサを始めとしたデバイスやロボティクスの知識や経験が必要になることだ。&#xA;ソフトウェアの構成(Webアプリ成分とデバイス成分) TriClopsを構成しているソフトウェア群を解説する。TriClopsの中核となるデバイスはラズベリーパイ(以下、ラズパイ)４である、物凄くナリは小さいけど、Linuxのオンプレサーバなのである。なのでソフトウェアの開発はサーバ上でおこなう。つまり、Linuxシステムとして開発環境に利用するわけだ。&#xA;Webアプリ開発&#xA;通常のWebアプリ開発で行っている設定を施す、老害はsshのサーバを入れたり、sambaを入れたりしている。これでオンプレサーバ(ラズパイ４)にログインする。これで、後述のデバイス開発に進める。サーバらしく、httpのサーバも立てて、外部から疎通確認を行っておくことも忘れないように。&#xA;デバイス開発&#xA;オンプレサーバに様々なデバイスが接続されている状態である。デバイス単体での疎通確認をおこなう。提供者からのドライバをインストールし、デバイスファイルとして確認できるか？サンプルコードをpythonやC/C++などから実行し、所望の結果になるかなどの単体確認をおこなう&#xA;Webからのデバイス制御の定石 ここがわかると、一気に分かるチョークポイントのような技術的なポイントがある。</description>
    <generator>Hugo</generator>
    <language>ja-jp</language>
    <atom:link href="https://teamknox.com/tech/robotics/robocar/software/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ROCK</title>
      <link>https://teamknox.com/tech/robotics/robocar/software/rock/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://teamknox.com/tech/robotics/robocar/software/rock/index.html</guid>
      <description>ROCKのコンセプト ROCKはRover/RoboCar Open Console Kitの略称である。TriClopsの持つリソースを余すことなく使えるようにしたWebアプリの実装である。基本的なコンセプトは、RoboCarが持つ、各種のデバイスをWebアプリで網羅的に扱うにはどうすればいいか？の一つの答えだ。&#xA;ROCK前夜 老害が、Webアプリを最初に始めた時、Webと言うかHTMLと言うか、この辺りには元々Responsiveみがあるようなないような、そんな気がした。ROCKの画面を単一画面で構成しようとし、tableで区切ろうとするも、内容物で大きさが変わってしまう。その動きに随分と悩まされた…&#xA;ROCKの仕組み 上記の問題点を克服するためにサイズを固定した。単位として、600x300ピクセルのパネルを定義する。そのパネルにセンサやアクチュエータなどのデバイスが持つ機能を一つずつ割り当てる。これによりデバイスの動きとそれに伴う画面構成をカプセル化するわけだ。画面構成する時はそれを組み合わせる。パネルはデバイスの数だけあるので、システムを構成する時は、適宜パネルを取捨選択する。&#xA;パネル&#xA;パネルのサイズは基本的には600x300ピクセルだが、カメラは1200x600となる。代表的なパネル例を以下に示す。&#xA;CPUステータス 環境系 赤外線リモコン CPU負荷/RAM容量/温度/電池残量 室温/湿度/気圧 irMagician制御 ファイル構成&#xA;ROCKでは一つのペインで以下の３個のファイルを使う。処理の規模に応じて、javascriptのファイルは増えることがある。 拡張子 役割 xxx.html 画面構成、一般的なWebでのレイアウトや要素を定義する xxx.css カスケードスタイルシート、Web要素のスタイルなどを定義する xxx.js javascriptファイル、そのページに動作が必要な時に用いる サーバ連携&#xA;サーバの実装は大きく分けて２種類ある。&#xA;配信&#xA;ラズパイからの配信としてのサーバ、この用途にはexpressを使う。&#xA;デバイスハンドリング&#xA;Web内で完結できない処理の場合(ROCKはデバイスを扱っているために大抵はこの場合だ)は、デバイスに対応したスクリプトを呼び出すためのhttpサーバやWebソケットのサーバを設定する。デバイスハンドラがpythonで書かれている場合はflaskが相性がいいし、Webソケットを使う場合は、上記のexpressの配信サーバに同居させることもある。 ROCKのPros/Cons Pros&#xA;まずはProsから見てみよう。まず、網羅性が挙げられる。必要な情報を取捨選択出来るのは、複数のデバイスを取り扱う場合に強みとなる。カプセル化により独立性が高くなり、一枚からでも動作可能だ。Webアプリのため、実行環境を選ばない。PCはもちろんだが、iPadやアンドロイドのゲームコンソールでも動作が可能だ。&#xA;Cons&#xA;Consは、そのDASH Board的な構造にある。どうしても大画面が必要になる(FHD:1920x1080以上を推奨)。全てのデバイスの情報を同一の面積で扱うので重要性の強弱を付けにくくなる。画面サイズが物理的に小さいデバイスだと取り扱いしにくい。</description>
    </item>
    <item>
      <title>RVCS</title>
      <link>https://teamknox.com/tech/robotics/robocar/software/rvcs/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://teamknox.com/tech/robotics/robocar/software/rvcs/index.html</guid>
      <description>uConsole システム全景 TriClops ゲームコントローラ付き uConsole+TriClops デフォルメ 概要 RVCSはRover/RoboCar Vision and Control Systemの略称のWebアプリで、uConsoleに特化したTriClopsの操作システムである。&#xA;開発の動機 老害の思い込みであるが、 uConsoleにゲームコントローラを付けると妙に座りが良くて、手にしっくり来る、操作しやすそうだし、何より形状がTriClopsにマッチしている。&#xA;ただ、ROCKを実行するとカメラの画面が小さくなるのと、物理的に小さいデバイスなので全体的に小さくなり使い勝手が悪くなる。特にuConsoleの場合は、解像度が1280x720ピクセルであり、ROCKの要求スペック(FHD:1920x1080以上)に達していない。このため専用のアプリを開発する必要がある。&#xA;専用Webアプリ 専用アプリを開発するに当たり、TriClopsに搭載されているセンサやアクチュエータを動作させるためのUIを実装した。&#xA;本体操縦&#xA;カメラ画像&#xA;赤外線リモコン&#xA;IMU&#xA;GNSS&#xA;環境&#xA;CPU状態&#xA;このカメラ画像の視点は正にFPS(Fist Person Shooting)であり、PCゲームの王道である。市場にはお手本になるゲームがたくさんあり、そこからのインスパイアも受けている。&#xA;実行方法 準備&#xA;uConsoleと外付けゲームコントローラの接続&#xA;uConsoleには元々、ゲームコントローラが内蔵されているので、それを最初に認識させる。ここで1になっているかどうか。 外付けゲームコントローラをB+Power (Wireless controller) あるいは　RB+Power (XBox)で、ペアリングをおこなう ここで再び確認、外付けゲームコントローラが2になっているか？&#xA;サーバの起動&#xA;カメラサーバとデバイスサーバを起動する&#xA;⇒uConsoleでターミナルを立ち上げ、以下のコマンドを実行する</description>
    </item>
    <item>
      <title>Server</title>
      <link>https://teamknox.com/tech/robotics/robocar/software/server/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://teamknox.com/tech/robotics/robocar/software/server/index.html</guid>
      <description>　三囲（Mimeguri）を動作させるためには、サーバの起動が必要になる。以下に、サーバの種類と起動／停止について解説する。&#xA;サーバには大きく分けて、カメラサーバとデバイスサーバがある。それぞれについての起動と停止は下記になる。&#xA;サーバの起動 サーバの起動順も含めて、下記のとおりに起動する。&#xA;カメラサーバの起動&#xA;新規のターミナルを開いて、以下を貼り付ける rock or rvcs&#xA;~/Documents/code/javascript/rvcs/start_picameraRVCS.sh カメラサーバの終了&#xA;CTRL-Cにて終了&#xA;デバイスサーバの起動&#xA;新規のターミナルを開いて、以下を貼り付ける rock or rvcs&#xA;~/Documents/code/javascript/rvcs/_start_RVCS_servers.sh デバイスサーバの終了&#xA;起動したターミナルから、以下を入力する rock or rvcs&#xA;~/Documents/code/javascript/rvcs/kill-node-confirm.sh 確認が出るので、yを押下して終了</description>
    </item>
  </channel>
</rss>