CARLA
 
载入中...
搜索中...
未找到
Public 成员函数 | Private 成员函数 | Private 属性 | 所有成员列表
carla::nav::Navigation类 参考

管理行人导航,使用 Recast & Detour 库进行低层计算。 更多...

#include <Navigation.h>

+ 类 carla::nav::Navigation 继承关系图:
+ carla::nav::Navigation 的协作图:

Public 成员函数

bool AddOrUpdateVehicle (VehicleCollisionInfo &vehicle)
 在人群中创造一辆新的车辆,让行人避开 更多...
 
bool AddWalker (ActorId id, carla::geom::Location from)
 创建新的行人 更多...
 
void CreateCrowd (void)
 创建人群对象 更多...
 
bool GetAgentRoute (ActorId id, carla::geom::Location from, carla::geom::Location to, std::vector< carla::geom::Location > &path, std::vector< unsigned char > &area)
 
dtCrowd * GetCrowd ()
 
double GetDeltaSeconds ()
 返回最后增量秒数 更多...
 
bool GetPath (carla::geom::Location from, carla::geom::Location to, dtQueryFilter *filter, std::vector< carla::geom::Location > &path, std::vector< unsigned char > &area)
 返回从一个位置到另一个位置的路径点 更多...
 
bool GetRandomLocation (carla::geom::Location &location, dtQueryFilter *filter=nullptr) const
 获取导航的随机位置 更多...
 
bool GetWalkerPosition (ActorId id, carla::geom::Location &location)
 获取行人的当前位置 更多...
 
float GetWalkerSpeed (ActorId id)
 获取步行人速度 更多...
 
bool GetWalkerTransform (ActorId id, carla::geom::Transform &trans)
 获取步行人当前变换 更多...
 
bool HasVehicleNear (ActorId id, float distance, carla::geom::Location direction)
 如果代理在附近有车辆(作为邻居),则返回 更多...
 
bool IsWalkerAlive (ActorId id, bool &alive)
 如果行人代理被车辆撞死,则返回 更多...
 
bool Load (const std::string &filename)
 从磁盘中加载导航数据 更多...
 
bool Load (std::vector< uint8_t > content)
 从内存中加载导航数据 更多...
 
 Navigation ()
 
void PauseAgent (ActorId id, bool pause)
 将人群中的代理设置为暂停 更多...
 
bool RemoveAgent (ActorId id)
 移除代理 更多...
 
void SetPedestriansCrossFactor (float percentage)
 设置行人代理在路径跟随过程中穿过马路的概率 更多...
 
void SetSeed (unsigned int seed)
 设置随机数种子 更多...
 
void SetSimulator (std::weak_ptr< carla::client::detail::Simulator > simulator)
 引用模拟器来访问API函数 更多...
 
bool SetWalkerDirectTarget (ActorId id, carla::geom::Location to)
 
bool SetWalkerDirectTargetIndex (int index, carla::geom::Location to)
 
bool SetWalkerLookAt (ActorId id, carla::geom::Location location)
 让代理查看某个位置 更多...
 
bool SetWalkerMaxSpeed (ActorId id, float max_speed)
 设置新的最大速度 更多...
 
bool SetWalkerTarget (ActorId id, carla::geom::Location to)
 设置新的目标点以通过有事件的路线 更多...
 
void UpdateCrowd (const client::detail::EpisodeState &state)
 更新人群中的所有步行者 更多...
 
bool UpdateVehicles (std::vector< VehicleCollisionInfo > vehicles)
 在人群中添加/更新/删除车辆 更多...
 
 ~Navigation ()
 

Private 成员函数

void SetAgentFilter (int agent_index, int filter_index)
 为代理分配过滤索引 更多...
 
- Private 成员函数 继承自 carla::NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
NonCopyableoperator= (NonCopyable &&)=delete
 

Private 属性

std::vector< uint8_t > _binary_mesh
 
dtCrowd * _crowd { nullptr }
 crowd 更多...
 
double _delta_seconds { 0.0 }
 
std::unordered_map< int, ActorId_mapped_by_index
 
std::unordered_map< ActorId, int > _mapped_vehicles_id
 
std::unordered_map< ActorId, int > _mapped_walkers_id
 mapping Id 更多...
 
std::mutex _mutex
 
dtNavMesh * _nav_mesh { nullptr }
 网格 更多...
 
dtNavMeshQuery * _nav_query { nullptr }
 
float _probability_crossing { 0.0f }
 
bool _ready { false }
 
std::weak_ptr< carla::client::detail::Simulator_simulator
 
double _time_to_unblock { 0.0 }
 
WalkerManager _walker_manager
 行人管理器负责带事件的路线规划 更多...
 
std::unordered_map< int, carla::geom::Vector3D_walkers_blocked_position
 每隔一段时间保存每个参与者的位置,并检查是否有参与者被阻挡 更多...
 
std::unordered_map< ActorId, float > _yaw_walkers
 存储上一个节拍的行人偏航角 更多...
 

详细描述

管理行人导航,使用 Recast & Detour 库进行低层计算。

该类从服务器获取地图的二进制内容,这是查找路径所必需的。然后,这个类可以添加或删除行人,并为每个行人设置目标步行点。

在文件 Navigation.h86 行定义.

构造及析构函数说明

◆ Navigation()

carla::nav::Navigation::Navigation ( )

在文件 Navigation.cpp50 行定义.

引用了 _walker_manager , 以及 carla::nav::WalkerManager::SetNav().

+ 函数调用图:

◆ ~Navigation()

carla::nav::Navigation::~Navigation ( )

成员函数说明

◆ AddOrUpdateVehicle()

bool carla::nav::Navigation::AddOrUpdateVehicle ( VehicleCollisionInfo vehicle)

在人群中创造一辆新的车辆,让行人避开

在文件 Navigation.cpp563 行定义.

引用了 _crowd, _mapped_by_index, _mapped_vehicles_id, _mutex, _ready, carla::nav::AGENT_HEIGHT, carla::nav::VehicleCollisionInfo::bounding, DEBUG_ASSERT, carla::nav::DT_CROWD_SEPARATION, carla::geom::BoundingBox::extent, carla::nav::VehicleCollisionInfo::id, carla::geom::Transform::location, carla::logging::log(), carla::geom::Transform::rotation, carla::nav::VehicleCollisionInfo::transform, carla::geom::Vector3D::x, carla::geom::Vector3D::y, carla::geom::Rotation::yaw , 以及 carla::geom::Vector3D::z.

被这些函数引用 UpdateVehicles().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ AddWalker()

bool carla::nav::Navigation::AddWalker ( ActorId  id,
carla::geom::Location  from 
)

创建新的行人

在文件 Navigation.cpp503 行定义.

引用了 _crowd, _mapped_by_index, _mapped_walkers_id, _mutex, _probability_crossing, _ready, _walker_manager, _yaw_walkers, carla::nav::WalkerManager::AddWalker(), carla::nav::AGENT_HEIGHT, carla::nav::AGENT_RADIUS, DEBUG_ASSERT, carla::nav::DT_CROWD_ANTICIPATE_TURNS, carla::nav::DT_CROWD_OBSTACLE_AVOIDANCE, carla::nav::DT_CROWD_SEPARATION, carla::nav::frand(), carla::geom::Vector3D::x, carla::geom::Vector3D::y , 以及 carla::geom::Vector3D::z.

被这些函数引用 carla::client::detail::WalkerNavigation::AddWalker().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ CreateCrowd()

void carla::nav::Navigation::CreateCrowd ( void  )

创建人群对象

在文件 Navigation.cpp220 行定义.

引用了 _crowd, _nav_mesh, _ready, carla::nav::AGENT_RADIUS, carla::nav::AREA_GRASS_COST, carla::nav::AREA_ROAD_COST, carla::nav::CARLA_AREA_GRASS, carla::nav::CARLA_AREA_ROAD, carla::nav::CARLA_TYPE_NONE, carla::nav::CARLA_TYPE_ROAD, carla::nav::CARLA_TYPE_WALKABLE, DEBUG_ASSERT, carla::logging::log() , 以及 carla::nav::MAX_AGENTS.

被这些函数引用 Load().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ GetAgentRoute()

bool carla::nav::Navigation::GetAgentRoute ( ActorId  id,
carla::geom::Location  from,
carla::geom::Location  to,
std::vector< carla::geom::Location > &  path,
std::vector< unsigned char > &  area 
)

在文件 Navigation.cpp393 行定义.

引用了 _crowd, _mapped_walkers_id, _mutex, _nav_mesh, _nav_query, _ready, DEBUG_ASSERT, carla::nav::MAX_POLYS, carla::geom::Vector3D::x, carla::geom::Vector3D::y , 以及 carla::geom::Vector3D::z.

被这些函数引用 carla::nav::WalkerManager::SetWalkerRoute().

+ 这是这个函数的调用关系图:

◆ GetCrowd()

dtCrowd * carla::nav::Navigation::GetCrowd ( )
inline

在文件 Navigation.h181 行定义.

引用了 _crowd.

被这些函数引用 carla::client::detail::WalkerNavigation::UpdateVehiclesInCrowd().

+ 这是这个函数的调用关系图:

◆ GetDeltaSeconds()

double carla::nav::Navigation::GetDeltaSeconds ( )
inline

返回最后增量秒数

在文件 Navigation.h184 行定义.

引用了 _delta_seconds.

◆ GetPath()

bool carla::nav::Navigation::GetPath ( carla::geom::Location  from,
carla::geom::Location  to,
dtQueryFilter *  filter,
std::vector< carla::geom::Location > &  path,
std::vector< unsigned char > &  area 
)

◆ GetRandomLocation()

bool carla::nav::Navigation::GetRandomLocation ( carla::geom::Location location,
dtQueryFilter *  filter = nullptr 
) const

获取导航的随机位置

在文件 Navigation.cpp1091 行定义.

引用了 _mutex, _nav_query, _ready, carla::nav::CARLA_TYPE_NONE, carla::nav::CARLA_TYPE_SIDEWALK, DEBUG_ASSERT, carla::nav::frand(), carla::geom::Vector3D::x, carla::geom::Vector3D::y , 以及 carla::geom::Vector3D::z.

被这些函数引用 carla::client::detail::WalkerNavigation::GetRandomLocation(), carla::nav::WalkerManager::SetWalkerRoute() , 以及 UpdateCrowd().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ GetWalkerPosition()

bool carla::nav::Navigation::GetWalkerPosition ( ActorId  id,
carla::geom::Location location 
)

获取行人的当前位置

在文件 Navigation.cpp1016 行定义.

引用了 _crowd, _mapped_walkers_id, _mutex, _ready, DEBUG_ASSERT, carla::geom::Vector3D::x, carla::geom::Vector3D::y , 以及 carla::geom::Vector3D::z.

被这些函数引用 carla::nav::WalkerEventVisitor::operator()(), carla::nav::WalkerManager::SetWalkerRoute() , 以及 carla::nav::WalkerManager::Update().

+ 这是这个函数的调用关系图:

◆ GetWalkerSpeed()

float carla::nav::Navigation::GetWalkerSpeed ( ActorId  id)

获取步行人速度

在文件 Navigation.cpp1057 行定义.

引用了 _crowd, _mapped_walkers_id, _mutex, _ready , 以及 DEBUG_ASSERT.

被这些函数引用 carla::client::detail::WalkerNavigation::Tick().

+ 这是这个函数的调用关系图:

◆ GetWalkerTransform()

bool carla::nav::Navigation::GetWalkerTransform ( ActorId  id,
carla::geom::Transform trans 
)

获取步行人当前变换

在文件 Navigation.cpp952 行定义.

引用了 _crowd, _delta_seconds, _mapped_walkers_id, _mutex, _ready, _yaw_walkers, DEBUG_ASSERT, carla::geom::Transform::location, min(), carla::geom::Transform::rotation, carla::geom::Vector3D::x, carla::geom::Vector3D::y, carla::geom::Rotation::yaw , 以及 carla::geom::Vector3D::z.

被这些函数引用 carla::client::detail::WalkerNavigation::Tick().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ HasVehicleNear()

bool carla::nav::Navigation::HasVehicleNear ( ActorId  id,
float  distance,
carla::geom::Location  direction 
)

如果代理在附近有车辆(作为邻居),则返回

在文件 Navigation.cpp1185 行定义.

引用了 _crowd, _mapped_vehicles_id, _mapped_walkers_id, _mutex, carla::geom::Vector3D::x, carla::geom::Vector3D::y , 以及 carla::geom::Vector3D::z.

被这些函数引用 carla::nav::WalkerEventVisitor::operator()().

+ 这是这个函数的调用关系图:

◆ IsWalkerAlive()

bool carla::nav::Navigation::IsWalkerAlive ( ActorId  id,
bool &  alive 
)

如果行人代理被车辆撞死,则返回

在文件 Navigation.cpp1242 行定义.

引用了 _crowd, _mapped_walkers_id, _mutex, _ready , 以及 DEBUG_ASSERT.

被这些函数引用 carla::client::detail::WalkerNavigation::Tick().

+ 这是这个函数的调用关系图:

◆ Load() [1/2]

bool carla::nav::Navigation::Load ( const std::string &  filename)

从磁盘中加载导航数据

在文件 Navigation.cpp86 行定义.

引用了 end() , 以及 Load().

被这些函数引用 Load() , 以及 carla::client::detail::WalkerNavigation::WalkerNavigation().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ Load() [2/2]

bool carla::nav::Navigation::Load ( std::vector< uint8_t >  content)

从内存中加载导航数据

在文件 Navigation.cpp105 行定义.

引用了 _binary_mesh, _nav_mesh, _nav_query, _ready, CreateCrowd(), carla::logging::log() , 以及 carla::nav::MAX_QUERY_SEARCH_NODES.

+ 函数调用图:

◆ PauseAgent()

void carla::nav::Navigation::PauseAgent ( ActorId  id,
bool  pause 
)

将人群中的代理设置为暂停

在文件 Navigation.cpp1153 行定义.

引用了 _crowd, _mapped_walkers_id, _mutex, _ready , 以及 DEBUG_ASSERT.

被这些函数引用 carla::nav::WalkerEventVisitor::operator()() , 以及 carla::nav::WalkerManager::SetWalkerNextPoint().

+ 这是这个函数的调用关系图:

◆ RemoveAgent()

bool carla::nav::Navigation::RemoveAgent ( ActorId  id)

移除代理

在文件 Navigation.cpp692 行定义.

引用了 _crowd, _mapped_by_index, _mapped_vehicles_id, _mapped_walkers_id, _mutex, _ready, _walker_manager, DEBUG_ASSERT , 以及 carla::nav::WalkerManager::RemoveWalker().

被这些函数引用 carla::client::detail::WalkerNavigation::CheckIfWalkerExist(), carla::client::detail::WalkerNavigation::RemoveWalker(), carla::client::detail::WalkerNavigation::Tick() , 以及 UpdateVehicles().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ SetAgentFilter()

void carla::nav::Navigation::SetAgentFilter ( int  agent_index,
int  filter_index 
)
private

为代理分配过滤索引

在文件 Navigation.cpp1132 行定义.

引用了 _crowd , 以及 _mutex.

被这些函数引用 UpdateCrowd().

+ 这是这个函数的调用关系图:

◆ SetPedestriansCrossFactor()

void carla::nav::Navigation::SetPedestriansCrossFactor ( float  percentage)

设置行人代理在路径跟随过程中穿过马路的概率

在文件 Navigation.cpp1147 行定义.

引用了 _probability_crossing.

被这些函数引用 carla::client::detail::WalkerNavigation::SetPedestriansCrossFactor().

+ 这是这个函数的调用关系图:

◆ SetSeed()

void carla::nav::Navigation::SetSeed ( unsigned int  seed)

设置随机数种子

在文件 Navigation.cpp80 行定义.

被这些函数引用 carla::client::detail::WalkerNavigation::SetPedestriansSeed().

+ 这是这个函数的调用关系图:

◆ SetSimulator()

void carla::nav::Navigation::SetSimulator ( std::weak_ptr< carla::client::detail::Simulator simulator)

引用模拟器来访问API函数

在文件 Navigation.cpp70 行定义.

引用了 _simulator, _walker_manager , 以及 carla::nav::WalkerManager::SetSimulator().

被这些函数引用 carla::client::detail::WalkerNavigation::WalkerNavigation().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ SetWalkerDirectTarget()

bool carla::nav::Navigation::SetWalkerDirectTarget ( ActorId  id,
carla::geom::Location  to 
)

在文件 Navigation.cpp811 行定义.

引用了 _mapped_walkers_id, _ready , 以及 SetWalkerDirectTargetIndex().

被这些函数引用 carla::nav::WalkerManager::SetWalkerNextPoint().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ SetWalkerDirectTargetIndex()

bool carla::nav::Navigation::SetWalkerDirectTargetIndex ( int  index,
carla::geom::Location  to 
)

在文件 Navigation.cpp828 行定义.

引用了 _crowd, _mutex, _nav_query, _ready, DEBUG_ASSERT, carla::geom::Vector3D::x, carla::geom::Vector3D::y , 以及 carla::geom::Vector3D::z.

被这些函数引用 SetWalkerDirectTarget().

+ 这是这个函数的调用关系图:

◆ SetWalkerLookAt()

bool carla::nav::Navigation::SetWalkerLookAt ( ActorId  id,
carla::geom::Location  location 
)

◆ SetWalkerMaxSpeed()

bool carla::nav::Navigation::SetWalkerMaxSpeed ( ActorId  id,
float  max_speed 
)

设置新的最大速度

在文件 Navigation.cpp764 行定义.

引用了 _crowd, _mapped_walkers_id, _mutex, _ready , 以及 DEBUG_ASSERT.

被这些函数引用 carla::client::detail::WalkerNavigation::SetWalkerMaxSpeed().

+ 这是这个函数的调用关系图:

◆ SetWalkerTarget()

bool carla::nav::Navigation::SetWalkerTarget ( ActorId  id,
carla::geom::Location  to 
)

设置新的目标点以通过有事件的路线

在文件 Navigation.cpp794 行定义.

引用了 _mapped_walkers_id, _ready, _walker_manager , 以及 carla::nav::WalkerManager::SetWalkerRoute().

被这些函数引用 carla::client::detail::WalkerNavigation::SetWalkerTarget().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ UpdateCrowd()

void carla::nav::Navigation::UpdateCrowd ( const client::detail::EpisodeState state)

更新人群中的所有步行者

在文件 Navigation.cpp863 行定义.

引用了 _crowd, _delta_seconds, _mapped_by_index, _mutex, _probability_crossing, _ready, _time_to_unblock, _walker_manager, _walkers_blocked_position, carla::nav::AGENT_UNBLOCK_DISTANCE_SQUARED, carla::nav::AGENT_UNBLOCK_TIME, DEBUG_ASSERT, carla::nav::frand(), GetRandomLocation(), carla::client::detail::EpisodeState::GetTimestamp(), SetAgentFilter(), carla::nav::WalkerManager::SetWalkerRoute(), carla::geom::Vector3D::SquaredLength() , 以及 carla::nav::WalkerManager::Update().

被这些函数引用 carla::client::detail::WalkerNavigation::Tick().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ UpdateVehicles()

bool carla::nav::Navigation::UpdateVehicles ( std::vector< VehicleCollisionInfo vehicles)

在人群中添加/更新/删除车辆

在文件 Navigation.cpp738 行定义.

引用了 _mapped_vehicles_id, AddOrUpdateVehicle() , 以及 RemoveAgent().

被这些函数引用 carla::client::detail::WalkerNavigation::UpdateVehiclesInCrowd().

+ 函数调用图:
+ 这是这个函数的调用关系图:

类成员变量说明

◆ _binary_mesh

std::vector<uint8_t> carla::nav::Navigation::_binary_mesh
private

在文件 Navigation.h189 行定义.

被这些函数引用 Load() , 以及 ~Navigation().

◆ _crowd

dtCrowd* carla::nav::Navigation::_crowd { nullptr }
private

◆ _delta_seconds

double carla::nav::Navigation::_delta_seconds { 0.0 }
private

在文件 Navigation.h190 行定义.

被这些函数引用 GetDeltaSeconds(), GetWalkerTransform() , 以及 UpdateCrowd().

◆ _mapped_by_index

std::unordered_map<int, ActorId> carla::nav::Navigation::_mapped_by_index
private

在文件 Navigation.h200 行定义.

被这些函数引用 AddOrUpdateVehicle(), AddWalker(), RemoveAgent(), UpdateCrowd() , 以及 ~Navigation().

◆ _mapped_vehicles_id

std::unordered_map<ActorId, int> carla::nav::Navigation::_mapped_vehicles_id
private

◆ _mapped_walkers_id

std::unordered_map<ActorId, int> carla::nav::Navigation::_mapped_walkers_id
private

◆ _mutex

std::mutex carla::nav::Navigation::_mutex
mutableprivate

◆ _nav_mesh

dtNavMesh* carla::nav::Navigation::_nav_mesh { nullptr }
private

网格

在文件 Navigation.h192 行定义.

被这些函数引用 CreateCrowd(), GetAgentRoute(), GetPath(), Load() , 以及 ~Navigation().

◆ _nav_query

dtNavMeshQuery* carla::nav::Navigation::_nav_query { nullptr }
private

在文件 Navigation.h193 行定义.

被这些函数引用 GetAgentRoute(), GetPath(), GetRandomLocation(), Load(), SetWalkerDirectTargetIndex() , 以及 ~Navigation().

◆ _probability_crossing

float carla::nav::Navigation::_probability_crossing { 0.0f }
private

在文件 Navigation.h214 行定义.

被这些函数引用 AddWalker(), SetPedestriansCrossFactor() , 以及 UpdateCrowd().

◆ _ready

bool carla::nav::Navigation::_ready { false }
private

◆ _simulator

std::weak_ptr<carla::client::detail::Simulator> carla::nav::Navigation::_simulator
private

在文件 Navigation.h210 行定义.

被这些函数引用 SetSimulator().

◆ _time_to_unblock

double carla::nav::Navigation::_time_to_unblock { 0.0 }
private

在文件 Navigation.h205 行定义.

被这些函数引用 UpdateCrowd() , 以及 ~Navigation().

◆ _walker_manager

WalkerManager carla::nav::Navigation::_walker_manager
private

行人管理器负责带事件的路线规划

在文件 Navigation.h208 行定义.

被这些函数引用 AddWalker(), Navigation(), RemoveAgent(), SetSimulator(), SetWalkerTarget() , 以及 UpdateCrowd().

◆ _walkers_blocked_position

std::unordered_map<int, carla::geom::Vector3D> carla::nav::Navigation::_walkers_blocked_position
private

每隔一段时间保存每个参与者的位置,并检查是否有参与者被阻挡

在文件 Navigation.h204 行定义.

被这些函数引用 UpdateCrowd() , 以及 ~Navigation().

◆ _yaw_walkers

std::unordered_map<ActorId, float> carla::nav::Navigation::_yaw_walkers
private

存储上一个节拍的行人偏航角

在文件 Navigation.h202 行定义.

被这些函数引用 AddWalker(), GetWalkerTransform() , 以及 ~Navigation().


该类的文档由以下文件生成: