先週の振り返り
先週の記事では、ソフトウェア構成を考えました。今回はその構成を元に、ソフトウェアを再構築していきます。
今週の概要
先週までに考えたソフトウェア構成を元に、現在のソフトウェアを再構築していきます。つまりは、書き直しです。この記事では、毎週、または隔週で、再構築の進捗を淡々と記録していきます。
以下に、先週決めたソフトウェア構成図を示します。ただ、今後変わる可能性もあります。
進捗記録
~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
- ソフトウェア構成とコードの整理が完了した。詳細は改めてまとめる。