Skip to content
Snippets Groups Projects
Commit b8b34e58 authored by Sergi Hernandez's avatar Sergi Hernandez
Browse files

Added some helper functions.

parent 22639813
No related branches found
No related tags found
1 merge request!2Solved a bug when creating a new geometry object: the sale factor is...
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
class COpendriveLane class COpendriveLane
{ {
friend class COpendriveRoadSegment; friend class COpendriveRoadSegment;
friend class COpendriveJunction;
private: private:
opendrive_mark_t right_mark; opendrive_mark_t right_mark;
double speed; double speed;
......
...@@ -41,7 +41,7 @@ class CRoadSegment ...@@ -41,7 +41,7 @@ class CRoadSegment
CRoadSegment(unsigned int lanes_in,unsigned int lanes_out); CRoadSegment(unsigned int lanes_in,unsigned int lanes_out);
unsigned int get_id(void); unsigned int get_id(void);
void set_resolution(double resolution); void set_resolution(double resolution);
double get_resolution(double resolution); double get_resolution(void);
bool has_parent_road(void); bool has_parent_road(void);
CRoad &get_parent_road(void); CRoad &get_parent_road(void);
bool has_parent_junction(void); bool has_parent_junction(void);
...@@ -53,6 +53,7 @@ class CRoadSegment ...@@ -53,6 +53,7 @@ class CRoadSegment
unsigned int get_num_lanes_in(void); unsigned int get_num_lanes_in(void);
unsigned int get_num_lanes_out(void); unsigned int get_num_lanes_out(void);
double get_lane_width(void); double get_lane_width(void);
double get_lane_speed(void);
unsigned int get_lane(double lateral_offset); unsigned int get_lane(double lateral_offset);
void set_geometry(TPoint &start_point,TPoint &end_point); void set_geometry(TPoint &start_point,TPoint &end_point);
void get_start_point(TPoint &point); void get_start_point(TPoint &point);
...@@ -61,6 +62,7 @@ class CRoadSegment ...@@ -61,6 +62,7 @@ class CRoadSegment
void link_lanes(unsigned int lane1,unsigned int lane2); void link_lanes(unsigned int lane1,unsigned int lane2);
void unlink_lanes(unsigned int lane1,unsigned int lane2); void unlink_lanes(unsigned int lane1,unsigned int lane2);
bool are_lanes_linked(unsigned int lane1,unsigned int lane2); bool are_lanes_linked(unsigned int lane1,unsigned int lane2);
void get_connectivity_matrix(Eigen::MatrixXd &connectivity);
double get_length(void); double get_length(void);
bool get_point_at(double distance, double lateral_offset,TPoint &point); bool get_point_at(double distance, double lateral_offset,TPoint &point);
bool get_closest_point(TPoint &target_point,TPoint &closest_point,double &distance,double &lateral_offset,double angle_tol=std::numeric_limits<double>::max()); bool get_closest_point(TPoint &target_point,TPoint &closest_point,double &distance,double &lateral_offset,double angle_tol=std::numeric_limits<double>::max());
......
...@@ -140,7 +140,7 @@ void CRoadSegment::set_resolution(double resolution) ...@@ -140,7 +140,7 @@ void CRoadSegment::set_resolution(double resolution)
this->spline.generate(this->resolution,(unsigned int)10); this->spline.generate(this->resolution,(unsigned int)10);
} }
double CRoadSegment::get_resolution(double resolution) double CRoadSegment::get_resolution(void)
{ {
return this->resolution; return this->resolution;
} }
...@@ -239,6 +239,37 @@ double CRoadSegment::get_lane_width(void) ...@@ -239,6 +239,37 @@ double CRoadSegment::get_lane_width(void)
return width; return width;
} }
double CRoadSegment::get_lane_speed(void)
{
double speed;
if(this->parent_road!=NULL)
return this->parent_road->get_lane_width();
else
{
if(this->get_num_prev_segments()==1)
{
CRoadSegment &prev_segment=this->get_prev_segment_by_index(0);
if(prev_segment.has_parent_road())
speed=prev_segment.get_parent_road().get_lane_speed();
else
speed=50.0;
}
else if(this->get_num_next_segments()==1)
{
CRoadSegment &next_segment=this->get_next_segment_by_index(0);
if(next_segment.has_parent_road())
speed=next_segment.get_parent_road().get_lane_speed();
else
speed=50.0;
}
else
speed=0.0;
}
return speed;
}
unsigned int CRoadSegment::get_lane(double lateral_offset) unsigned int CRoadSegment::get_lane(double lateral_offset)
{ {
unsigned int num_lanes; unsigned int num_lanes;
...@@ -314,6 +345,11 @@ bool CRoadSegment::are_lanes_linked(unsigned int lane1,unsigned int lane2) ...@@ -314,6 +345,11 @@ bool CRoadSegment::are_lanes_linked(unsigned int lane1,unsigned int lane2)
return false; return false;
} }
void CRoadSegment::get_connectivity_matrix(Eigen::MatrixXd &connectivity)
{
connectivity=this->connectivity;
}
double CRoadSegment::get_length(void) double CRoadSegment::get_length(void)
{ {
return this->spline.get_length(); return this->spline.get_length();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment