We are proposing a completely automated vehicle tracking system that has the capability to trace a vehicle by its license plate using the surveillance and security cam feeds used by the police. We are also planning to create a platform for the public to register vehicle missing cases, theft, abductions, or any kind of issues that involves a vehicle. Once a case is registered, an incident is generated by the platform which will be notified to the core surveillance system that can trace the vehicle mentioned in the same and then will generate a report for the respective authorities which could be followed by appropriate actions, thus easing and reducing the overall effort in such scenarios.
Hardware1. SettingUpZCU104
- ZCU104 board
- Computer with a compatible browser (Supported Browsers)
- Ethernet cable
- Micro USB cable (optional)
- Micro-SD card with preloaded image, or blank card (Minimum 8GB recommended)
- Set the Boot Dip Switches (SW6) to the following positions:(This sets the board to boot from the Micro-SD card)Dip switch 1 (Mode 0): On (down position in the diagram)Dip switch 2 (Mode 1): Off (up position in the diagram)Dip switch 3 (Mode 2): Off (up)Dip switch 4 (Mode 3): Off (up)
- Connect the 12V power cable. Note that the connector is keyed and can only be connected in one way.
- Insert the Micro SD card loaded with the appropriate PYNQ image into the MicroSD card slot underneath the board
- (Optional) Connect the USB cable to your PC/Laptop, and to the USB JTAG UART MicroUSB port on the board
- Connect the Ethernet port by following the instructions below
- Turn on the board and check the boot sequence by following the instructions below
As indicated in step 6, slide the power switch to the ON position to turn on the board. A Red LED and some additional yellow board LEDs will come on to confirm that the board has power. After a few seconds, the red LED will change to Yellow. This indicates that the bitstream has been downloaded and the system is booting.
Network connectionOnce your board is set up, you need to connect to it to start using the Jupyter notebook.
EthernetIf available, you should connect your board to a network or router with Internet access. This will allow you to update your board and easily install new packages.
Connect to a ComputerYou will need to have an Ethernet port available on your computer, and you will need to have permissions to configure your network interface. With a direct connection, you will be able to use PYNQ, but unless you can bridge the Ethernet connection to the board to an Internet connection on your computer, your board will not have Internet access. You will be unable to update or load new packages without Internet access.
Connect directly to a computer (Static IP):
- Assign your computer a static IP address
- Connect the board to your computer’s Ethernet port
- Browse to http://192.168.2.99
If you connect to a router or a network with a DHCP server, your board will automatically get an IP address. You must make sure you have permission to connect a device to your network, otherwise, the board may not connect properly.
Connect to a Router/Network (DHCP):
- Connect the Ethernet port on your board to a router/switch
- Connect your computer to Ethernet or WiFi on the router/switch
- Browse to http://<board IP address>
- Optional: see Change the Hostname below
- Optional: see Configure Proxy Settings below
Once your board is set up, to connect to Jupyter Notebooks open a web browser and navigate to:
- http://192.168.2.99 If your board is connected to a computer via a static IP address
If your board is configured correctly you will be presented with a login screen. The username is xilinx and the password is also xilinx.
After logging in, you will see the following screen:
The default hostname is pynq and the default static IP address is 192.168.2.99. If you changed the static IP of the board, you will need to change the address you browse to.
The first time you connect, it may take a few seconds for your computer to resolve the hostname/IP address.
Example NotebooksPYNQ uses the Jupyter Notebook environment to provide examples and documentation. Using your browser you can view and run the notebook documentation interactively.
The Getting_Started folder in the Jupyter home area includes some introductory Jupyter notebooks.
The example notebooks have been divided into categories
- common: examples that are not overlay specific
Depending on your board, and the PYNQ image you are using, other folders may be available with examples related to Overlays. E.g. The base directory will have examples related to the base overlay. If you install any additional overlays, a folder with example notebooks will usually be copied here.
When you open a notebook and make any changes, or execute cells, the notebook document will be modified. It is recommended that you “Save a copy” when you open a new notebook. If you want to restore the original versions, you can download all the example notebooks from GitHub.
Configuring PYNQAccessing Files on The BoardSamba, a file-sharing service, is running on the board. This allows you to access the Pynq home area as a network drive, to transfer files to and from the board.
Note
In the examples below change the hostname or IP address to match your board settings.
To access the Pynq home area in Windows Explorer type one of the following in the navigation bar.
\\192.168.2.99\xilinx # If connected to a Computer with a Static IP
When prompted, the username is xilinx and the password is xilinx. The following screen should appear:
To access the home area in Ubuntu, open a file browser, click Go -> Enter Location and type one of the following in the box:
smb://192.168.2.99/xilinx # If connected to a Computer with a Static IP
When prompted, the username is xilinx and the password is xilinx
Change the HostnameIf you are on a network where other PYNQ boards may be connected, you should change your hostname immediately. This is a common requirement in a work or university environment. You can change the hostname from a terminal. You can use the USB cable to connect a terminal. A terminal is also available in the Jupyter environment and can be used from an internet browser.
To access the Jupyter terminal, in the Jupyter portal home area, select New >> Terminal.
This will open a terminal inside the browser as root.
Use the preloaded pynq_hostname.sh script to change your board’s hostname.
pynq_hostname.sh <NEW HOSTNAME>
The board must be restarted for the changes to be applied.
shutdown -r now
Note that as you are logged in as root, sudo is not required. If you connect a terminal from the USB connection, you will be logged in as the xilinx user and sudo must be added to these commands.
When the board reboots, reconnect using the new hostname.
If you can’t connect to your board, see the step below to open a terminal using the micro USB cable.
Configure Proxy SettingsIf your board is connected to a network that uses a proxy, you need to set the proxy variables on the board. Open a terminal as above and enter the following where you should replace “my_http_proxy:8080” and “my_https_proxy:8080” with your settings.
set http_proxy=my_http_proxy:8080
set https_proxy=my_https_proxy:8080
TroubleshootingOpening a USB Serial TerminalIf you can’t access the terminal from Jupyter, you can connect the micro-USB cable from your computer to the board and open a terminal. You can use the terminal to check the network connection of the board. You will need to have terminal emulator software installed on your computer. PuTTY is one application that can be used and is available for free on Windows. To open a terminal, you will need to know the COM port for the board.
On Windows, you can find this in the Windows Device Manager in the control panel.
- Open the Device Manager, expand the Ports menu
- Find the COM port for the USB Serial Port. e.g. COM5
- Open PuTTY
Once PuTTY is open, enter the following settings:
- Select serial
- Enter the COM port number
- Enter the serial terminal settings (below)
- Click Open
Full terminal Settings:
- 115200 baud
- 8 data bits
- 1 stop bit
- No Parity
- No Flow Control
Hit Enter in the terminal window to make sure you can see the command prompt:
xilinx@pynq:/home/xilinx#
Setting Up the project- In the command prompt enter
git clone https://github.com/CodersCafeCommunity/EagleEye.git
- Now navigate to the directory using
cd /EagleEye/core/surveillance-centre
- Now run the main python file
python3 main.py
System ArchitectureThe system consists of 2 parts,
1. The Core
Suppose there are 'n' control centers or surveillance centers working in the state. We will provide a stand-alone software (based on ALPR AI) which have the potential to monitor the live cam feeds streamed to the center (this is restricted to some potential limitations of computational power and resource requirements) which continuously recognizes all the license plate numbers passing through the cam feed. The license plate numbers recognized by the software and are connected to a centralized server. Let's call this system the core.
2. The Interface
The user interface (preferably a website or a mobile application) is a place where both public and police interact with the centralized server. The public can register the cases related to vehicles and the police can keep track of the cases through this interface.
WorkingA user can register a case here with all relevant details.
Once a case is registered through the user platform, the relevant details like license plate number are passed to the core. The core then initiates a search through the logged data and checks if it has any trace of the vehicle appearing in the case. If found, it will generate a report with location and time details.
The assigned police officer can access the report here ( using default credentials firstsuperadmin:password
) which could be followed by appropriate actions. The process continues every hour and the report is frequently updated until the case is closed.
- Since the complaint is registered online there is no possibility of a delay between registration of the complaint and the commencement of the investigation.
- Since all the number plates are logged, it is easy to handle multiple cases using the same software.
Read the detailed documentation here
Credits
This project uses OpenALPR which is an open-source Automatic License Plate Recognition library. Read more here
Comments