22#include <boost/optional.hpp>
83 std::pair<const element::RoadInfoMarkRecord *, const element::RoadInfoMarkRecord *>
103 Waypoint waypoint,
double distance,
bool stop_at_junction =
false)
const;
106 std::vector<const element::RoadInfoSignal*>
152 std::unordered_map<road::RoadId, std::unordered_set<road::RoadId>>
157 const double distance,
158 const float extra_width = 0.6f,
159 const bool smooth_junctions =
true)
const;
164 std::map<road::Lane::LaneType , std::vector<std::unique_ptr<geom::Mesh>>>
175 float distancebetweentrees,
176 float distancefromdrivinglineborder,
177 float s_offset = 0)
const;
186 std::vector<std::string>& outinfo )
const;
188const std::unordered_map<SignId, std::unique_ptr<Signal>>&
GetSignals()
const {
192const std::unordered_map<ContId, std::unique_ptr<Controller>>&
GetControllers()
const {
198#ifdef LIBCARLA_WITH_GTEST
216 std::vector<Rtree::TreeElement> &rtree_elements,
223 std::vector<Rtree::TreeElement> &rtree_elements,
231 std::map<road::Lane::LaneType, std::vector<std::unique_ptr<geom::Mesh>>>
233 const std::vector<RoadId>& RoadsID,
235 const size_t number_of_roads_per_thread)
const;
242 juntion_out_mesh_list)
const;
247 junction_out_mesh_list)
const;
259 std::unique_ptr<geom::Mesh>
SDFToMesh(
const road::Junction& jinput,
const std::vector<geom::Vector3D>& sdfinput,
int grid_cells_per_dim)
const;
这个类用于禁止拷贝构造函数和赋值操作,但允许移动构造函数和赋值操作
const geom::GeoLocation & GetGeoReference() const
const std::unordered_map< SignId, std::unique_ptr< Signal > > & GetSignals() const
const std::unordered_map< ContId, std::unique_ptr< Controller > > & GetControllers() const
std::vector< std::pair< Waypoint, Waypoint > > GenerateTopology() const
生成定义 map 拓扑结构的最小路点集。 路点放置在每个车道入口处。
const Junction * GetJunction(JuncId id) const
JuncId GetJunctionId(RoadId road_id) const
std::vector< Waypoint > GetPrevious(Waypoint waypoint, double distance) const
返回距离 waypoint distance 的路点列表, 使得车辆可以反向驶向这些路点。
bool IsJunction(RoadId road_id) const
Lane::LaneType GetLaneType(Waypoint waypoint) const
boost::optional< element::Waypoint > GetClosestWaypointOnRoad(const geom::Location &location, int32_t lane_type=static_cast< int32_t >(Lane::LaneType::Driving)) const
========================================================================
std::unique_ptr< geom::Mesh > SDFToMesh(const road::Junction &jinput, const std::vector< geom::Vector3D > &sdfinput, int grid_cells_per_dim) const
std::vector< std::pair< geom::Transform, std::string > > GetTreesTransform(const geom::Vector3D &minpos, const geom::Vector3D &maxpos, float distancebetweentrees, float distancefromdrivinglineborder, float s_offset=0) const
double GetLaneWidth(Waypoint waypoint) const
std::vector< SignalSearchData > GetSignalsInDistance(Waypoint waypoint, double distance, bool stop_at_junction=false) const
从初始路点搜索信号,直到定义的距离。
std::vector< RoadId > FilterRoadsByPosition(const geom::Vector3D &minpos, const geom::Vector3D &maxpos) const
void AddElementToRtreeAndUpdateTransforms(std::vector< Rtree::TreeElement > &rtree_elements, geom::Transform ¤t_transform, Waypoint ¤t_waypoint, Waypoint &next_waypoint)
std::vector< Waypoint > GenerateWaypointsOnRoadEntries(Lane::LaneType lane_type=Lane::LaneType::Driving) const
在每个 lane 的入口处生成路点, 默认是行驶车道类型。
std::vector< geom::Location > GetAllCrosswalkZones() const
返回定义二维区域的位置信息,重复位置表示一个区域结束
geom::Mesh GenerateWalls(const double distance, const float wall_height) const
std::vector< carla::geom::BoundingBox > GetJunctionsBoundingBoxes() const
boost::optional< Waypoint > GetRight(Waypoint waypoint) const
返回 waypoint 右侧车道的路点。
std::vector< JuncId > FilterJunctionsByPosition(const geom::Vector3D &minpos, const geom::Vector3D &maxpos) const
std::map< road::Lane::LaneType, std::vector< std::unique_ptr< geom::Mesh > > > GenerateRoadsMultithreaded(const carla::geom::MeshFactory &mesh_factory, const std::vector< RoadId > &RoadsID, const size_t index, const size_t number_of_roads_per_thread) const
std::vector< element::LaneMarking > CalculateCrossedLanes(const geom::Location &origin, const geom::Location &destination) const
boost::optional< Waypoint > GetLeft(Waypoint waypoint) const
返回 waypoint 左侧车道的路点。
Map(MapData m)
========================================================================
std::pair< const element::RoadInfoMarkRecord *, const element::RoadInfoMarkRecord * > GetMarkRecord(Waypoint waypoint) const
geom::Mesh GetAllCrosswalkMesh() const
Buids a mesh of all crosswalks based on the OpenDRIVE // 基于OpenDRIVE构建所有人行横道的网格
std::vector< Waypoint > GetNext(Waypoint waypoint, double distance) const
返回距离 waypoint distance 的路点列表, 使得车辆可以驶向这些路点。
Junction * GetJunction(JuncId id)
const geom::GeoLocation & GetGeoReference() const
========================================================================
boost::optional< element::Waypoint > GetWaypoint(const geom::Location &location, int32_t lane_type=static_cast< int32_t >(Lane::LaneType::Driving)) const
void GenerateJunctions(const carla::geom::MeshFactory &mesh_factory, const rpc::OpendriveGenerationParameters ¶ms, const geom::Vector3D &minpos, const geom::Vector3D &maxpos, std::map< road::Lane::LaneType, std::vector< std::unique_ptr< geom::Mesh > > > *juntion_out_mesh_list) const
const std::unordered_map< SignId, std::unique_ptr< Signal > > & GetSignals() const
std::vector< Waypoint > GenerateWaypointsInRoad(RoadId road_id, Lane::LaneType lane_type=Lane::LaneType::Driving) const
在指定道路的每个车道入口处生成路点。
const std::unordered_map< ContId, std::unique_ptr< Controller > > & GetControllers() const
std::vector< std::unique_ptr< geom::Mesh > > GenerateChunkedMesh(const rpc::OpendriveGenerationParameters ¶ms) const
geom::Transform ComputeTransform(Waypoint waypoint) const
std::map< road::Lane::LaneType, std::vector< std::unique_ptr< geom::Mesh > > > GenerateOrderedChunkedMeshInLocations(const rpc::OpendriveGenerationParameters ¶ms, const geom::Vector3D &minpos, const geom::Vector3D &maxpos) const
void GenerateSingleJunction(const carla::geom::MeshFactory &mesh_factory, const JuncId Id, std::map< road::Lane::LaneType, std::vector< std::unique_ptr< geom::Mesh > > > *junction_out_mesh_list) const
std::vector< Waypoint > GenerateWaypoints(double approx_distance) const
在 map 中生成所有路点,路点之间相隔 approx_distance。
std::vector< Waypoint > GetPredecessors(Waypoint waypoint) const
std::vector< Waypoint > GetSuccessors(Waypoint waypoint) const
========================================================================
std::vector< std::unique_ptr< geom::Mesh > > GenerateLineMarkings(const rpc::OpendriveGenerationParameters ¶ms, const geom::Vector3D &minpos, const geom::Vector3D &maxpos, std::vector< std::string > &outinfo) const
boost::optional< element::Waypoint > GetWaypoint(RoadId road_id, LaneId lane_id, float s) const
float GetZPosInDeformation(float posx, float posy) const
void AddElementToRtree(std::vector< Rtree::TreeElement > &rtree_elements, geom::Transform ¤t_transform, geom::Transform &next_transform, Waypoint ¤t_waypoint, Waypoint &next_waypoint)
std::vector< const element::RoadInfoSignal * > GetAllSignalReferences() const
返回地图中的所有 RoadInfoSignal
std::vector< std::pair< Waypoint, Waypoint > > GetJunctionWaypoints(JuncId id, Lane::LaneType lane_type) const
生成交叉口的路点。
std::unordered_map< road::RoadId, std::unordered_set< road::RoadId > > ComputeJunctionConflicts(JuncId id) const
const Lane & GetLane(Waypoint waypoint) const
========================================================================
geom::Mesh GenerateMesh(const double distance, const float extra_width=0.6f, const bool smooth_junctions=true) const
基于 OpenDRIVE 构建网格
const element::RoadInfoSignal * signal
Seting for map generation from opendrive without additional geometry