The controller which is the brain of the robot is a device that not only controls Dynamixels but also connects with various sensors and actuators. Robot developers can control the desired type of robot through various programming methods using the controller.
Based on Wikipedia (https://en.wikipedia.org/wiki/Main_Page) an embedded system is defined as a computer system with a dedicated function within a larger mechanical or electrical system. It is embedded as part of a complete device often including hardware and mechanical parts.
Thus, it is the brain of a system that requires control.
An embedded system is widely used in mobile phones, GPS receivers, household appliances such as washing machines, televisions, and devices that use informative equipment.
LCD devices and buttons mounted on refrigerators, washing machines, and TV are used to control functions and perform certain tasks. Since the biggest feature of the system was to perform certain tasks, it was possible to minimize size and reduce costs.
Embedded systems range from portable devices such as digital watches and MP3 players to larger systems such as refrigerators, controlling system in robots, and automation control systems.
An embedded board refers to a computer system built into an embedded system. It is commonly called a controller because it is used to control other devices and has a built-in microcontroller to control various devices embedded devices in the system using programs.
Microcontroller or Microcontroller Unit (MCU) is like a small type computer that makes a microprocessor and input/ouput (I/O) module into a SoC (System on Chip) that performs certain functions.
The internal MCU consists of a CPU core, memory and various peripherals and has an embedded FLASH memory to permanently save program codes. There are also communication devices and hardware embedded for various control as well.
The internal block diagram of the STM32F series from ST, a typical MCU maker, shows that the built-in CPU, the memory connected to the CPU, and various peripherals are embedded in one chip.
MMCUs are designed for embedded applications and are widely used in embedded systems. If a personal computer (PC) is used for a general purpose operation according to various demands, the MCU is programmed and mounted on devices to setup functions and perform certain operations. Therefore, it generally it has lower performance compared to a PC and has low memory and should be programmed in a constrained environment.
ARM (Advanced RISC Machine)
ARM is a company that designs a RISC-based processor and is based in the UK. ARM does not directly manufacture chips but designs a processor structure that can be embedded in the chip and licenses it to the chip maker so that the MCU or processor can be manufactured. Currently most embedded system use processor cores designed by ARM and is used in a variety of fields ranging from small-sized MCUs to high-performance processors for mobile phones.
ARM processors are currently categorized into three categories depending on their performance and usage. The ARM processor is called the Cortex processor, and the Cortex-A series is the Cortex-M series for MCU class and the Cortex-R series for real-time control. Within each series, performance is further classified according to the performance, so you can select the processor that suits your needs.
The Cortex-M series is the MCU class processor cores that can be used in small embedded systems, and Cortex-M0/3/4/7 is the high performance processor in that order. The most commonly used cores are the Cortex-M3, which has high performance, low power, and the price is similar to the existing 8bit processor. For higher performance, the Cortex-M4/7 is suitable. The biggest feature is that it has a built-in hardware that can perform floating point, so it has a speed advantage in real time calculation of algorithm.
Open Source Controller
The open source controller is an easy to use controller that can be modified and used since the schematic and source code are made public. Let's take a look at Arduino, the most popular open-source controller.
ARDUINO UNO :
It is the most commonly used controller with the 8 bit AVR processor. By providing the Arduino IDE integrated development environment, it provides a programming environment without complicated procedures and a high level API for hardware control to enable easier access to users from entry level to hobbyist.
ARDUINO IDE :
ARDUINO is an integrated development environment that allows you to write, build, and then download the source code to the controller. With the ARDUINO IDE installed, immediate development was made possible, and serial communication terminal or graph necessary for development are built-in for easy access. The ARDUINO IDE makes it easy for anyone with little or no knowledge of hardware or programming to control the hardware. By offering an easy-to-use development environment and hardware control API, many people can use it and as a result, many examples and libraries continue to accumulate and become increasingly easier to use.
Controllers from ROBOTIS
OpenCM9.04 (Open-source Controller Module) :
OpenCM9.04 controller is a microcontroller board based on 32bit ARM Cortex-M3. The OpenCM9.04’s schematics and source codes are open-source. It comes in a small size and is compatible with various sensors and actuators.
Full Control of the Dynamixel Line-up :
By connecting an RS485 expansion board to the OpenCM9.04 controller, you can control the entire lineup models of Dynamixel.
Convenient and Various Interface :
Downloads using a USB cable for smart devices and connects with various input/output devices using the GP I/O.
Convenient Development Environment :
ROBOTIS IDE allows you to program the OpenCM 9.04 as easily as when using the ARDUINO controller.
OpenCR (Open-source Controller module for ROS)
The OpenCR is an abbreviation of Open-source Control Module for ROS.
It is an embedded board that supports ROS and is used as main controller in the TurtleBot3.
Hardware information such as the circuit, firmware, Gerber data, and source code for the OpenCR implemented for TurtleBot3 are open and can be modified and redistributed by the user. It comes with the STM32F746 from ST as the main MCU with the Cortex-M7 core built in. Floating point calculation is supported by the hardware, making it suitable for implementing functions requiring high performance
High Performance :
The OpenCR, which uses the STM32F746 from ST, uses the high performance microcontroller Cortex-M7 core from ARM that runs up to 216Mhz. It can also be used for processing large amounts of data by utilizing algorithms or various peripherals that require high-speed operation.
Supports Arduino :
By using Arduino IDE in the basic development environment of the OpenCR, it allows easier access to those who are not familiar with the embedded development environment. By supporting interfaces compatible with Arduino UNO pin headers, many shield modules along with many libraries and source code created in the Arduino development environment are available. Since the OpenCR board is added and managed through the Arduino IDE's board manager, it can be efficiently managed when the board firmware is updated.
Various I/F :
The Dynamixel interface for Dynamixel actuators support both TTL and RS485 and is compatible with most of the Dynamixels. In addition, it supports UART/CAN communication interface and has additional GPIO. By basically supporting JTAG for board debugging, it is also possible for professional developers to develop and debug firmware using JTAG equipment such as STLink or JLink.
Power Output :
Supports 7V~24V input power with output of 12V, 5V, and 3.3V. Supports high output of 5V / 4A, so it can be used as power source for SBC such as Raspberry pie.