Abstract
An application-specific approach to the design of a robot programming language may allow for a language better suited to the unique challenges found when programming in this domain. One area of robotics programming that can be supported by an application-specific approach is dimensioned data. Robot programs typically manage a substantial amount of dimensioned data. However, existing robot programming tools do not directly support the description and manipulation of dimensioned quantities. A new system is presented for managing dimensioned data in robot software. The design provides a new primitive data type to support dimensioned data. Its unique syntax improves program readability and writability. Dimensional consistency is automatically checked by the system and any errors are reported, significantly easing the debugging of dimensioned data and improving the reliability of robot software. The data type is evaluated by common criteria for evaluating programming languages and a small user study, and is found to be an improvement.
Similar content being viewed by others
References
Agrawal, M. B., & Garg, V. K. (1984). Dimensional analysis in Pascal. SIGPLAN Notes, 19(3), 7–11.
Allen, E., Chase, D., Luchangco, V., Maessen, J.-W., & Steele, G. L. Jr. (2004). Object-oriented units of measurement. In OOPSLA ’04: Proceedings of the 19th annual ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications (pp. 384–403). New York: ACM Press, ISBN 1-58113-831-9.
Armstrong, J. (1997). The development of Erlang. In ICFP ’97: Proceedings of the second ACM SIGPLAN international conference on functional programming (pp. 196–203). New York: ACM Press.
Baldwin, G. (1987). Implementation of physical units. SIGPLAN Notes, 22(8), 45–50.
Biggs, G., & MacDonald, B. (2003). A survey of robot programming systems. In Proceedings of the Australasian conference on robotics and automation, CSIRO, Brisbane, Australia, December 1–3 2003.
Biggs, G., & MacDonald, B. (2005). On specifying reactivity in robotics. In Proceedings of the Australasian conference on robotics and automation, University of New South Wales, Sydney, Australia, December 5–7 2005.
Blank, D., Meeden, L., & Kumar, D. (2003). Python robotics: An environment for exploring robotics beyond legos. In Proceedings of the Thirty-Fourth SIGCSE Technical Symposium on Computer Science Education, Reno, Nevada, February 2003. New York: ACM Press.
Bollella, G. et al. (2001). The real-time specification for Java, version 1.0.2, November 2001. http://www.rtsj.org.
Brooks, A., Kaupp, T., Makarenko, A., Williams, S., & Oreback, A. (2005). Towards component-based robotics. In Intelligent robots and systems, 2005 (IROS 2005). 2005 IEEE/RSJ international conference (pp. 163–168).
Brown, W. E. (1998). Introduction to the SI library of unit-based computation. In International conference on computing in high energy physics (CHEP’98), Chicago, August 31–September 4 1998.
Cañas, J. M., Matellán, V., Biggs, G., & MacDonald, B. A. (2007). Sidebar—programming commercial robots. In Software engineering for experimental robotics (pp. 125–132). Berlin: Springer.
Cmelik, R. F., & Gehani, N. H. (1988). Dimensional analysis with C++. IEEE Software 5(3), 21–27.
Collett, T., MacDonald, B., & Gerkey, B. (2005). Player 2.0: Toward a practical robot programming framework. In Proceedings of the Australasian conference on robotics and automation, University of New South Wales, Sydney, Australia, December 5–7 2005.
Cote, C., Letourneau, D., Michaud, F., Valin, J.-M., Brosseau, Y., Raievsky, C., Lemay, M., & Tran, V. (2004). Code reusability tools for programming mobile robots. In Intelligent robots and systems, 2004 (IROS 2004). Proceedings. 2004 IEEE/RSJ International Conference (Vol. 2, pp. 1820–1825).
Dautelle, J.-M., & Keil, W. (2008). JSR-275—Units API—Expert group collaboration home. https://jsr-275.dev.java.net/.
Dreiheller, A., Mohr, B., & Moerschbacher, M. (1986). Programming Pascal with physical units. SIGPLAN Notes, 21(12), 114–123.
Gehani, N. (1977). Units of measure as a data attribute. Computer Languages, 2(3), 93–111.
Gehani, N. H. (1985). Ada’s derived types and units of measure. Software: Practices and Experience, 15(6), 555–569.
Gonzalez, D. W., Peart, T. (1993). Applying dimensional analysis. Ada Letters, XIII(4), 77–86.
Grein, C., Kazakov, D. A., & Wilson, F. (2003). A survey of physical unit handling techniques in Ada. In Lecture Notes in Computer Science : Vol. 2655. Ada-Europe 2003 (pp. 258–270). Berlin: Springer.
Hilfinger, P. N. (1988). An Ada package for dimensional analysis. ACM Transactions on Programming Languages Systems, 10(2), 189–203.
House, R. T. (1983). A proposal for an extended form of type checking of expressions. Computer Journal, 26(4), 366–374.
Howatt, J. (1995). A project-based approach to programming language evaluation. SIGPLAN Notes, 30(7), 37–40.
Jupp, E. W. (1962). An introduction to the dimensional method. London: Cleaver-Hume Press.
Kennedy, A. J. (1996). Programming languages and dimensions. Technical report, St. Catherine’s College, March 1996.
Kramer, J., & Scheutz, M. (2007). Development environments for autonomous mobile robots: A survey. Autonomous Robots, 22, 101–132.
MacDonald, B. A., Biggs, G., Collett, T. H. J., & Kuo, Y. H. (2007). Software engineering for experimental robotics. Berlin: Springer, Chap. 44.
Massey, B. S. (1971). Units, dimensional analysis and physical similarity. London, New York: Van Nostrand Reinhold.
Montemerlo, M., Roy, N., & Thrun, S. (2003). Perspectives on standardization in mobile robot programming: the Carnegie Mellon Navigation (CARMEN) Toolkit. In Intelligent robots and systems, 2003 (IROS 2003). Proceedings 2003 IEEE/RSJ international conference (Vol. 3, pp. 2436–2441).
Novak, G. S. Jr. (1995). Conversion of units of measurement. IEEE Transactions on Software Engineering, 21(8), 651–661.
Prechelt, L. (2000). An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl for a search/string-processing program. Technical report, Fakultät für Informatik, Universität Karlsruhe, Germany, D-76128 Karlsruhe, Germany, March 2000. URL http://wwwipd.ira.uka.de/EIR.
Rogers, P. (1988). Dimensional analysis in Ada. Ada Letters, VIII(5), 92–100.
Sebesta, R. W. (2005). Concepts of programming languages (7th ed.). Redwood City: Benjamin/Cummings Publishing.
Stephenson, A. G., et al. (1999). Mars climate orbiter mishap investigation board phase I report. ftp://ftp.hq.nasa.gov/pub/pao/reports/1999/MCO_report.pdf, November 10 1999.
Umrigar, Z. D. (1994). Fully static dimensional analysis with C++. SIGPLAN Notes, 29(9), 135–139.
Vaughan, R. T., Gerkey, B. P., & Howard, A. (2003). On device abstractions for portable, reusable robot code. In Intelligent robots and systems, 2003 (IROS 2003). Proceedings. 2003 IEEE/RSJ international conference (Vol. 3, pp. 2421–2427).
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Biggs, G., MacDonald, B.A. A pragmatic approach to dimensional analysis for mobile robotic programming. Auton Robot 25, 405–419 (2008). https://doi.org/10.1007/s10514-008-9103-x
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10514-008-9103-x