  A robotic system continuously measures its own motions and the external world
during operation. Such measurements are with respect to some frame of
reference, i.e., a coordinate system. A nontrivial robotic system has a large
number of different frames and data have to be translated back-and-forth from a
frame to another. The onus is on the developers to get such translation right.
However, this is very challenging and error-prone, evidenced by the large
number of questions and issues related to frame uses on developers' forum.
Since any state variable can be associated with some frame, reference frames
can be naturally modeled as variable types. We hence develop a novel type
system that can automatically infer variables' frame types and in turn detect
any type inconsistencies and violations of frame conventions. The evaluation on
a set of 180 publicly available ROS projects shows that our system can detect
190 inconsistencies with 154 true positives. We reported 52 to developers and
received 18 responses so far, with 15 fixed/acknowledged. Our technique also
finds 45 violations of common practices.
