Skip to content

Akira-Al/webcface

 
 

Repository files navigation

WebCFace

C++20 release coverage
python
javascript npm

Web-based RPC & UI Library

WebSocketとMessagePackを使った、ROSのような分散型の通信ライブラリです。 クロスプラットフォームかつ複数の言語間で通信ができます。

WebブラウザーでアクセスできるUI(webcface-webui)が付属しており、ネットワーク上のPCやタブレットなどからアクセスしてWebCFaceで通信されているデータを可視化したり関数を呼び出したりできます。 また、webuiからのアクセスを想定してテキストやボタンなどの配置を指定すると簡易なUIを作成することができます。

webcface-webui

データ型を任意に定義できるROSとは違って、通信できるデータの種類が以下のように限定されています

  • pub-sub通信
    • Value : 実数 or 実数の配列
    • Text : utf-8文字列
    • View : UIレイアウト
    • Log : 時刻とログレベルつきの文字列ストリーム
  • その他
    • Func : 関数(他クライアントから引数とともに呼び出し、値を返す)

Links

Installation

Ubuntu 22.04 (amd64, arm64, armhf)

WebCFaceのReleaseswebuiのReleasestoolsのReleases からそれぞれ最新のdebパッケージをダウンロードしてインストールできます。

debパッケージはubuntu22.04でビルドしています。20.04以前のubuntuでは依存ライブラリの都合で動きません。debianはわかりません。

例 (amd64の場合)

curl -LO https://github.com/na-trium-144/webcface/releases/download/v1.1.9/webcface_1.1.9_amd64.deb
curl -LO https://github.com/na-trium-144/webcface-webui/releases/download/v1.0.10/webcface-webui_1.0.10_all.deb
curl -LO https://github.com/na-trium-144/webcface-tools/releases/download/v1.1.3/webcface-tools_1.1.3_amd64.deb
sudo apt install ./webcface*.deb
rm ./webcface*.deb

(webcface-toolsの内容と使い方についてはwebcface-toolsのReadmeを参照してください)

Homebrew (MacOS, Linux)

brew tap na-trium-144/webcface
brew install webcface webcface-webui webcface-tools

Build from source

Requirements

  • c++20に対応したコンパイラが必要です
  • テスト済みの環境
    • CMake Test (Linux GCC) (gcc-10以上)
    • CMake Test (Linux Clang) (clang-13以上)
    • CMake Test (MacOS Clang)
    • CMake Test (Windows MSVC)
    • CMake Test (Windows MinGW64 GCC)
  • webcfaceは外部ライブラリとして crow, asio, libcurl, eventpp, msgpack-cxx, spdlog, cli11 を使用します。
    • システムにインストールされてなければsubmoduleにあるソースコードをビルドしますが、eventpp, msgpack, spdlog に関してはインストールされていればそれを使用します
    • libcurlはwebsocket機能を有効にする必要があるためインストールされている場合でもソースからビルドします
    • crowは暫定的にWindowsでSegmentation faultするバグを修正したもの(na-trium-144/Crow の fix-destructor-io-service ブランチ)を使用しています
Ubuntu 20.04, 22.04
sudo apt install build-essential git cmake
sudo apt install libspdlog-dev  # optional

ubuntu20.04の場合デフォルトのコンパイラ(gcc-9)ではビルドできないのでgcc-10にする必要があります

sudo apt install gcc-10 g++-10
export CC=gcc-10
export CXX=g++-10
Homebrew (MacOS, Linux)
brew install cmake
brew install spdlog msgpack-cxx  # optional
Visual Studio
  • Visual Studio と Git for Windows をインストールし、Developer command prompt からビルドすればいいはずです
  • インストール先は/usr/localではない
MSYS2
pacman -S git mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja
pacman -S mingw-w64-x86_64-spdlog  # optional

Build

git clone https://github.com/na-trium-144/webcface
cd webcface
git submodule update --init --recursive
cmake -Bbuild
cmake --build build
sudo cmake --build build -t install
  • CMakeのオプション
    • -DWEBCFACE_SHARED=offにすると共有ライブラリではなくすべて静的ライブラリになります
    • -DWEBCFACE_EXAMPLE=onでtestをビルドします(submoduleの場合デフォルトでoff)
    • -DWEBCFACE_INSTALL=onでtergetのinstallをします(submoduleの場合デフォルトでoff)
    • -DWEBCFACE_TEST=onでtestをビルドします(デフォルトでoff)
      • テストが通らない場合テスト中の通信の待機時間を-DWEBCFACE_TEST_TIMEOUT=100などと伸ばすとうまく行く場合があります(デフォルト=10(ms))
  • このリポジトリのみでビルドしてinstallする代わりに、webcfaceを使いたいプロジェクトでこのリポジトリをsubmoduleとして追加して使うこともできます。

WebUI

  • serverを自分でビルドした場合は別途webuiを読み込ませる必要があります。
  • webuiはnode.jsを使って自分でビルドすることも可能ですが、webuiのReleases からビルド済みのtar.gzのアーカイブをダウンロードして /usr/local/share/webcface/dist として展開するのが簡単です。
  • install先が/usr/localでない場合はprefixを読み替えてください
  • installしないでbuildディレクトリから起動する場合は、このリポジトリ直下にdist/を置いてください
  • コマンドからやる場合は次のようになります
curl -LO https://github.com/na-trium-144/webcface-webui/releases/download/v1.0.10/webcface-webui_1.0.10.tar.gz
tar zxvf webcface-webui*.tar.gz
  • /usr/local に展開する場合は次のようになります
sudo rm -rf /usr/local/share/webcface
sudo mkdir /usr/local/share/webcface
sudo mv dist /usr/local/share/webcface/dist

tools

Documentation

Tutorial

License

WebCFaceと関連するプログラムはすべてMITライセンスで公開しています。詳細は LICENSE を参照してください。

WebCFace本体とtoolsが使用しているサードパーティーのライブラリのライセンスはそれぞれ以下を参照してください。

Packages

No packages published

Languages

  • C++ 93.5%
  • CMake 4.9%
  • HTML 1.1%
  • Other 0.5%