ABSTRACT
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.
- 2015. diff_drive_controller is hard-coded into the ’odom’ reference frame #204. https://github.com/ros-controls/ros_controllers/issues/204Google Scholar
- 2017. TF: Debugging Tools. http://wiki.ros.org/tf/Debugging toolsGoogle Scholar
- 2019. ORB-SLAM2 ROS node. http://wiki.ros.org/orb_slam2_rosGoogle Scholar
- 2019. T265 frame questions #772. https://github.com/IntelRealSense/realsense-ros/issues/772Google Scholar
- 2020. Incorrect frame tree cartographer ros and t265 camera #1599. https://github.com/IntelRealSense/realsense-ros/issues/1599Google Scholar
- Nurlida Basir, Ewen Denney, and Bernd Fischer. 2010. Deriving Safety Cases for Hierarchical Structure in Model-Based Development. In Proceedings of the 29th International Conference on Computer Safety, Reliability, and Security (SAFECOMP’10). Springer-Verlag, Berlin, Heidelberg. 68–81. isbn:3642156509Google ScholarDigital Library
- Geoffrey Biggs. 2007. Designing an application-specific programming language for mobile robots. Ph.D. Dissertation. ResearchSpace@ Auckland.Google Scholar
- Alex Brooks, Tobias Kaupp, Alexei Makarenko, Stefan Williams, and Anders Oreback. 2005. Towards component-based robotics. In 2005 IEEE/RSJ International Conference on Intelligent Robots and Systems. 163–168.Google ScholarCross Ref
- Davide Brugali and Patrizia Scandurra. 2009. Component-based robotic engineering (part i)[tutorial]. IEEE Robotics & Automation Magazine, 16, 4 (2009), 84–96.Google ScholarCross Ref
- Herman Bruyninckx. 2001. Open robot control software: the OROCOS project. In Proceedings 2001 ICRA. IEEE international conference on robotics and automation (Cat. No. 01CH37164). 3, 2523–2528.Google ScholarCross Ref
- Luca Cardelli. 1996. Type systems. ACM Computing Surveys (CSUR), 28, 1 (1996), 263–264.Google ScholarDigital Library
- Kostadin Damevski. 2009. Expressing measurement units in interfaces for scientific component software. In Proceedings of the 2009 Workshop on Component-Based High Performance Computing. 1–8.Google ScholarDigital Library
- Dawson Engler, David Yu Chen, Seth Hallem, Andy Chou, and Benjamin Chelf. 2001. Bugs as Deviant Behavior: A General Approach to Inferring Errors in Systems Code. In Proceedings of the Eighteenth ACM Symposium on Operating Systems Principles (SOSP ’01). Association for Computing Machinery, New York, NY, USA. 57–72. isbn:1581133898 https://doi.org/10.1145/502034.502041 Google ScholarDigital Library
- Tully Foote. 2013. tf: The transform library. In IEEE International Conference on Technologies for Practical Robot Applications (TePRA), 2013 (Open-Source Software workshop). 1–6. issn:2325-0526 https://doi.org/10.1109/TePRA.2013.6556373 Google ScholarCross Ref
- Tully Foote and Mike Purvis. 2010. Standard Units of Measure and Coordinate Conventions. https://www.ros.org/reps/rep-0103.htmlGoogle Scholar
- Open Source Robotics Foundation. [n.d.]. ROS Topics homepage. http://wiki.ros.org/TopicsGoogle Scholar
- Brian Gerkey, Richard T Vaughan, and Andrew Howard. 2003. The player/stage project: Tools for multi-robot and distributed sensor systems. In Proceedings of the 11th international conference on advanced robotics. 1, 317–323.Google Scholar
- Irfan Ul Haq, Juan Caballero, and Michael D Ernst. 2015. Ayudante: Identifying undesired variable interactions. In Proceedings of the 13th International Workshop on Dynamic Analysis. 8–13.Google ScholarDigital Library
- Sayali Kate, Michael Chinn, Hongjun Choi, Xiangyu Zhang, and Sebastian Elbaum. 2021. PHYSFRAME: Type Checking Physical Frames of Reference for Robotic Systems. arxiv:2106.11266.Google Scholar
- Sayali Kate, John-Paul Ore, Xiangyu Zhang, Sebastian Elbaum, and Zhaogui Xu. 2018. Phys: probabilistic physical unit assignment and inconsistency detection. In Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 563–573.Google ScholarDigital Library
- Andrew Kennedy. 1994. Dimension Types. In Proceedings of the 5th European Symposium on Programming: Programming Languages and Systems (ESOP ’94). Springer-Verlag, Berlin, Heidelberg. 348–362. isbn:3540578803Google Scholar
- Andrew Kennedy. 2009. Types for Units-of-Measure: Theory and Practice. In Proceedings of the Third Summer School Conference on Central European Functional Programming School (CEFP’09). Springer-Verlag, Berlin, Heidelberg. 268–305. isbn:3642176844Google Scholar
- Michael Lowry, Thomas Pressburger, and Grigore Rosu. 2001. Certifying Domain-Specific Policies. In Proceedings of the 16th IEEE International Conference on Automated Software Engineering (ASE ’01). IEEE Computer Society, USA. 81.Google ScholarDigital Library
- Michael R. Lowry and Jeffrey Van Baalen. 1997. META-AMPHION: Synthesis of Efficient Domain-Specific Program Synthesis Systems. Automated Software Engg., 4, 2 (1997), April, 199–241. issn:0928-8910 https://doi.org/10.1023/A:1008637201658 Google ScholarDigital Library
- Gergely Magyar, Peter Sinčák, and Zoltán Krizsán. 2015. Comparison study of robotic middleware for robotic applications. In Emergent Trends in Robotics and Intelligent Systems. Springer, 121–128.Google Scholar
- Daniel Marjamaeki. 2017. Cppcheck - A tool for static C/C++ code analysis. http://cppcheck.sourceforge.net/Google Scholar
- Wim Meeussen. 2010. Coordinate Frames for Mobile Platforms. https://www.ros.org/reps/rep-0105.htmlGoogle Scholar
- Thomas Moulard. 2011. Coordinate Frames for Humanoid Robots. https://www.ros.org/reps/rep-0120.htmlGoogle Scholar
- Raúl Mur-Artal and Juan D. Tardós. 2017. ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras. IEEE Transactions on Robotics, 33, 5 (2017), 1255–1262. https://doi.org/10.1109/TRO.2017.2705103 Google ScholarDigital Library
- John-Paul Ore, Carrick Detweiler, and Sebastian Elbaum. 2017. Lightweight Detection of Physical Unit Inconsistencies Without Program Annotations. In Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2017). ACM, New York, NY, USA. 341–351. isbn:978-1-4503-5076-1 https://doi.org/10.1145/3092703.3092722 Google ScholarDigital Library
- John-Paul Ore, Carrick Detweiler, and Sebastian Elbaum. 2017. Phriky-Units: A Lightweight, Annotation-Free Physical Unit Inconsistency Detection Tool. In Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2017). Association for Computing Machinery, New York, NY, USA. 352–355. isbn:9781450350761 https://doi.org/10.1145/3092703.3098219 Google ScholarDigital Library
- Morgan Quigley, Ken Conley, Brian Gerkey, Josh Faust, Tully Foote, Jeremy Leibs, Rob Wheeler, and Andrew Y Ng. 2009. ROS: an open-source Robot Operating System. In ICRA workshop on open source software. 3.2, 5.Google Scholar
- John C Reynolds. 1974. Towards a theory of type structure. In Programming Symposium. 408–425.Google ScholarCross Ref
- Mikael Rittri. 1995. Dimension Inference under Polymorphic Recursion. In Proceedings of the Seventh International Conference on Functional Programming Languages and Computer Architecture (FPCA ’95). Association for Computing Machinery, New York, NY, USA. 147–159. isbn:0897917197 https://doi.org/10.1145/224164.224197 Google ScholarDigital Library
- Clearpath Robotics. 2017. Robots - PR2. http://wiki.ros.org/Robots/PR2Google Scholar
- Wim Meeussen Tully Foote, Eitan Marder-Eppstein. [n.d.]. Ros tf package homepage. http://wiki.ros.org/tf, http://wiki.ros.org/tf2Google Scholar
- Hans Utz, Stefan Sablatnog, Stefan Enderle, and Gerhard Kraetzschmar. 2002. Miro-middleware for mobile robot applications. IEEE Transactions on Robotics and Automation, 18, 4 (2002), 493–497.Google ScholarCross Ref
Index Terms
- PHYSFRAME: type checking physical frames of reference for robotic systems
Recommendations
Type checking and typability in domain-free lambda calculi
This paper shows (1) the undecidability of the type checking and the typability problems in the domain-free lambda calculus with negation, product, and existential types, (2) the undecidability of the typability problem in the domain-free polymorphic ...
Type checking and inference for polymorphic and existential types
CATS '09: Proceedings of the Fifteenth Australasian Symposium on Computing: The Australasian Theory - Volume 94This paper proves undecidability of type checking and type inference problems in some variants of typed lambda calculi with polymorphic and existential types. First, type inference in the domain-free polymorphic lambda calculus is proved to be ...
A Partial Type Checking Algorithm for Type
We analyze a partial type checking algorithm for the inconsistent domain-free pure type system Type:Type (λ*). We show that the algorithm is sound and partially complete using a coinductive specification of algorithmic equality. This entails that the ...
Comments