DSPs are specialized processors dedicated to digital signal processing. Similar to GPUs, DSPs are designed to perform a very specific subset of tasks and also to exploit parallelism. Like CPUs, they often make use of SIMD (single instruction, multiple data) and VLIW processing to boost throughput and total performance per watt. CPUs such as Snapdragon™ can handle these tasks (and sometimes do), but DSPs offer better performance than general processors, and have more flexibility than a traditional ASIC.
The Qualcomm® Hexagon™ DSP is designed to accelerate certain workloads at performance efficiencies well above anything a modern CPU can offer. The Hexagon DSP is an advanced variable instruction length, VLIW (Very Long Instruction Word) processor, meaning it’s designed to extract maximum parallelism per clock cycle and to spread workloads across a wide set of execution units. Any digital signal that needs to be processed in a low power environment can thus be assigned to this processor (from voice features to sensors and computer vision applications).
The Hexagon DSP is a cluster of an application, modem and sensor DSPs. The aDSP or the Application DSP, allows the device to process simple sets of data on low power, without having to wake up the Application processor. The aDSP can run custom applications to perform simple tasks, like hotword detection for voice recognition and perhaps low power music playback. The sensor DSP was clubbed with the aDSP in earlier versions of Hexagon but is now a separate DSP.
It is aptly named “low power island” and designed to improve the battery life of always-on use cases, including step or activity counters as well as sensor-assisted positioning (using your platforms’ sensors to provide more accurate location when you don’t have a strong GPS signal). The modem DSP is typically not available on application processor variants of Snapdragon on which Inforce platforms are based on. A simple illustration of the Hexagon DSP processors in Snapdragon products is shown below
Using the Hexagon SDK, developers with expertise working in native programming environments can tap into hardware-enabled multimedia features to deliver interactive user experiences in much lesser time as compared to making source code modifications for this kind of functionality. The SDK is designed to help ensure multimedia processing efficiency, which means increased fluidity, low latency, and superior app performance. The Hexagon SDK is also designed to enable high computational burdens on the CPU to be off-loaded into a heterogeneous computing environment with the use of shared remote code objects.More information on the Hexagon DSP and SDK from Qualcomm is available at this link. Inforce’s Android BSP releases enable the use of Hexagon SDK on all its platforms.
The Robot Operating System (ROS) is a collection of tools, libraries, and conventions that aim to simplify the task of creating complex and robust robot behavior across a wide variety of robotic platforms. ROS encourages collaborative robotics software development. For example, one laboratory might have experts in mapping indoor environments, and could contribute a world-class system for producing maps. Another group might have experts using maps to navigate, and yet another group might have discovered a computer vision approach that works well for recognizing small objects in clutter.
ROS was designed specifically for groups like these to collaborate and build upon each other’s work. With this, the primary goal of ROS becomes to support code reuse in robotics research and development and it is all open source! The Open Source Robotics Foundation® (OSRF) made ROS available to a wider developer community by porting ROS libraries to the ARM® instruction set architecture owing to which Snapdragon™and other ARM-based chipsets have become a lot more interesting. By enabling ROS on platforms based on Snapdragon processors, it becomes possible to have Inforce platforms as the main computing device on a robot.A simple representation of a robot for computer vision purposes is shown below.
Central in this image is an Inforce platform which is a computer running Ubuntu Linux operating system. Below the computer, the input and output devices (I/O) are grouped. Some devices can connect as is, or may be part of another computer, while other devices might require some electronics to interface with. Since Inforce platforms support Ethernet and Wi-Fi capabilities, the single computer core could just as well be 10 computers, all running the ROS framework, communicating over a network. The ROS framework would tie it all together, and these ten computers would be supporting a single virtual entity, which is what you would call ‘the robot’. The possibilities are indeed endless!
Inforce makes fully featured Ubuntu/Debian releases for all its platforms and has qualified both ROS Indigo (Ubuntu 14.x) and ROS Jade (Ubuntu 15.x) releases. Since these platforms are not meant to cater only for robotics use-cases, the onboard eMMC would not be always sufficient to run the ginormous amount of code that accompanies ROS. But an external SD card can easily be partitioned and elaborate instructions to do this have been published at this link. The link is in fact a comprehensive tutorial on how to get going with ROS on an Inforce platform based on Snapdragon 600 processor but is also applicable to platforms from Inforce based on Snapdragon 410 or 805 processors.
TurtleBot™ is a low-cost, personal robot kit with open-source software. It is possible to install ROS with TurtleBot support on an Inforce platform and control the teleoperation. Instructions for installation on a Snapdragon 410 processor based Inforce platform are available at this link. A video of the Turtlebot operating with an Inforce platform based on Snapdragon 600is available at this link.