安全警告
開発者は、アドオンモジュールであるMapbox Vision Safetyを使用して、道路状況と潜在的な危険を運転手に通知・警告する機能を作成できる。(Mapbox Vision Safety がVision SDKから渡されたセグメンテーション、検出、および分類情報を使用する)
速度制限の監視
開発者は、標識分類を使用して速度制限および他の重要な標識を監視したり、最近によく観察された速度制限を追跡したりすることができる。車両の速度が最近の観察された速度制限を超えた場合、プログラム的なアラートを設定できる。
速度警告は、速度制限標識と車両の現在速度標識という2つのサインがある。
標識の検出
Vision SafetyがMapbox Vision SDKのDetectionClass を使用して、表示されているtrafficSignsを検出して、speedLimit*タイプ(トラックの最高速度や最低速度などの特別な速度制限の標識を含む)に基づいてSignTypesにフィルターする。
Vision SafetyのSpeedLimitRangeクラスには最小および最大の速度制限の数値が含まれている。
車両速度
Vision SDKでのVehicleLocationクラスの速度プロパティを使用して、デバイスの現在速度を判断する。
次に、現在の車両速度を速度制限範囲と比較して、適当な速度通知をトリガーできる。
Android実装の例
1. package com.mapbox.vision.examples;
2.
3. import android.os.Bundle;
4. import android.support.v7.app.AppCompatActivity;
5. import android.widget.Toast;
6. import com.mapbox.vision.VisionManager;
7. import com.mapbox.vision.mobile.core.interfaces.VisionEventsListener;
8. import com.mapbox.vision.mobile.core.models.AuthorizationStatus;
9. import com.mapbox.vision.mobile.core.models.Camera;
10. import com.mapbox.vision.mobile.core.models.Country;
11. import com.mapbox.vision.mobile.core.models.FrameSegmentation;
12. import com.mapbox.vision.mobile.core.models.classification.FrameSignClassifications;
13. import com.mapbox.vision.mobile.core.models.detection.FrameDetections;
14. import com.mapbox.vision.mobile.core.models.position.VehicleState;
15. import com.mapbox.vision.mobile.core.models.road.RoadDescription;
16. import com.mapbox.vision.mobile.core.models.world.WorldDescription;
17. import com.mapbox.vision.safety.VisionSafetyManager;
18. import com.mapbox.vision.safety.core.VisionSafetyListener;
19. import com.mapbox.vision.safety.core.models.CollisionObject;
20. import com.mapbox.vision.safety.core.models.RoadRestrictions;
21. import org.jetbrains.annotations.NotNull;
22.
23. /**
24. * Example shows how overspeed can be detected using Vision and VisionSafety SDKs combined.
25. */
26. public class SafetyActivity extends AppCompatActivity {
27.
28. private Float maxAllowedSpeed = -1f;
29.
30. // this listener handles events from Vision SDK
31. private VisionEventsListener visionEventsListener = new VisionEventsListener() {
32.
33. @Override
34. public void onAuthorizationStatusUpdated(@NotNull AuthorizationStatus authorizationStatus) {}
35.
36. @Override
37. public void onFrameSegmentationUpdated(@NotNull FrameSegmentation frameSegmentation) {}
38.
39. @Override
40. public void onFrameDetectionsUpdated(@NotNull FrameDetections frameDetections) {}
41.
42. @Override
43. public void onFrameSignClassificationsUpdated(@NotNull FrameSignClassifications frameSignClassifications) {}
44.
45. @Override
46. public void onRoadDescriptionUpdated(@NotNull RoadDescription roadDescription) {}
47.
48. @Override
49. public void onWorldDescriptionUpdated(@NotNull WorldDescription worldDescription) {}
50.
51. @Override
52. public void onVehicleStateUpdated(@NotNull VehicleState vehicleState) {
53. // current speed of our car
54. Float mySpeed = vehicleState.getSpeed();
55.
56. // display toast with overspeed warning if our speed is greater than maximum allowed speed
57. if (mySpeed > maxAllowedSpeed && maxAllowedSpeed > 0) {
58. Toast.makeText(
59. SafetyActivity.this,
60. "Overspeeding! Current speed : " + mySpeed +
61. ", allowed speed : " + maxAllowedSpeed,
62. Toast.LENGTH_LONG
63. ).show();
64. }
65. }
66.
67. @Override
68. public void onCameraUpdated(@NotNull Camera camera) {}
69.
70. @Override
71. public void onCountryUpdated(@NotNull Country country) {}
72.
73. @Override
74. public void onUpdateCompleted() {}
75. };
76.
77. private VisionSafetyListener visionSafetyListener = new VisionSafetyListener() {
78. @Override
79. public void onCollisionsUpdated(@NotNull CollisionObject[] collisions) {}
80.
81. @Override
82. public void onRoadRestrictionsUpdated(@NotNull RoadRestrictions roadRestrictions) {
83. maxAllowedSpeed = roadRestrictions.getSpeedLimits().getCar().getMax();
84. }
85. };
86.
87. @Override
88. public void onCreate(Bundle savedInstanceState) {
89. super.onCreate(savedInstanceState);
90. setContentView(R.layout.activity_main);
91. }
92.
93. @Override
94. protected void onStart() {
95. super.onStart();
96.
97. VisionManager.create();
98. VisionManager.start(visionEventsListener);
99.
100. VisionSafetyManager.create(VisionManager.INSTANCE, visionSafetyListener);
101. }
102.
103. @Override
104. protected void onStop() {
105. super.onStop();
106.
107. VisionSafetyManager.destroy();
108.
109. VisionManager.stop();
110. VisionManager.destroy();
111. }
112. }