Published July 12, 2018 | Version 1.0.0
Software Open

Artifact (software + dataset) for "Phys: Probabilistic Physical Unit Assignment and Inconsistency Detection"

  • 1. Purdue University
  • 2. University of Nebraska--Lincoln
  • 3. Nanjing University

Description

https://unl-nimbus-lab.github.io/phys

phys is a tool to detect physical unit inconsistencies in C++ that builds against the Robot Operating System. phys is a command-line tool that can be used with Docker.

For example, assume a developer is building a robot and wants to calculate the length of the hypotenuse of a triangle with sides x_err and y_err, but the developer accidentally uses a multiply symbol (*) instead of an addition symbol (+), and ends up adding x_err * x_err (meter-squared) to err_y (meter):

err_d = sqrt( err_x * err_x + err_y + err_y); (source)

This code compiles and but this bug can be difficult to detect.  It is coincidentally correct for values near 2. Yikes!  This kind of error is called a physical unit inconsistency, and phys can detect it without developer annotations.

-------------

THE BEST WAY TO START is by opening index.html from a web browser.

 

This repository contains the following files and folders:

  • Dockerfile : a Docker install file for **phys**.
  • INSTALL.txt  : Describes how to install **phys** using Docker and a minimal working example.
  • LICENSE.txt : BSD-2-Clause license.
  • README.md  :  This file. 
  • STATUS  : Describes the ACM artifact badges sought for this artifact.
  • data/  : Folder containing C++ files used to evaluate and test **phys**.
  • docs/  : the help pages (HTML) referenced by index.html.
  • index.html : THE BEST PLACE TO START.
  • requirements.txt : List of python dependencies required by **phys**.  Referenced by the Dockerfile.
  • src/ : The python source code for **phys**.

 

Credits

 

Files

jore_at_cse_dot_unl_dot_edu__tooname_phys__FSE18_submission_210.zip

Files (31.1 MB)