hotch-potch, Note to self

いろいろ作業記録

Elixirでステートマシンをつくる ~ gen_statem

1.はじめに

産業機械をPLCなどを使って制御する際に、 ラダーやST言語などを使って、シーケンスプログラムを書きます。

Elixir言語でシーケンスプログラム=ステートマシンを実現したい場合に、何か便利な仕組みがないか探していたところ、erlanggen_statemという仕組みを見つけました。

まずはgen_statemで、どんなことができるかを試行してみました。

  • 1.はじめに
  • 2.まずはお手本~ATMでお金を引き出す装置の例
    • (1)考え方
    • (2)ソースコードの準備
    • (3)サンプルの試行
      • 正常な手順
      • 異常な手順
  • 3.読み解きと理解
    • (1)現在のステートを保持する仕組み
    • (2)コールバック関数名が、現在のステートと同じ名前になる
      • API側の実装の抜粋
      • コールバック関数の実装の抜粋
  • 4.先ほどのコードを、非同期castに書き換え
  • 5.特定の処理にタイムアウトを加える
  • A.参考資料
続きを読む

Elixirでロボット「カチャカ」とgRPC通信

1.はじめに

 自律移動ロボット「カチャカ」との通信にgRPCが使えるので、Elixirからの通信を試してみました。

kachaka.life

 今のところ、カチャカのステータスを取得するところまでできました。運転命令を送るところができていないので、次回の課題です。

  • 1.はじめに
  • 2.準備
    • (1)protobuf-elixirをインストール
  • 2.サンプルコード
  • 3.実行例
  • 4.参考
続きを読む

ロボット「カチャカ」をリモートPCのPythonから操作

1.はじめに

 自律移動ロボット「カチャカ」に触る機会*1があったので、 カチャカと同じネットワークにあるLinux PC (Ubuntu 22.04) のPythonから、カチャカに指令を出す手順をまとめました。

kachaka.life

  • 1.はじめに
  • 2.プログラムの準備
    • (1)カチャカ本体の設定
    • (2)Linux PCの準備
  • 3.プログラムの試行
    • (1)Pythonからカチャカに指令できること
    • (2)しゃべらせてみる
    • (2)登録した場所に移動する
    • (3)家具を運んで片付ける
  • 参考資料
続きを読む

VSCode を 64bit版Raspberry Pi OS, Ubuntu Linux にインストール

はじめに

Raspberry Pi OSや、Raspberry PiUbuntuなどARM64版のOSで、VSCodeをインストールします。

インストール

ダウンロードツールとしてcurlをインストールします。

$ sudo apt install curl

GPGキーをダウンロードします。

$ cd ~/Download

$ curl -L https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /usr/share/keyrings/microsoft-archive-keyring.gpg >/dev/null

VSCodeリポジトリを追加します。 アーキテクチャarm64とします。

$ echo "deb [arch=arm64 signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/repos/vscode stable main" | sudo tee  /etc/apt/sources.list.d/vscode.list

VSCodeをインストールします。

$ sudo apt update && sudo apt install code

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  code
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
88.4 MB のアーカイブを取得する必要があります。
この操作後に追加で 377 MB のディスク容量が消費されます。
取得:1 https://packages.microsoft.com/repos/vscode stable/main arm64 code arm64 1.82.0-1694038208 [88.4 MB]
88.4 MB を 14秒 で取得しました (6,110 kB/s)
・・・
desktop-file-utils (0.24-1ubuntu3) のトリガを処理しています ...

参考

起動エラー対策・ERROR: not connected to the gnome-3-38-2004 content interface

はじめに

Ubuntu Linux 22.04を使っていて、最近('23/9/8)のアップデート後にFirefoxが起動しなくなりました。

コマンドラインから立ち上げると、下記のエラーが出ます。

$ firefox
ERROR: not connected to the gnome-3-38-2004 content interface.

処置

firefoxをインストールし直します。

$ sudo snap remove firefox 
firefox removed

$ sudo snap install firefox 
firefox 117.0-2 from Mozilla✓ installed

注意

firefoxのプロファイルの引き継ぎはできなさそうです。

$ ll ~/snap/firefox
合計 27632
drwxr-xr-x 4 zxcv zxcv     4096  99 08:42 ./
drwx------ 6 zxcv zxcv     4096  316 23:28 ../
drwxr-xr-x 4 zxcv zxcv     4096  99 08:37 3068/
drwxr-xr-x 4 zxcv zxcv     4096  99 08:37 common/
lrwxrwxrwx 1 zxcv zxcv        4  99 08:42 current -> 3068/

直前まで入っていたfirefoxのプロファイルは、commonの方のようですが、シンボリックリンクcurrent -> 3068/の向け先をcommonに書き変えても、また向け先が元に戻ってしまいます。