Virtual Front View
Virtual Front View is a method to extend the visual range of the driver by providing a video stream of downstream traffic and/or road conditions that may not be visible to the driver. The video stream may be generated by a Road Side Unit (RSU) or by a downstream vehicle and the video stream may be received using single-hop or multi-hop using vehicle-to-vehicle communication. The motivation is to improve the driving safety by extending the visual range of the driver. This project is motivated by a multi-disciplinary Nation Science Foundation (NSF) project that is currently underway and led by Prof. Michael Zhang (CEE), Prof. Chen-Nee Chuah (ECE), and Prof. Dipak Ghosal (CS).
Within the broader scope, the goal of our project was to develop a prototype Android application that can be used to demonstrate the feasibility of the idea using standard Android devices. An additional goal of the project was to characterize the packet loss and delay in single hop communication and its impact on the quality of the video stream. Towards this end we adopted Android Wi-Fi Direct for ad-hoc communcation between the Android devices. For video streaming, we adopted the libstreaming library which uses the standard Real Time Streaming Protocol (RTSP) utilizng Real Time Protocol (RTP) for streaming video data.
Our Android application is based on the standard client-server architecture. The architecture uses the standard TCP/IP network protocl stack. The application uses libstreaming to handle the top two layers of the network stack (Application and Transport layers). Wi-Fi Direct uses the IEEE 802.11 protocl and implements the data link and physical layers of the network stack.
Wi-Fi Direct retrieves the network layer identifier, the IP Address, and passes it to the application process which makes it accessible to the lisbtreaming library. At the sender side, the libstreaming library provides functions to convert video into RTP packets which are transported using UDP/IP. At the receiver, libstreaming library functions are used to render the video based on the received video packets.