EMP: Edge-assisted Multi-vehicle Perception (MobiCom '21)

Related tags

Spring Boot EMP
Overview

EMP

EMP is an edge-assisted multi-vehicle perception system for connected and autonomous vehicles (CAVs), designed for efficient and scalable sensor data sharing under potentially fluctuating network conditions to enhance the CAVs' local perception. The code is used in our MobiCom '21 paper, EMP: Edge-assisted Multi-vehicle Perception.

Setup EMP

Setup PointPillars (please first setup the Python environment following this README) and Draco.

cd <src_root>/src/main/cpp/
./setup_pointpillars.sh  # Download PointPillars source code
./build_pointpillars.sh  # Build PointPillars library

cd <src_root>/src/main/cpp
./setup_draco.sh  # Download Draco source code
./build_draco.sh  # Build Draco library

Build the JNI native library.

cd <src_root>/
./build_native_lib.sh

You can directly run the system using IDE like IntelliJ IDEA or generate .jar file for running in a terminal.

./gradlew shadowjar

Run EMP

Edge

First start an edge instance. Change the algorithm index (1-4) to run different partitioning algorithm:

  1. No partitioning.
  2. Naive partitioning based on the Voronoi Diagram.
  3. Bandwidth-aware partitioning based on the Power Diagram.
  4. REAP partitioning.
java -Djava.library.path=build/src/main/cpp \
   -Dlog4j.configurationFile=src/main/resources/log4j2-config.xml \
   -cp build/libs/emp-1.0.jar org.emp.edge.EdgeServer \
   -p [server port] -t [number of threads] -a [algorithm index] -c [number of clients] (-s [save path])

Vehicle

Then start vehicle instances in different terminals/machines. The vehicle type corresponds to the algorithm index (1: VehicleFull, 2: VehicleNaive, 3: VehicleBW, 4: VehicleReap). In the dataset object-0227, the available vehicle IDs are 1 (ego-vehicle), 4354, 4866, 5378, 21506, 22786.

java -Djava.library.path=build/src/main/cpp \
   -Dlog4j.configurationFile=src/main/resources/log4j2-config.xml \
   -cp build/libs/emp-1.0.jar org.emp.vehicle.[vehicle type] \
   -i [server ip] -p [server port] -c [client port] \
   -v [vehicle ID] -d [data path] -r [frame rate]

Perception

We modified PointPillars and use it as the perception module in EMP evaluation.

Data

We modified DeepGTAV - PreSIL to create our synthetic multi-vehicle dataset from GTA V. The dataset contains vehicle sensor data (camera images, LiDAR point clouds, position/direction information) and labels.

Data type Description Format
image_2 Ego vehicle's front camera data
velodyne Ego vehicle's LiDAR data x, y, z, object ID (if the point is in a object such as vehicle or pedestrian)
oxts Ego vehicle's position/direction information in the KITTI format latitude, longitude, altitude (KITTI world position), roll, pitch, heading
label_2 Ground truth for surrounding objects type, truncated, occluded, alpha, 2d bbox (left top, right bottom), dimensions (hwl), 3d bbox (xyz, camera coordinates), rotation_y (camera coordinates)
label_2_aug Augmented labels for surrounding objects type, truncated, occluded, alpha, 2d bbox (left top, right bottom), dimensions (hwl), 3d bbox (xyz, camera coordinates), rotation_y (camera coordinates), object ID, points hit in 2D, points hit in 3D, speed, roll, pitch, object model, ID of vehicle the pedestrian is in
ego_object Augmented label for the ego vehicle (some values set to constant) type, -1, -1, -1, -1 -1 -1 -1, dimensions (hwl), 0 0 0, -1, object ID, -1, -1, speed, -1, -1, object model, 0

Reference

Please cite our work if it helps your research:

Xumiao Zhang, Anlan Zhang, Jiachen Sun, Xiao Zhu, Y. Ethan Guo, Feng Qian, and Z. Morley Mao. 2021. EMP: edge-assisted multi-vehicle perception. Proceedings of the 27th Annual International Conference on Mobile Computing and Networking. Association for Computing Machinery, New York, NY, USA, 545–558. DOI:https://doi.org/10.1145/3447993.3483242

Contact

Please feel free to reach out ([email protected]) for any questions about how to use the code or access to our dataset.

You might also like...

Java Constraint Solver to solve vehicle routing, employee rostering, task assignment, conference scheduling and other planning problems.

OptaPlanner www.optaplanner.org Looking for Quickstarts? OptaPlanner’s quickstarts have moved to optaplanner-quickstarts repository. Quick development

Jan 2, 2023

Reference implementation for MINAS (MultI-class learNing Algorithm for data Streams), an algorithm to address novelty detection in data streams multi-class problems.

Reference implementation for MINAS (MultI-class learNing Algorithm for data Streams), an algorithm to address novelty detection in data streams multi-class problems.

Sep 7, 2022

JGraphX - Library for visualizing (mainly Swing) and interacting with node-edge graphs.

JGraphX This project is end of life. We don't properly support Maven or publish to Maven Central. If that's an issue, use https://github.com/vlsi/jgra

Jan 5, 2023

Anthos Edge Use Cases for bringing apps and computation closer to the location where the action is, to improve response times and save bandwidth.

Anthos Bare Metal Edge Use Cases Edge computing is a distributed computing paradigm that brings computation and data storage closer to the location wh

Dec 20, 2022

Let Fixture Monkey generate test instances including edge cases automatically

Let Fixture Monkey generate test instances including edge cases automatically

Fixture Monkey is designed to generate controllable arbitrary instances easily. It allows you to reuse same configurations of the instances in several tests.

Jan 9, 2023

A Toolkit for Modeling and Simulation of Resource Management Techniques in Internet of Things, Edge and Fog Computing Environments

The iFogSimToolkit (with its new release iFogSim2) for Modeling and Simulation of Resource Management Techniques in Internet of Things, Edge and Fog Computing Environments. In the new release Mobili Management, Microservice Management, and Dynamic Clustering mechanisms are added as new features.

Dec 17, 2022

a fast, scalable, multi-language and extensible build system

Bazel {Fast, Correct} - Choose two Build and test software of any size, quickly and reliably. Speed up your builds and tests: Bazel rebuilds only what

Jan 4, 2023

Powerful event-bus optimized for high throughput in multi-threaded applications. Features: Sync and Async event publication, weak/strong references, event filtering, annotation driven

Powerful event-bus optimized for high throughput in multi-threaded applications. Features: Sync and Async event publication, weak/strong references, event filtering, annotation driven

MBassador MBassador is a light-weight, high-performance event bus implementing the publish subscribe pattern. It is designed for ease of use and aims

Jan 6, 2023

HornetQ is an open source project to build a multi-protocol, embeddable, very high performance, clustered, asynchronous messaging system.

HornetQ If you need information about the HornetQ project please go to http://community.jboss.org/wiki/HornetQ http://www.jboss.org/hornetq/ This file

Dec 3, 2022

Security engine for Java (authentication, authorization, multi frameworks): OAuth, CAS, SAML, OpenID Connect, LDAP, JWT...

Security engine for Java (authentication, authorization, multi frameworks): OAuth, CAS, SAML, OpenID Connect, LDAP, JWT...

pac4j is an easy and powerful security engine for Java to authenticate users, get their profiles and manage authorizations in order to secure web appl

Dec 30, 2022

Tink is a multi-language, cross-platform, open source library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse.

Tink A multi-language, cross-platform library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse. Ubuntu

Jan 3, 2023

Toolkit for testing multi-threaded and asynchronous applications

ConcurrentUnit A simple, zero-dependency toolkit for testing multi-threaded code. Supports Java 1.6+. Introduction ConcurrentUnit was created to help

Dec 30, 2022

Multi-platform transparent client-side encryption of your files in the cloud

Multi-platform transparent client-side encryption of your files in the cloud

Supporting Cryptomator Cryptomator is provided free of charge as an open-source project despite the high development effort and is therefore dependent

Jan 5, 2023

Lib-Tile is a multi Maven project written in JavaFX and NetBeans IDE 8 and provides the functionalities to use and handle easily Tiles in your JavaFX application.

Lib-Tile is a multi Maven project written in JavaFX and NetBeans IDE 8 and provides the functionalities to use and handle easily Tiles in your JavaFX application.

Lib-Tile Intention Lib-Tile is a multi Maven project written in JavaFX and NetBeans IDE and provides the functionalities to use and handle easily Tile

Apr 13, 2022

IoT Platform, Device management, data collection, processing and visualization, multi protocol, rule engine, netty mqtt client

IoT Platform, Device management, data collection, processing and visualization, multi protocol, rule engine, netty mqtt client

GIoT GIoT: GIoT是一个开源的IoT平台,支持设备管理、物模型,产品、设备管理、规则引擎、多种存储、多sink、多协议(http、mqtt、tcp,自定义协议)、多租户管理等等,提供插件化开发 Documentation Quick Start Module - giot-starte

Sep 13, 2022

Minecraft Multi-Threading Mod Fabric Port

MCMTFabric - Minecraft Multi-Threading Mod Fabric Port This mod is based on the amazing work on JMT-MCMT. Please check that repository for details. No

Dec 30, 2022

Multi-Tenant Spring Boot Application with separate databases using Hibernate and H2.

Multi-Tenant Spring Boot Application A Spring Boot application that utilises a multi-tenancy architecture by providing multiple databases, one for eac

May 9, 2022

NMCN(Niche Multi Channel Network),小眾多頻道網絡,是「同和新媒體矩陣」創始團隊於輿論資本全球化背景下率先提出的一種非營利性的去中心化自媒體聯盟形式,通過聯盟內創作單位的交流互推、共享資源等方式對抗資本侵蝕,在產出卓越作品的同時保障亞文化生存空間,為守護寶貴的非物質文化遺產盡綿薄之力。

NMCN(Niche Multi Channel Network),小眾多頻道網絡,是「同和新媒體矩陣」創始團隊於輿論資本全球化背景下率先提出的一種非營利性的去中心化自媒體聯盟形式,通過聯盟內創作單位的交流互推、共享資源等方式對抗資本侵蝕,在產出卓越作品的同時保障亞文化生存空間,為守護寶貴的非物質文化遺產盡綿薄之力。

同和新媒體矩陣 文檔 • 發布會 • 如何使用 • 素材矩陣示例站 • 視頻矩陣示例站 • 人脈矩陣demo 自媒體大航海時代,五大矩陣領航 同和新媒體矩陣是什麼? 我們旨在通過IT/互聯網+技術手段,為處於自媒體大航海時代的中小型創作者提供高效和去中心化的創作輔助服務,這些服務包括素材處理、信息分

Dec 22, 2022
Comments
  • Some of the .txt files are missing

    Some of the .txt files are missing

    When I tried to run the vehicle, I got an error that the "0000001.txt" file was not found. I could not find this file in the repo. Where to find all the files required by different vehicles and how to configure the data path as highlighted in the following command.

    java -Djava.library.path=build/src/main/cpp
    -Dlog4j.configurationFile=src/main/resources/log4j2-config.xml
    -cp build/libs/emp-1.0.jar org.emp.vehicle.[vehicle type]
    -i [server ip] -p [server port] -c [client port]
    -v [vehicle ID] -d [data path] -r [frame rate]

    The following screenshot shows the mentioned behavior. Please note that as I couldn't find the file path, I set up a dummy data path. 796F103A-FE42-411D-A5B1-CFC3AB9738DE

    opened by stonegen 2
  • Questions about dataset

    Questions about dataset

    I ran into some problems with the dataset while reproducing your work. I would like to know some details of "type", "object ID", "object model" and those "-1" in ego_object, or if you can provide some examples of these data for reference. At the same time I want to know the role of the data in the "order" folder. Looking forward to your reply!

    opened by Cyunon 2
  • Question about determining transmission of the current frame is finished

    Question about determining transmission of the current frame is finished

    Dear sir, you mentioned

    (2) 𝐶2 of one vehicle has not arrived (e.g., due to limited bandwidth) but the 𝐶3 of all its neighboring vehicles have been delivered; (3) Neither 𝐶1 nor 𝐶2 of one vehicle has arrived but its neighbors finish uploading their 𝐶3s and 𝐶4s.

    Why the C2 of a vehicle can be replaced by C3 of all its neighbor vehicle? (also, C1 C2 replaced by neighbors' C3 C4). We can't guarantee a vehicle's and neighbors‘ three boundaries (Lover, Lorigin,Lunder) are very likely in the similar positions, right?

    I am confused about this.

    opened by TronYY 2
  • Question about the java version and running environment.

    Question about the java version and running environment.

    When I run your system, the following problem occur on the car side: A fatal error has been detected by the Java Runtime Environment: SIGSEGV (0xb) at pc=0x00007f999f5ad163, pid=8194, tid=0x00007f99a0d31700"on the car side I wonder if your system needs to run under a certain java version? In addition, there may be a problem with my hardware. If possible, could you please tell me the running environment of your system?

    opened by Cyunon 0
Owner
Xumiao Zhang
UMich CSE PhD
Xumiao Zhang
Multi-Tenant Spring Boot Application with separate databases using Hibernate and H2.

Multi-Tenant Spring Boot Application A Spring Boot application that utilises a multi-tenancy architecture by providing multiple databases, one for eac

Alex Gschnitzer 15 May 9, 2022
Build criterion and ecosystem above multi-model databases

ShardingSphere - Building a Criterion and Ecosystem Above Multi-Model Databases Official Website: https://shardingsphere.apache.org/ Stargazers Over T

The Apache Software Foundation 17.8k Jan 9, 2023
Multi-OS Engine: Create iOS Apps in Java (or Kotlin ... etc.)

Multi-OS Engine Overview Multi-OS Engine provides a Java runtime and Java interfaces to iOS platform API to develop native iOS applications with nativ

Multi-OS Engine 561 Dec 22, 2022
Multi-Disciplinary Project

Multi-Disciplinary Project With an odd-numbered group of 7, the planning for the distribution of work is tricky since certain members have to take add

Lim You Rong 0 Mar 9, 2022
MarioCash is a trust-based multi-dimensional blockchains built with a vision to connect everything and any blockchain networks.

MarioCash We will change the world by blockchain. What is mariocash? MARIOCASH is a trust-based multi-dimensional blockchains (branches) built with a

Brantley·Williams 23 Mar 10, 2022
A multi-ride amusement park ticket application on NFC memory card

A multi-ride amusement park ticket application on NFC memory card. The security features cover mitigating: Man in the Middle attack, Rollback attack, tearing protection, Write Protection.

Jayshree Rathi 1 Nov 28, 2022
A supercharged gradle template for developing Minecraft plugins with multi platform support.

Minecraft Multi-Platform Template You can use this template to develop your own high quality Minecraft plugins for multiple platforms using Gradle wit

sVoxelDev 3 Nov 23, 2022
Cloud native multi-runtime microservice framework

Femas: Cloud native multi-runtime microservice framework The repository address has been transferred to PolarisMesh English | 简体中文 Introduction abilit

Tencent 17 Sep 5, 2022
An advanced, multi-purpose Discord bot

TechnoBot An advanced, multi-purpose bot for Discord Explore this project » Visit Wiki · Report Bug · Request Feature Table of Contents About The Proj

Thomas 13 Dec 28, 2022
BungeeCord/Spigot plugin that fixes Multi-world detection by simulating mod presence on the server side

Companion for map mods Unofficial BungeeCord and Spigot (Paper) companion plugin for Xaero's Minimap (and their World Map), JourneyMap and VoxelMap. T

Artur Khusainov 3 Sep 18, 2022