GaitGeneration by Graph Search
読み取り中…
検索中…
一致する文字列を見つけられません
DesignLab
dead_lock_checker.cpp
[詳解]
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
#include "
dead_lock_checker.h
"
9
10
namespace
designlab
{
11
12
void
DeadLockChecker::AddNode
(
const
RobotStateNode
& node) {
13
// ノードを前から追加する
14
node_vec_.push_front(node);
15
16
// 最大保持数を超えているならばその分だけ,後ろから削除する.
17
while
(node_vec_.size() > kMaxDataNum) {
18
node_vec_.pop_back();
19
}
20
}
21
22
bool
DeadLockChecker::IsDeadLock
()
const
{
23
if
(node_vec_.size() < 1) {
24
// 比較するためのノードがないならば即終了.
25
return
false
;
26
}
27
28
auto
itr = node_vec_.begin();
// ノードの最初を指すイテレーターを取得して,
29
itr++;
// 一つ進める.
30
31
for
(
size_t
i = 0; i < kMaxDataNum; i++) {
32
if
(itr != node_vec_.end()) {
33
itr++;
34
}
35
}
36
37
// イテレーターが最後になるまでループする.
38
for
(itr; itr != node_vec_.end(); itr++) {
39
// 同じノードがあれば,動作がループしているとみなし,trueを返す.
40
if
(node_vec_.front() == (*itr)) {
41
return
true
;
42
}
43
}
44
45
return
false
;
46
}
47
48
}
// namespace designlab
designlab::DeadLockChecker::AddNode
void AddNode(const RobotStateNode &node)
ロボットが行った動作を追加する.上限数を超えたら,古いものから削除する.
Definition
dead_lock_checker.cpp:12
designlab::DeadLockChecker::IsDeadLock
bool IsDeadLock() const
直近に行った動作を比較して,ロボットが正しく動作できているか判断する.
Definition
dead_lock_checker.cpp:22
dead_lock_checker.h
designlab
Definition
abstract_dxlib_gui.cpp:18
designlab::RobotStateNode
グラフ構造のためのノード(頂点).
Definition
robot_state_node.h:39
構築:
1.9.8