ロボット開発記録

ロボット開発の進捗や記録をするブログ

[第23週〜(随時更新)] ソフトウェアの整理 再構築 [ヒューマノイド動歩行]

先週の振り返り

 先週の記事では、ソフトウェア構成を考えました。今回はその構成を元に、ソフトウェアを再構築していきます。

odome.hatenablog.com

今週の概要

 先週までに考えたソフトウェア構成を元に、現在のソフトウェアを再構築していきます。つまりは、書き直しです。この記事では、毎週、または隔週で、再構築の進捗を淡々と記録していきます。
 以下に、先週決めたソフトウェア構成図を示します。ただ、今後変わる可能性もあります。

ソフトウェア構成

進捗記録

~2023/2/20

  • 整理用のbranch - tidy-up - を作成
     開発branch - devel - で整理をすると、結構ぐちゃぐちゃになってしまうので、整理用のbranchを作成した。そこで整理をおこなう。

  • 整理の開始
     ひとまず、現状のコードを参考に部品ごとにプログラムを分けて、別々でコードを記述することにした。現状では、以下のように分けている。

    ROS2_Walking_Pattern_Generator
    | --- TidyBox
       | --- FK.hpp:順運動学を解くプログラムのヘッダファイル
       | --- FK.cpp:順運動学を解くプログラム
       | --- IK.hpp:解析的な逆運動学を解くプログラムのヘッダファイル
       | --- IK.cpp:解析的な逆運動学を解くプログラム
       | --- Kinematics.CMakeLists:運動学のプログラムのCMakeLists.txt
       |
       | --- WalkingPatternGenerator.hpp:歩行パターンジェネレータのプログラムのヘッダファイル
       | --- WalkingPatternGenerator.cpp:歩行パターンジェネレータのプログラム
       | --- WalkingPatternGenerator.CMakeLists:歩行パターンジェネレータのプログラムのCMakeLists.txt
       |
       | --- WalkingStabilizationController.hpp:歩行安定化制御系のプログラムのヘッダファイル
       | --- WalkingStabilizationController.cpp:歩行安定化制御系のプログラム
       | --- WalkingStabilizationController.CMakeLists:歩行安定化制御系のプログラムのCMakeLists.txt
       |
       | --- WebotsRobotHandler.hpp:C++Pluginのプログラムのヘッダファイル
       | --- WebotsRobotHandler.cpp:C++Pluginのプログラム
       | --- WebotsRobotHandler.CMakeLists:C++PluginのプログラムのCMakeLists.txt
       |
       | --- Launch.py:Launchファイル(packageごとに必要なはず)
       | --- ToKinematics_msgs:Kinematicsとの通信に用いるmessage型の定義ファイル
       | --- ToCppPlugin_msgs:C++Pluginとの通信に用いるmessage型の定義ファイル
       | --- ToWalkingStabilizationController_msgs:歩行安定化制御系への通信に用いるmessage型の定義ファイル

     現状はこのように分けているが、ファイル名などをコロコロと変えるかもしれない。
     まずは上記のように分けたプログラムをそれぞれ完成させ、各プログラムの動作をテストする単体テストに移行する方針でいる。

2023/3/9

  • 新Packageの作成
     TidyBox内でのコード作成が進んできて、もうそろそろ単体テストが近づいてきたので、ソフトウェア構成案に沿って複数のPackageを生成した。以下、現段階での想定Package構成。

    root(ROS2_Walking_Pattern_Generator)
    | --- kinematics:汎用的な運動学を解くnodeを提供するpackage
    | --- include
    | --- kinematics
    | --- FK.hpp
    | --- IK.hpp
    | --- src
    | --- FK.cpp
    | --- IK.cpp
    | --- package.xml
    | --- CMakelists.txt
    |
    | --- msgs_package:message_fileの定義をするpackage
    | --- include
    | --- msgs_package
    | --- src
    | --- msg
    | --- ToWalkingStabilizationControllerMessage.msg
    | --- srv
    | --- ToKinematicsMessage.msg
    | --- ToWebotsRobotHandlerMessage.msg
    | --- package.xml
    | --- CMakelists.txt
    |
    | --- walking_pattern_generator:歩行パターンを提供するpackage
    | --- include
    | --- walking_pattern_generator
    | --- WalkingPatternGenerator_hpp
    | --- src
    | --- WalkingPatternGenerator.cpp
    | --- launch
    | --- robot_launch.py
    | --- resource
    | --- walking_pattern_generator
    | --- webots_robotis_op2_description.urdf
    | --- worlds
    | --- webots_simple_world.wbt
    | --- package.xml
    | --- CMakelists.txt
    |
    | --- walking_stabilization_controller:歩行安定化制御系を提供するpackage
    | --- include
    | --- walking_stabilization_controller
    | --- WalkingStabilizationController.hpp
    | --- src
    | --- WalkingStabilizationController.cpp
    | --- package.xml
    | --- CMakelists.txt

     基本的にこの構成を基準にいく。まだ雑多なので、徐々にきれいにしていきたい。各nodeのコード作成も進行中。ライフサイクルの機能も入れたいが、難しく理解が追いついていないので、理解ができたら構成の中に組み込んでいきたい。


  • message_fileの定義
     message_fileを定義した。今後変わる可能性はあるが、まずはビルドをしたいので、ひとまずコレでいく。

    ToKinematicsMessage.msg:KinematicsとのServiceに用いるmessage
     request
      double[6] R_target_R
      double[3] P_target_R
      double[6] Q_target_R
      double[6] R_target_L
      double[3] P_target_L
      double[6] Q_target_L
     response
      double[3] P_result_R
      double[6] Q_result_R
      double[3] P_result_L
      double[6] Q_result_L

    ToWebotsRobotHandlerMessage.msg:WebotsRobotHandlerとWalkingStabilizationControllerのServiceに用いるmessage
     request
      double[3] Accelerometer_now
      double[3] Gyro_now
      double[6] Q_now_R
      double[6] Q_now_L
     response
      double[3] Q_fix_R
      double[6] dQ_fix_R
      double[3] Q_fix_L
      double[6] dQ_fix_L

    ToWalkingStabilizationControllerMessage.msg:WalkingStabilizationControllerとWalkingPatternGeneratorのTopic通信に用いるmessage
      double[3] P_target_R
      double[6] Q_target_R
      double[6] dQ_target_R
      double[3] P_target_L
      double[6] Q_target_L
      double[6] dQ_target_L

     messageのサイズが非常に大きくなりそうだが、その影響は後々分かってくるだろう。問題があり次第、その都度修正を行う予定。

2023/3/24

  • パッケージ kinematics, msgs_package, webots_robot_handlerの完了
     以上の3つのパッケージの作成(現時点)を完了した。今回のソフトウェアの整理で目標としていたものが完成した。詳しくは、GitHubのtidy-up branchを確認していただきたい。
  • (既存のbugの修正)
     message_fileに関しても、多少の修正を加えている。errorと変更どちらもおこなった。

    今後は、各node同士の通信周りを構築して、結合テスト・全体テストに合格できれば、今回のソフトウェアの整理は完了となる。3月中には終わらせたい。

2023/4/2

  • ソフトウェア構成とコードの整理が完了した。詳細は改めてまとめる。