Bringing about real and scalable robotics to consumers requires the involvement of the community (similar to personal computers, internet, mobile and social). The robotics community, right now, lacks a standard platform to build and share ideas and applications. The existing solutions in the market are either too expensive/complicated or can be categorized as toys (very little functionality). With the simple initial requirement of python programming, our project gives access to the range of simple to research grade applications.
The project consists of hardware and software components. Both these components work seamlessly to provide an easy to work with environment.
Hardware: The system consists of a modular hardware. At the core of the system sits the UP1 CPU module. It is responsible for all the high level computation.
Using a standard connector, you can easily swap out modules to suit your application. IO module consists of sensors and interaction devices like speaker and microphone for the robot to sense the environment. The Base module brings everything together and structurally supports the robot. It also contains battery and related circuitry to power the whole system. Finally, the actuator module is used to manipulate the environment. Micro-controllers installed in each module take care of the low level functionality specific for the module.
The current version of the robot consists of a 1/2 arm actuator module, 4 wheeled mobility base, an IO module with stereo camera, a speaker and a microphone.
Software: The software runs ROS in its background and the Arduino library powers the low-level firmware, leveraging the whole community support behind them. On the front end, the user can interact with the robot using UpDroid Commander (UpCom), which is a browser based IDE that can be accessed from any laptop or PC on the same network. UpCom, installed on the UP1, will help users get access to their workspace, launch files and ROS packages on the robot. They can also use UpCom to launch and monitor their robot. The Tab API for UpCom can be used to build applications for different behaviors for the robot. Details about UpCom are described in the video below.
Electronics: Regarding the internals, the core of the system is a Intel Edison, with low-level duties delegated to the ATmega2560 on the Arduino Mega. The Edison has a wifi module for connectivity, connects to all IO (camera, microphone, speaker), and uses UART to connect up to the Arduino Mega. Currently, we are running Ubilinux (derivative of debian) and have compiled from source a version of ROS that is compatible and capable of running most major packages. The Arduino Mega controls: the wheels via the Arduino Motor Controller Board v3; the twelve hobby servos in the joints of the arms; the four infrared sensors in front and back; and the two LED's in front. Currently, communication between ROS on the Edison and the Arduino is handled thought the ros_arduino_bridge package enabling differential drive, and which we have modified to include a joint controller for the arms. Since we have two cameras in front, we can achieve stereo vision and generate a point cloud for use with ROS navigation.