Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions osi_groundtruth.proto
Original file line number Diff line number Diff line change
Expand Up @@ -70,19 +70,23 @@ message GroundTruth
//
repeated Lane lane = 9;

// A list of lane boundaries from lanes.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In my opinion this is redundant. Just A list of lane boundaries. would be enough.

//
repeated LaneBoundary lane_boundary = 10;

// A list of passengers in the (ego) vehicle(s).
//
repeated Occupant occupant = 10;
repeated Occupant occupant = 11;

// Conditions of the environment.
//
optional EnvironmentalConditions environmental_conditions = 11;
optional EnvironmentalConditions environmental_conditions = 12;

// The country code in 3 digit numeric format: ISO Code 3166/1 [1,2].
// e.g. Germany = 276, USA = 840
//
// \par References:
// [1] [ISO 3166/1 Country codes] (https://www.iso.org/obp/ui/)
// [2] [ISO 3166/1 Wikipedia] (https://en.wikipedia.org/wiki/ISO_3166-1)
optional uint32 country_code = 12;
optional uint32 country_code = 13;
}
16 changes: 12 additions & 4 deletions osi_landmark.proto
Original file line number Diff line number Diff line change
Expand Up @@ -599,7 +599,7 @@ message TrafficLight
optional GreenArrowPresence green_arrow = 6;

// The ids of the lanes that the traffic light is assigned to.
// Might be multiple if the traffic light is valid for multiple lanes.
// Might be multiple if the traffic light is valid for multiple driving lanes.
repeated Identifier assigned_lane = 7;

// Definition of traffic light types.
Expand Down Expand Up @@ -819,6 +819,11 @@ message RoadMarking
// Might be multiple if the road marking goes across multiple lanes.
repeated Identifier assigned_lane = 6;

// Intersection orientation of the road marking.
//
// \note Defined for \c Lane::type = TYPE_INTERSECTION, otherwise zero vector
optional Vector3d roadmarking_orientation = 7;

// Definition of road marking types.
//
enum Type
Expand Down Expand Up @@ -927,14 +932,17 @@ message RoadMarking
// Marking with blue color.
//
COLOR_BLUE = 5;

// Marking with red color.
//
COLOR_RED = 6;

// Marking with green color.
//
COLOR_GREEN = 7;

// Marking with violet color.
//
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: the same typo might be fixed in the line 58

COLOR_VIOLET = 8;
}
}
128 changes: 62 additions & 66 deletions osi_lane.proto
Original file line number Diff line number Diff line change
Expand Up @@ -44,47 +44,64 @@ message Lane
//
// \image html line_approximation_error.png "Approximation error as green line."
//
// \note Centerline is defined only for \c Lane::type = \c TYPE_DRIVING and one
// \c Lane::lane_pairing pair.
repeated Vector3d center_line = 3;

// The boundary of the lane.
// Definition of the intended driving direction.
//
// The lane boundaries describe the lane markings or other boundaries delimiting the lane as well as free lines that
// might be used e.g. in construction sites. The lane markings do not have to be parallel to the center_line, but
// they are the basis for calculating the width of the lane at any given distance.
// Defined and used for driving lanes.
// true means driving direction is according to ascending order of center line points.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

true means driving direction agrees with ascending storage order of the points defining the center_line.

// false means driving direction is according to descending order of center line points.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

false means driving direction disagrees with descending storage order of the points defining the center_line.

//
// Example: The double solid line above the 3, and the dashed line below the 3. (see reference picture) There might
// also be additional free lanes.
repeated LaneBoundary lane_boundary = 4;
// \note CenterlineIsDrivingDirection is defined for \c Lane::type = TYPE_DRIVING.
optional bool center_line_is_driving_direction = 4;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To maintain basic backward compatibility field tag 4 should be reserved and center_line_is_driving_direction should get a new tag (after existing ones).


// List of ids of all lane segments that are directy adjacent to the lane on the left side (w.r.t. intended driving
// direction). Note that lengths of lane segments are not synchronized and therefore there are multiple adjacent
// segments if there is a split/merge point in the adjacent lane.
// Example: The lane id 2 is the only left adjacent lane for lane id 3 in the reference picture.
//
// \note Left isn't defined for \c Lane::type = TYPE_INTERSECTION.
repeated Identifier left_adjacent_lane_id = 5;

// List of ids of all lane segments that are directy adjacent to the lane on the right side (w.r.t. intended driving
// direction). Note that lengths of lane segments are not synchronized and therefore there are multiple adjacent
// segments if there is a split/merge point in the adjacent lane.
// Example: The lane ids 4 and 7 are the right adjacent lane segments for lane id 3 in the reference picture due to
// the lane split. Lane id 6 is not a right adjacent lane to lane id 3 as they are separated by lane id 7.
//
// \note Right isn't defined for \c Lane::type = TYPE_INTERSECTION.
repeated Identifier right_adjacent_lane_id = 6;

// The lane's antecessors (lanes that end in the same point that this lane's center line starts from).
// There might be multiple antecessors e.g. in road crossings or on lane merges.
// Example: Considering lane 6, its antecessor is the lane with id 4.
repeated Identifier antecessor_lane_id = 7;
// The antecessor/successor lane pairings of this lane. There can be multiple pairings with the same
// antecessor and different successor lanes and vice versa.
// The antecessor lanes end in the same point that this lane starts from.
// The successor lanes start in the same point that this lane ends in.
// Example:
repeated LanePairing lane_pairing = 7;

// The id of the right boundary ID of the right lane ID w.r.t. driving direction. Empty for intersections.
//
// \note Left isn't defined for \c Lane::type = TYPE_INTERSECTION.
repeated Identifier right_lane_boundary_id = 8;

// The lane's successors (lanes that start in the same point that this lane's center line ends in).
// There might be multiple successors e.g. in road crossings, highway exits, or lane splits.
// Example: Considering lane 4, its successors are the lanes with id 6 and 7.
repeated Identifier successor_lane_id = 8;
// The id of the left boundary ID of the left lane ID w.r.t. driving direction. Empty for intersections.
//
// \note Left isn't defined for \c Lane::type = TYPE_INTERSECTION.
repeated Identifier left_lane_boundary_id = 9;

// The id of the free boundary ID.
//
// \note Lanes with \c Lane::type = TYPE_INTERSECTION use only free lane boundaries
repeated Identifier free_lane_boundary_id = 10;

// A lane framing describes the surrounding of the lane segment.
//
optional LaneFraming lane_framing = 9;
optional LaneFraming lane_framing = 11;

// The condition of the lane, e.g. influenced by weather.
optional RoadCondition road_condition = 10;
optional RoadCondition road_condition = 12;

// Definition of available lane types.
//
Expand All @@ -100,27 +117,15 @@ message Lane

// A normal lane.
// E.g. lanes with ids 1, 2, 3, 4 and 7 of the highway_exit image.
TYPE_NORMAL = 2;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To retain backward compatiblity TYPE_NORMAL can be changed to TYPE_DRIVING, I think, but the new TYPE_NONDRIVING and TYPE_INTERSECTION enum values should be new unused values to avoid misinterpretation, I think...


// A stop/emergency lane on highways/freeways.
// E.g. lane with id 5 of the highway_exit image.
TYPE_EMERGENCY = 3;

// A freeway/highway entry lane.
//
TYPE_ENTRANCE = 4;

// A freeway/highway exit lane.
// E.g. lane with id 6 of the highway_exit image.
TYPE_EXIT = 5;

// A car pooling lane.
TYPE_DRIVING = 2;

// A road where driving is normally not permitted
//
TYPE_HIGH_OCCUPANCY_VEHICLE = 6;
// A road area / lane reserved for parking.
TYPE_NONDRIVING = 3;

// An intersection as a lane.
//
TYPE_PARKING = 7;
TYPE_INTERSECTION = 4;
}

// Definition of available lane framing types.
Expand Down Expand Up @@ -207,6 +212,19 @@ message Lane
}
}

// \brief The lane id pairings of antecessor and successor lanes.
//
message LanePairing
{
// The antecessor lane.
//
optional Identifier antecessor_lane_id = 1;

// The successor lane.
//
optional Identifier successor_lane_id = 2;
}

//
// \brief A lane boundary defining the border of a lane.
//
Expand All @@ -216,6 +234,9 @@ message Lane
//
message LaneBoundary
{
//The id of the lane boundary.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, if we want to technically remain backward compatible, the id field need to use a new tag number and the remaining fields should retain their tag numbers.

optional Identifier id = 1;

// The list of individual points defining the location of the lane boundary.
//
// Since a BoundaryPoint is part of a sequence only the position attribute has to be set for each instance. All
Expand All @@ -225,11 +246,7 @@ message LaneBoundary
//
// \attention For BoundaryPoints the same rules apply as for Lane::center_line regarding maximum distance and
// approximation error.
repeated BoundaryPoint boundary_line = 1;

// The location of the lane boundary within the lane.
//
optional BoundaryLocation location = 2;
repeated BoundaryPoint boundary_line = 2;

// The type of the lane boundary.
//
Expand All @@ -239,31 +256,6 @@ message LaneBoundary
//
optional Color color = 4;

// The location of the lane boundary within the lane.
//
enum BoundaryLocation
{
// The location of the boundary is unknown. Value must not be used in ground truth.
//
BOUNDARY_LOCATION_UNKNOWN = 0;

// Other (unspecified but known) boundary location.
//
BOUNDARY_LOCATION_OTHER = 1;

// A left lane boundary.
//
BOUNDARY_LOCATION_LEFT = 2;

// A right lane boundary.
//
BOUNDARY_LOCATION_RIGHT = 3;

// A free lane boundary.
//
BOUNDARY_LOCATION_FREE = 4;
}

// The lane boundary type.
// There are no double lines, e.g. solid solid or dashed solid, as each lane will define its own side of the lane boundary.
enum Type
Expand Down Expand Up @@ -348,6 +340,10 @@ message LaneBoundary
// Marking with green color;
//
COLOR_GREEN = 7;

// Marking with violet color.
//
COLOR_VIOLET = 8;
}
}

Expand Down