The description of this 2016 release from Que publishing promises “a unique introduction to programming robots to execute tasks autonomously.” Although the introduction advises that the reader have some programming knowledge, this comprehensive guide offers much to non-programmers as well.
In order to translate human language to robot language, the authors provide examples using English commands translated into C and Java using Basic Universal Robot Translation. Topics include the definition of a robot, robot capabilities, visual planning, sensors, and executing tasks autonomously. The examples are for LEGO AV3 Mindstorms robot controllers, Arduino Uno and similar entry-level robot controllers; however, many of the concepts and tools provided are applicable to industrial environments and non-autonomous, collaborative robots. Pages of sample code are provided for programmers, but even non-programmer readers (like me) who skim over the code will still find much value in the theory and background information provided.
The authors devote much attention to describing how to visualize what you want the robot to do and how to represent the physical environment and conditions in language the robot will understand. They present a series of tools such as Robot Scenario Visual Planning. Each topic is explained clearly and often supported with streamlined illustrations that give excellent examples of concepts such as reach calculations, obstacle avoidance, and a comparison of robotic arms with 2 degrees of freedom(DOF) vs 6 DOF. Acronyms are introduced and reinforced for key concepts. For example, REQUIRE (Robot Effectiveness Quotient Used in Real Environments) is a means to rate a robot’s effectiveness by evaluating each sensor, actuator, end effector and controller.
Sensors are given much discussion, including a table comparing human and robot senses, with some human senses such as hunger and thirst not applicable for robots, and some robot senses such as magnetic and force not applicable in humans. After a discussion of the types, limitations and precision of sensors, more specific information about programming sensors is provided, with the acronym SPACES (Sensor Precondition/Postcondition Assertion Check of Environmental Situations) used to describe a stop/go test that’s a key decision making tool used by autonomous robots.
Two examples are followed throughout the book: one of a robot tasked with lighting candles on a birthday cake and clearing dishes; the other a stranded jet-skier who needs to quickly learn robot programming to recharge a battery. The jet skier example doesn’t seem as cohesive as the first example, and could be part of a marketing plan to tack on multimedia to reach a younger audience by adding a graphic-novel style story in the back of the book and linking to a website. Interested readers may find value, and others can easily skim past those parts to get back to the meat of the book.
The closing chapters provide resource lists of open source low-cost robots and components, further reading for those interested in pursuing robotics, and encouragement to start. A glossary and index add even more useful content to make this robot programming guide a valuable reference source, and a good addition to a robotics library.
With robot technology changing so quickly, the DARPA examples may seem dated in a few years, but the theoretical information the book provides will continue to be relevant. Even the code examples shouldn’t become obsolete too quickly. Arduino controllers have been around for over ten years and are still widely used. Overall, the information provided in Robot Programming: A Guide to Controlling Autonomous Robots is ideal for both hobby and professional robot programmers, project managers tasked with implementing robotic solutions in the workplace, and robot enthusiasts.
Hughes, Cameron; Hughes, Tracey. Robot Programming: A Guide to Controlling Autonomous Robots. © 2016 Pearson Education ISBN-10: 0-7897-5500-9; ISBN-13: 978-0-7897-5500-1