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