GaitGeneration by Graph Search
読み取り中…
検索中…
一致する文字列を見つけられません
simulation_setting_record.h
[詳解]
1
3
4// Copyright(c) 2023-2025 Design Engineering Laboratory, Saitama University
5// Released under the MIT license
6// https://opensource.org/licenses/mit-license.php
7
8#ifndef DESIGNLAB_SIMULATION_SETTING_RECORD_H_
9#define DESIGNLAB_SIMULATION_SETTING_RECORD_H_
10
11#include <format>
12#include <string>
13#include <vector>
14
15#include "hexapod_next_move.h"
16#include "math_euler.h"
17#include "math_vector3.h"
18#include "string_util.h"
20
21
22namespace designlab::enums
23{
24
25enum class MapCreateMode : int
26{
29};
30
31enum class RobotOperateMode : int
32{
34 kFixed,
36};
37
38enum class SimulationEndCheckMode : int
39{
40 kGoalTape,
41 kPosture,
42 kPosition,
43};
44
45} // namespace designlab::enums
46
47
48namespace designlab
49{
50
52{
54
55 std::string simulation_map_param_file_name{ "simulation_map.toml" };
56
57 std::string map_file_name{ "map_state.csv" };
58
59
61
62 float goal_tape_position_x{ 1200.0f };
63
64 EulerXYZ target_posture{ 0.f, 0.f, 0.f };
65
67
68 Vector3 target_position{ 0.f, 0.f, 0.f };
69
71
72
74
75 std::string fixed_operate_file_name{ "robot_operator.toml" };
76
77 std::vector<Vector3> path_points{ {0, 0, 0}, { 1000, 0, 0 } };
78
79
80 Vector3 initial_positions{ 0.f, 0.f, 30.f };
81
82 EulerXYZ initial_posture{ 0.f, 0.f, 0.f };
83
85};
86
87
89{
90 using enum enums::MapCreateMode;
91 using enum enums::RobotOperateMode;
93 using enum HexapodMove;
94
96 "シミュレーションを行う際の設定はこのファイルで設定します.");
97
99 "Map", "マップについての設定です.",
100 "EndChecker", "終了条件についての設定です.",
101 "RobotOperator", "ロボットの操作方法の設定です.");
102
103 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(map_create_mode, "Map",
104 std::format("マップの作成方法を設定します.( \"{}\" )",
106 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(simulation_map_param_file_name, "Map",
107 std::format("マップの作成方法がシミュレーション専用マップを出力するモード"
108 " ( {} ) の場合,マップのパラメータを記述した toml ファイルの名前を設定します.",
109 string_util::EnumToStringRemoveTopK(kForSimulation)));
111 std::format("マップの作成方法がファイルから読み込むモード ( {} ) の場合,"
112 "マップの csvファイルの名前を設定します.",
114
115 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(end_check_mode, "EndChecker",
116 std::format("どのような方法で終了させるかを設定します.( \"{}\" )",
118 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(goal_tape_position_x, "EndChecker",
119 std::format("終了条件がゴールテープに到達したか ( {} ) の場合,"
120 "ゴールテープのx座標を設定します.[mm]",
122 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(target_posture, "EndChecker",
123 std::format("終了条件が目標姿勢となったか ( {} ) の場合,"
124 "目標の姿勢(xyzオイラー角)を設定します.[deg]",
126 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(target_posture_allowable_error_deg, "EndChecker",
127 std::format("終了条件が目標姿勢となったか ( {} ) の場合,"
128 "目標の姿勢の角度の許容誤差を設定します.[deg]",
130 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(target_position, "EndChecker",
131 std::format("終了条件が目的の座標に到達したか ( {} ) の場合,"
132 "目標の座標を設定します.[mm]",
134 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(target_position_allowable_error, "EndChecker",
135 std::format("終了条件が目的の座標に到達したか ( {} ) の場合,"
136 "目標の座標の許容誤差を設定します.[mm]",
138
139 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(operate_mode, "RobotOperator",
140 std::format("ロボットの操作方法を設定します.( \"{}\" )",
142 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(fixed_operate_file_name, "RobotOperator",
143 std::format("ロボットの操作方法が固定 ( {} ) の場合,"
144 "その操作方法を指定するファイルを設定します.",
146 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(path_points, "RobotOperator",
147 std::format("ロボットの操作方法がパス ( {} ) の場合,そのパスを設定します.",
149
150 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(initial_positions, "Initial",
151 "シミュレーション開始時のロボットの位置を設定します.[mm]."
152 "地面にめり込んでいる場合には機能しないため,注意すること.");
153 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(initial_posture, "Initial",
154 "シミュレーション開始時のロボットの姿勢を設定します.[deg]."
155 "地面にめり込んでいる場合には機能しないため,注意すること.");
156 DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(initial_move, "Initial",
157 std::format("シミュレーション開始時のロボットの歩容を設定します.( \"{}\" )",
159};
160
161} // namespace designlab
162
163
166 map_create_mode, simulation_map_param_file_name, map_file_name,
167 end_check_mode, goal_tape_position_x, target_posture, target_posture_allowable_error_deg,
168 target_position, target_position_allowable_error,
169 operate_mode, fixed_operate_file_name, path_points,
170 initial_positions, initial_move, initial_posture);
171
172#endif // DESIGNLAB_SIMULATION_SETTING_RECORD_H_
@ kPosture
姿勢が一定の範囲内に収まっているかどうか.
@ kGoalTape
ゴールテープに到達したかどうか.
@ kPosition
目的の座標に到達したかどうか.
std::string EnumToStringRemoveTopK(const T &enum_value)
enumを文字列に変換する関数. Google C++ coding style だと enumの要素は 先頭にkをつけてキャメルケースで書くことが推奨されている. 例えば,
Definition string_util.h:54
std::string EnumValuesToString(const std::string separator)
enum型を渡すと,その要素を列挙した文字列を返す関数.
Definition string_util.h:75
HexapodMove
ロボットが次にどの動作をするのかを表す列挙体.
@ kComMove
重心の平行移動.Center Of Massで重心のこと.
XYZオイラー角を用いた回転を表す構造体.
Definition math_euler.h:33
enums::SimulationEndCheckMode end_check_mode
3次元の位置ベクトルを表す構造体.
#define DESIGNLAB_TOML11_SERIALIZE(NAME,...)
tomlファイルのシリアライズ/デシリアライズを行うためのマクロ. TOML11_DEFINE_CONVERSION_NON_INTRUSIVEをラッパしたもの. もともとのほうでは enum型...
#define DESIGNLAB_TOML11_DESCRIPTION_CLASS(CLASS)
tomlファイルに説明を追加するためのクラスの宣言を行うためのマクロ.
#define DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(VARIABLE, TABLE, DESCRIPTION)
tomlファイルに変数とファイルの説明を追加するためのマクロ.
#define DESIGNLAB_TOML11_TABLE_ADD_DESCRIPTION(...)
tomlファイルにテーブルの説明を追加するためのマクロ. DESIGNLAB_TOML11_DESCRIPTION_CLASS内に必ず記述する必要がある.
#define DESIGNLAB_TOML11_FILE_ADD_DESCRIPTION(DESCRIPTION)
tomlファイルにファイルの説明を追加するためのマクロ. DESIGNLAB_TOML11_DESCRIPTION_CLASS内に必ず記述する必要がある.