GaitGeneration by Graph Search
読み取り中…
検索中…
一致する文字列を見つけられません
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
10namespace designlab {
11
13 // ノードを前から追加する
14 node_vec_.push_front(node);
15
16 // 最大保持数を超えているならばその分だけ,後ろから削除する.
17 while (node_vec_.size() > kMaxDataNum) {
18 node_vec_.pop_back();
19 }
20}
21
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
void AddNode(const RobotStateNode &node)
ロボットが行った動作を追加する.上限数を超えたら,古いものから削除する.
bool IsDeadLock() const
直近に行った動作を比較して,ロボットが正しく動作できているか判断する.
グラフ構造のためのノード(頂点).