hotch-potch, Note to self

いろいろ作業記録

ROS2・PlanSys2 チュートリアルチャレンジ(2.1)

1.はじめに

以前の記事(ROS2・PlanSys2 チュートリアルチャレンジ(2) - hotch-potch, Note to self)の応用として、ロボットに変化する条件を与えて、プランの結果が変わることを確認してみます。

Terminal Usage — ROS2 Planning System 2 1.0.0 documentation

  • 1.はじめに
  • 2.概要
    • (1)ロボットの動きの復習
    • (2)改修後のロボットの動きの概要
  • 3.PDDLの読み解きと改修
    • (1)オリジナルのPDDLの読み解き
    • (2)PDDLの改修
      • 計算に使う場合はfunctionsに書くこと
    • (3) Knowledge(commandsファイル)の改修
  • 4.プランの実行と確認
    • プラン1回目
    • プラン2回目
    • プラン3回目
    • プラン4回目
  • 5.まとめ
続きを読む

ROS2・PlanSys2 チュートリアルチャレンジ(3)

1.はじめに

前回記事に引き続き、ROS2のPlanSys2の試行と、それに関連する気づきをまとめました。

ROS2 Planning System — ROS2 Planning System 2 1.0.0 documentation

今回は、いろいろわからないことも多いので、 ドキュメントを翻訳しつつ補足的な内容を含めながら、 チュートリアル2番目と3番目を進めていきます。

  • 1.はじめに
  • 2.The first planning package
    • 概要
    • (0)Requisites 準備
    • (1)Running the example
    • (2)Package structure
    • (3)Actions implementation
      • MoveAction
        • plansys2::ActionExecutorClient
        • PDDLファイルの内容とActionの対応
    • (4)Launcher
  • 3.Using a planning controller
    • 概要
      • (0)Requisites
      • (1)Running the example
      • (2)Patrol action performer
      • (3)Move action performer
      • (4) Mission controller
      • (5)Running the example with Nav2
  • 4.まとめ
続きを読む

ROS2・PlanSys2 チュートリアルチャレンジ(2)

1.はじめに

前回記事に引き続き、 ROS2のPlanSys2の試行と、それに関連する気づきをまとめました。

ROS2 Planning System — ROS2 Planning System 2 1.0.0 documentation

  • 1.はじめに
  • 2.plansys2_terminalの使い方
    • (1)plansys2_terminalのコマンド一覧
    • (2)plansys2_terminalの実行例・PDDLに基づいた静的モデル
      • get domain
        • launchファイルとの関係
      • get model types
      • get model actions
      • get model predicates
    • (3)plansys2_terminalの実行例・動的モデル
      • get problem
      • get plan
        • plansys2_terminalを使わず、get planを直接実行する場合
    • (4)plansys2_terminalの実行例・goal/predicateの再定義
      • 現在地から最初の場所entranceに戻る
      • バッテリー残量を低下した状態にして、kitchenに向かわせる
      • predicate の指定が不足している状態でgetplanする
      • namespace指定(プラン実行時のPDDL生成の出力先を/tmp以外にする)
        • plansys2_simple_exampleをnamespace指定する場合
  • 3.まとめ
続きを読む

ROS2・PlanSys2 チュートリアルチャレンジ(1)

1.はじめに

ROS2のPlanSys2を触る機会があったので、「Getting Started」チュートリアルを試した時の 気づきをまとめました。

ROS2 Planning System — ROS2 Planning System 2 1.0.0 documentation

  • 1.はじめに
    • ざっくりPlansys2とは
  • 2.インストール
    • 実行環境
    • インストール
  • 3.「Getting Started」チュートリアル
    • (1)準備
      • (補足)ビルド時のエラー例:
    • (2)実行
      • サンプルの立ち上げまで
      • plansys2_terminalからコマンドを実行
    • (3)もう一歩先の手順
      • knowledge情報を別のファイルから読み込み
      • GUIツール
        • rqtを使う
        • rqt_graphを使う
      • 複数のユーザが同時にROS2を使うときの混信対策
  • 4.まとめ
続きを読む

nvidia drivers for Linux, Note to self

1.はじめに

ROS開発において、Ununtu Linux & GPU & Dockerを使った環境を準備するときに、 ハマった内容について、成否関わらずメモします。

OSバージョン

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"

$ uname -a
Linux devros 6.5.0-27-generic #28~22.04.1-Ubuntu 
  • 1.はじめに
  • 2.ドライバーのインストール
    • 参考資料
    • 作業例
  • 3.DockerのGPU対応
    • 参考資料
    • インストール
    • docker起動
    • やっちゃダメな話・snap版DockerはGPU対応できません
    • お試しが起動できないとき
    • 番外編・Windows版の場合のGPU対応
  • 9.そのほかの覚え書き
    • 便利なコマンド
続きを読む

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.参考資料
続きを読む