Keywords

1 Introduction

Building autonomous vehicles is becoming an active and challenging issue in the field of robotics. The advantage of autonomous is obvious that can reduce the traffic accident to save human lives, release human work loads, and so on. The developing of autonomous vehicles attracts a number of vehicle manufactures, research institutions even military department, where lots of financial and human resources were input to relevant projects. The basic and important goal to develop autonomous vehicles is the auto navigation under various uncertainties such as bad road, luminance and weather situations, etc.

Computer vision techniques are commonly used in the automatic navigation by visual data [1, 2]. In the vehicle navigation [3], lane lines are detected by analyze the obtained visual data, then the auto navigation is achieved by tracking the lane lines. The detection speed and accuracy are the main concerns for the road lane detecting and tracking, but it is also a challenging and complicate work due to the problems from poor road marking, lightness, complicate multiple lanes and so on. As a robust line detector, the Hough Transform [4] and its variations are commonly used, such as lane detection technique [5]. Road lane recognizing systems were limited to semiautomatic.

In this paper, an automatic vehicle navigation system is proposed. We divided the proposed methods to three progresses: firstly, road lane detection based on an improved Hough transform [6] is employed; secondly, Fuzzy logic scheme is designed to steer the vehicle; at last, 3D vehicle and different road scenario are built using Virtual Reality (VR). The simulation results validated the proposed system.

2 Related Work

The computer vision based navigation of autonomous vehicles is challenging since the uncertainties in the vehicle locating/lane detection and navigation/lane keeping. For lane detection, some interferences should be considered, such as the imperfect lane lines, errors in lane recognition, and the unpredictable road orientation changes. In the aspect of navigation, the controller has to be tolerant to the uncertainties like the road profile variation, lane width, and acceptable spacing for driving, etc. All these factors negatively affect the reliability of the autonomous system. So it is important to carefully choose and tune the lane detection method and controller.

2.1 Hough Transform

The road detecting methods must be robust under imperfect lane lines and undesired luminance and weather condition. In straight line and segment detection methods, the Hough transform (HT) [4] is one of the most widely used techniques. The HT is defined by the mapping from the image space to the parameter space (i.e. the HT space) by Eq. (1).

$$ \rho = x\cos \theta + y\sin \theta , $$
(1)

Sharp distinct peaks are desired when mapping feature points from the image space to the HT space. However problems exist such as peak splitting, flattening [7]. With the unreliable peaks, some methods were reported to extract information from the butterfly surrounding the peaks to determine straight line segment parameters, such as the segment detection method making use of a butterfly’s quadrangular neighborhood [6]. These methods do not use feature points in the image space therefore have high computationally efficiency. Another advantage of these methods is the robustness against the peak splitting and flatting problems.

2.2 Fuzzy Logic Control

Fuzzy logic [8] is a nature language like reasoning system. It expresses concepts by membership functions, that is, an operation is not an exact numerical value but can be cast in such terms like human language, so that the controller can be constructed based on human operators’ experiences, such as controlling the position of a mobile robot [9], and robot navigation [10]. Since fuzzy logic control does not rely on exact measurement from the sensors, it makes the controllers feasible for noise and even fault tolerant applications, for instance, fault tolerant of satellite synchronization system using fuzzy control [11] and fuzzy control for nonlinear system with Multiplicative Noises [12].

3 The Proposed Method

The proposed navigation system and the vehicle are implemented in virtual reality (VR) for the purpose of validation. The scenario of the auto navigation system is shown in Fig. 1. To mimic the real world situation, real road images are used to build the testing road in VR as shown in Fig. 1a. A camera is mounted on the side of the vehicle to capture the road image for lane line detection. The captured image is shown in Fig. 1b. The total length of the testing road is 4 km with straight parts and turning corners as shown in Fig. 1c, and the designed vehicle driving speed is 80 km/h.

Fig. 1
figure 1

The road and car scenario. a A car on a road, b lane line to be detected, c the map of the road

3.1 Lane Lines Detection

Considering the fact that the quality of the lane lines on real world roads is not always high, it is important to employ a robust lane line detection method. Because of the requirement of realtime navigation, the method with low computation load is preferable. In this research we apply the improved Hough transform [13] which has the capacity to detect segment directly and the computation load is slight.

3.2 Vehicle Auto Navigation

In the navigation, the vehicle must be kept in the lane without any part beyond the lane lines. To assure this requirement, the distances of the vehicle front and back corners to the lane line are chosen as the input variables of fuzzy controller, denoted as \( y_{1} \) and \( y_{2} \) respectively. The difference of \( y_{1} \) and \( y_{2} \) is also an input variable, which provides the relative orientation of the vehicle and is used for finer tuning the steering output. The membership functions of \( y_{1} \) and \( y_{2} \) are the same as shown in Fig. 2a, where 3 levels are defined as “small”, “media” and “big”. The membership function of \( y_{1} - y_{2} \) is depicted in Fig. 2b, where 5 levels are defined as “-big”, “-media”, “media”, “+media”, and “+big”. According to the human driving experiences, the following 14 rules are defined.

  1. 1.

    If \( (y_{1} \) is small) and \( (y_{2} \) is small) then (steering is LeftBig)

  2. 2.

    If \( ( y_{1} \) is small) and \( (y_{2} \) is media) then (steering is RightMedia)

  3. 3.

    If \( (y_{1} \) is small) and \( (y_{2} \) is big) then (steering is RightBig)

  4. 4.

    If \( (y_{1} \) is media) and \( (y_{2} \) is small) then (steering is LeftBig)

  5. 5.

    If \( (y_{1} \) is media) and \( (y_{2} \) is media) then (steering is RightBig)

  6. 6.

    If \( (y_{1} \) is media) and \( (y_{2} \) is big) then (steering is RightBig)

  7. 7.

    If \( (y_{1} \) is big) and \( (y_{2} \) is small) then (steering is LeftBig)

  8. 8.

    If \( (y_{1} \) is big) and \( (y_{2} \) is media) then (steering is Straight)

  9. 9.

    If \( (y_{1} \) is big) and \( (y_{2} \) is big) then (steering is RightBig)

  10. 10.

    If \( (y_{1} \) is media) and \( (y_{2} \) is media) and \( (y_{1} - y_{2} \) is -media) then (steering is RightMedia)

  11. 11.

    If \( (y_{1} \) is media) and \( (y_{2} \) is media) and \( (y_{1} - y_{2} \) is media) then (steering is Straight)

  12. 12.

    If \( (y_{1} \) is media) and \( (y_{2} \) is media) and \( (y_{1} - y_{2} \) is +media) then (steering is LeftMedia)

  13. 13.

    If \( (y_{1} - y_{2} \) is +big) then (steering is LeftBig)

  14. 14.

    If \( (y_{1} - y_{2} \) is -big) then (steering is RightBig)

Fig. 2
figure 2

The fuzzy logic control design. a Member function of input variable \( y_{1} \), b member function of input variable \( y_{1} - y_{2} \), c member function of output variable (steering), d the surface of steering versus \( y_{1} \) and \( y_{2} \)

Figure 2c is the steering variable membership function. According to the membership functions and rules, the steering surface is demonstrated in Fig. 2d.

4 Results

For the sake of comparison, the proportional-derivative (PD) controller is employed as well. Figure 3 shows the steering action and the distance from the vehicle to the lane line. In Fig. 3a, the fuzzy controller is more robust on the steering action, while the PD controller change the steering in high frequency and big magnitude. The difference comes from the robustness of the controllers against the noise, such as the lane line detection errors. Because fuzzy controller is more tolerant to the noise, it is not very sensitive to the noise. This is not the case for PD controller.

Fig. 3
figure 3

Driving performance comparison. a The steering action, b the distance from the lane

In Fig. 3b, the distances between the vehicle and lane line indicate the steering profile of the two controllers. One can find that the fuzzy control steers the vehicle like human being, which keep steering the vehicle even on a straight road with slow and smooth steering actions. However, the PD controller shows big vibration during the steering, which is harmful to the mechanical system of the vehicle.

5 Conclusion

In this paper, an autonomous vehicle navigation system was proposed. An improved Hough transform was employed to detect the lane lines for locating the vehicle and provide lane information to steering system. Fuzzy logic control was applied to steering the vehicle. The result validated the robustness of the fuzzy controller, which steered the vehicle in such a way that like human being. The simulation results indicated that the fuzzy controller got better performance than the PD controller.