Open FURBY uP controller is based on NXP Kinetis, Cortex M4. Firmware is managed by NXP MQX™ real-time operating system. Controller utilise Robotis Dynamixel protocol to communicate with PC. So, you can control him by any software that has implemented this kind of protocol. E.g. communication with motor, LCDs and all sensors may be realized in ROS which have their own dedicated dynamixel_motor node.
The PC control system that Open FURBY utilize as the main is an open-source software based on Gostai Urbi and compliant with the three-layer architecture paradigm. This system was developed by FLASH Robotics at the Wroclaw University of Technology to control their robots EMYS and FLASH.
The lowest layer of the control system consists of modules called UObjects which enable the programmer to access motion controllers, sensors and external software. These modules, written in C++, can be dynamically loaded into Urbi engine, which takes care of their orchestration (e.g. scheduling and parallelization of tasks).
The middle layer of the control architecture is responsible for the implementation of competencies, which define what tasks the robot will be able to perform. The competencies are usually implemented as sets of functions delivered by the low level modules. Urbi delivers a script language called urbiscript that gives the programmer a quick way of creating and synchronizing complex behaviors. The designed control system enables accessing the robot hardware and competencies in a unified manner - using a tree structure called robot. It makes using the API, implemented in the middle layer, more convenient and helps to maintain the modularity of software. Elements of the robot structure have been grouped based on their role, e.g. audio, video, body, emotions, network. The middle layer also contains the competency manager which decides how the specific behaviors should be realized, depending on the current physical setup of the robot (oFURBY can operate as a standalone robot or be combined with cameras, Kinect, arms or even mobile platform) every combination requires a different set of scripts in the competency manager).
The highest layer should contain a dedicated decision system responsible for utilizing the behaviors provided by the middle layer with respect to a specific application. This layer can contain anything from a simple remote controller to a complex system simulating human mind.
Finally, Open FURBY possessed functions allowing him to move his body in the same way as original version, speak generation and recognition, generate emotions, equiped with cammera or Kinect detect person/objects, find and read news from the Internet (and communicate them with regard to emotional content), browse websites, RSS channels, TV guides, weather forecast, stock exchange, etc. Open FURBY can also provide many different communication channels such as: e-mails, Facebook, Google Contacts, etc.
More about FLASH's software you can find here:
and there is a special edition set of scripts for Open FURBY:
github.com/FLASHRobotics/urbi_scripts_OpenFurby
oFURBY API documentation (only body part, rest is the same) :
www.facebook.com/notes/open-furby/open-furby-full-api-documentation/1684065541816397
Software installation:
www.facebook.com/notes/open-furby/control-system-installation/1684211061801845
and some programming examples:
Hello, I am interested in starting a new project to give artificial intelligence to a Furby, and I need help, so I would like to have people who know more about the subject. If anyone wants contact me, send dm to ferobusiness15@gmail.com