User:Jayschultz/Cubelets

Cubelets are small toy building blocks that magnetically snap together into various combinations, forming a robot. The robot's functions are all pre-programmed inside the blocks and do not require the user to write any robotic code or wire any circuits for the robot to work. Each cubelet has only one function, but communicates with neighboring cubes, causing the robot to perform an action. There are 3 families of Cubelet blocks, action blocks, sensor blocks, and think/utility blocks, with each family of blocks serving a different purpose within the robot that is created. Cubelets are available in several different kits, varying in number and types of cubelets provided. The kits are available for purchase by Modular Robotics.

Development & Production
Eric Schweikardt developed Cubelets at Carnegie Mellon University, one of the nation's best universities regarding robotic research. Schweikardt wanted to let people interact with digital architecture models and decided that building blocks would be the best way to do so. After developing cubelets, Schweikardt was able to get a small business grant from the National Science Foundation, helping him fund the company Modular Robotics. Modular Robotics was created to help commercialize Schweikardt's ideas and stand as the backbone behind the cubelets product. Modular Robotics receives custom parts from factories all over China and then prepares and assembles the cubelet products in Boulder, Colorado, where they are then ready to be shipped and sold. The cubelets can be purchased individually or in kits. The KT01 Standard Cubelet Kit contains 20 cubelet blocks, while the KT06 Cubelet Kit contains only 6 blocks.

Cubelet Block Families
There are currently 16 cubelet blocks available for purchase. Each cubelet is grouped into one of three block families: action blocks, sensor blocks or think/utility blocks. The family that a cubelet is grouped with corresponds to the block's internal function and the use it serves when forming a robot.

Action Blocks
The action block cubelets act as outputs by reacting to surrounding block values and performing a certain action. Each action block takes in numbers and details given from the other cubelets and returns an output function or, what Modular Robotics refers to as, an action. Some blocks are allocated a numerical value. The numerical value of one cubelet block will cause another cubelet block to perform or communicate in a certain way. For example, some cubelets may cause the rotate block to rotate extremely fast while other cubelets may cause the block to spin extremely slow or stop spinning completely. The action cubelets figuratively represent a human's voice or arms, by giving off sounds or moving a certain piece of the robot. There are currently 6 types of action blocks available:


 * Drive Block: The drive block is an action cubelet that has 2 cylinder shaped wheels placed on its bottom surface. The block is designed to roll across a horizontal surface at a certain speed. The speed slows down when an input near 0 is given and increases as the input increases respectively. The drive block can only move in one direction at a time, with the direction also being affected by a given input from surrounding cubelets.


 * Rotate Block: The rotate block is an action cubelet that has one of its faces dedicated to a rotating disc. The disc rotates at a rate that is related to a given input by the other cubelets.


 * Speaker Block: The speaker block is a unique cubelet that emits sound. The speaker cubelets is equipped with a small speaker and an amplifier. The block gives off a certain noise based on its given data from surrounding cubelets.


 * Flashlight Block: The flashlight block gives off a white light when given an input greater than 0. The white light increases in brightness as the given input gets father away from 0. The light is powered by a strong LED light that is implanted inside of the block.


 * Bar Graph Block: The bar graph block is an action block that features a small bar graph on one of its faces. The bar graph lights up to a certain value based on the data that is being inputted into the block at a certain time. This block allows the person assembling the blocks to check the value of a certain cubelet when snapped into a certain position.


 * Bluetooth Cubelet: The bluetooth block contains a very small Bluetooth radio that allows the robot to be controlled remotely by Android or PC devices. Users can download the Cubelets Control app on their phone or computer to remotely control their robot and override the functions of up to six action blocks. The communication between the bluetooth block and the control application allows the user to view each block's current value and monitor their robot's performance. The bluetooth block is not currently compatible with iOS devices.

Sensor Blocks
The sensor block cubelets act as the inputs for the robot. The inputs are given to the action blocks which then perform an action based on the sensor block's given input. Inputs can be created by swiping your hand past a block, blowing on a block or even shining light into one of the cubelets. The sensor blocks figuratively represent the robot's senses like sight, hearing and touch. There are currently 4 sensor blocks available:


 * Knob Block: The knob block is a sensor cubelet that has a turn-able knob on one of its faces. The knob can be turned to manually represent a certain value. When the knob is turned fully counterclockwise, the block's value is 0. When turned fully clockwise, the block's value is 1.


 * Brightness Block: The brightness block contains a light sensor module on one of its faces. The sensor detects the amount of light hitting the cubelet. The cubelet contains a light-detecting photocell that can evaluate the intensity of light being shined into the sensor. The darker the light, the closer the block's value is to 0. The brighter the light, the closer the block's value is to 1.


 * Distance Block: The distance block is a sensor cubelet that can detect how close it is to an object that it is facing. The block utilizes an infrared laser and is generally accurate in a distance of 10-80cm. The block only detects how far something is in front of its sensor. The closer an object is to the cubelet, the higher the blocks value becomes.


 * Temperature Block: The temperature block acts as a small thermometer. The block responds to a given temperature which can be increased or decreased by the weather or even breathing into the block. Colder temperatures give the block small values near 0 while conditions reaching around 35 degrees Celsius will give the block a value of 255.

Think/Utility Blocks
The think blocks, also referred to as utility blocks, act as small brains that power the robot. The utility blocks take given inputs and evaluate them within a certain function or logical expression that is already programmed each type of utility block. The utility blocks are what give the robot instructions and power. There are currently 6 types of utility blocks available:


 * Inverse Block: The inverse block is a utility cubelet that takes a given input and gives the opposite of it. In other words it flips the value around or "gives the inverse" of a certain value. The block can take in a value like 0 and will return a value of up to 255 to the robot.


 * Minimum Block: The minimum block is a utility block that can take in any amount of data and given values. However, it will only return the smallest value that it has received. For example, imagine that our minimum block is given the values, 2, 4.3, 7, 255, and 0. The block will only return the value 0 to the rest of its neighboring cubelets. The block can be used to make an on/off switch that turns a robot on or off when reaching a certain value.


 * Maximum block: The maximum block is a utility cubelet that acts similarly to the minumum block. The maximum block takes in any amount of data and values and returns the greatest given piece of information. It is the opposite of the minimum cubelet block. The block can be used to make a robot that performs a function only when reaching a certain maximum value.


 * Battery Block: The battery block is what powers all of the possible robot combinations, without it a robot will not be able to function or turn on. The battery block contains two rechargeable batteries that can be removed to be charged. The batteries work best when they are equally charged. If one battery has power than the other, the latter will shut off until the higher-power battery uses enough power for the blocks to have an equal charge. You can use any number of battery blocks within a robot. It is recommended to use more batteries when powering bigger robots.


 * Passive block: The passive block is a utility cubelet that acts as wire within the robot creation. It sits between blocks and transmits data and power to other blocks. The block does not change the data it is carrying at all, it only passes the data on to surrounding blocks.


 * Blocker Block: The blocker block is a utility cubelet acts as a informational wall. The block can block data and values while still passing on power. This can limit where information goes throughout the robot and can limit what blocks receive certain values.