载入中...
搜索中...
未找到
SensingPerception.h
浏览该文件的文档.
1#pragma once
2
12#include "npc_ai/NpcAi.h"
13#include "sensing/Sensing.h"
14
15#include <cmath>
16#include <cstdint>
17#include <span>
18#include <sstream>
19#include <string>
20#include <string_view>
21#include <vector>
22
23namespace eve::npc_ai {
24
36 std::uint64_t observedTick, std::uint64_t forgetAfterTicks,
37 std::string_view sense = "sensing.query") {
40 memory.sense = std::string(sense);
41 memory.observedTick = observedTick;
42 memory.forgetAfterTicks = forgetAfterTicks;
43 // score is higher-is-better (Phase 1: -distance). Map into (0,1].
44 const float confidence = 1.f / (1.f + std::exp(fact.score <= 0.f ? -fact.score : fact.score));
45 memory.confidence = confidence > 0.f ? static_cast<double>(confidence) : 0.0;
46 std::ostringstream payload;
47 payload << "{\"x\":" << fact.x << ",\"y\":" << fact.y << ",\"distance\":" << fact.distance
48 << ",\"score\":" << fact.score << ",\"scoreReason\":\"" << fact.scoreReason << "\"}";
49 memory.payloadJson = payload.str();
50 return memory;
51}
52
61[[nodiscard]] inline std::vector<PerceptionMemory> perceptionMemoriesFrom(
62 std::span<const eve::sensing::PerceptionFact> facts, std::uint64_t observedTick, std::uint64_t forgetAfterTicks,
63 std::string_view sense = "sensing.query") {
64 std::vector<PerceptionMemory> memories;
65 memories.reserve(facts.size());
66 for (const auto& fact : facts)
67 memories.push_back(perceptionMemoryFrom(fact, observedTick, forgetAfterTicks, sense));
68 return memories;
69}
70
71} // namespace eve::npc_ai
Value::Object payload
vk::UniqueDeviceMemory memory
std::vector< PerceptionMemory > perceptionMemoriesFrom(std::span< const eve::sensing::PerceptionFact > facts, std::uint64_t observedTick, std::uint64_t forgetAfterTicks, std::string_view sense="sensing.query")
Projects a sequence of sensing facts into npc_ai perception memories.
PerceptionMemory perceptionMemoryFrom(const eve::sensing::PerceptionFact &fact, std::uint64_t observedTick, std::uint64_t forgetAfterTicks, std::string_view sense="sensing.query")
Builds one PerceptionMemory from a neutral sensing fact.
One bounded, expiring item of NPC perception memory.
Definition NpcAi.h:100
Neutral perception fact projected from a ranked sensing candidate.
Definition Sensing.h:317