US20180311592A1 - Modular assembly system - Google Patents
Modular assembly system Download PDFInfo
- Publication number
- US20180311592A1 US20180311592A1 US16/009,180 US201816009180A US2018311592A1 US 20180311592 A1 US20180311592 A1 US 20180311592A1 US 201816009180 A US201816009180 A US 201816009180A US 2018311592 A1 US2018311592 A1 US 2018311592A1
- Authority
- US
- United States
- Prior art keywords
- module
- assembly
- control module
- host
- modules
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63H—TOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
- A63H11/00—Self-movable toy figures
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63H—TOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
- A63H27/00—Toy aircraft; Other flying toys
- A63H27/12—Helicopters ; Flying tops
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63H—TOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
- A63H29/00—Drive mechanisms for toys in general
- A63H29/22—Electric drives
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63H—TOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
- A63H30/00—Remote-control arrangements specially adapted for toys, e.g. for toy vehicles
- A63H30/02—Electrical arrangements
- A63H30/04—Electrical arrangements using wireless transmission
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63H—TOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
- A63H33/00—Other toys
- A63H33/005—Motorised rolling toys
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63H—TOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
- A63H33/00—Other toys
- A63H33/04—Building blocks, strips, or similar building parts
- A63H33/042—Mechanical, electrical, optical, pneumatic or hydraulic arrangements; Motors
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63H—TOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
- A63H33/00—Other toys
- A63H33/04—Building blocks, strips, or similar building parts
- A63H33/06—Building blocks, strips, or similar building parts to be assembled without the use of additional elements
- A63H33/062—Building blocks, strips, or similar building parts to be assembled without the use of additional elements with clip or snap mechanisms
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63H—TOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
- A63H33/00—Other toys
- A63H33/26—Magnetic or electric toys
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/08—Programme-controlled manipulators characterised by modular constructions
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1615—Programme controls characterised by special kind of manipulator, e.g. planar, scara, gantry, cantilever, space, closed chain, passive/active joints and tendon driven manipulators
- B25J9/1617—Cellular, reconfigurable manipulator, e.g. cebot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04817—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0482—Interaction with lists of selectable items, e.g. menus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04847—Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/0486—Drag-and-drop
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
- G06F3/04883—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/16—Sound input; Sound output
- G06F3/167—Audio in a user interface, e.g. using voice commands for navigating, audio feedback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09B—EDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
- G09B5/00—Electrically-operated educational appliances
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01R—ELECTRICALLY-CONDUCTIVE CONNECTIONS; STRUCTURAL ASSOCIATIONS OF A PLURALITY OF MUTUALLY-INSULATED ELECTRICAL CONNECTING ELEMENTS; COUPLING DEVICES; CURRENT COLLECTORS
- H01R13/00—Details of coupling devices of the kinds covered by groups H01R12/70 or H01R24/00 - H01R33/00
- H01R13/62—Means for facilitating engagement or disengagement of coupling parts or for holding them in engagement
- H01R13/627—Snap or like fastening
- H01R13/6271—Latching means integral with the housing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63H—TOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
- A63H27/00—Toy aircraft; Other flying toys
- A63H27/001—Making or assembling thereof, e.g. by folding
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/0003—Home robots, i.e. small robots for domestic use
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B15/00—Systems controlled by a computer
- G05B15/02—Systems controlled by a computer electric
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01R—ELECTRICALLY-CONDUCTIVE CONNECTIONS; STRUCTURAL ASSOCIATIONS OF A PLURALITY OF MUTUALLY-INSULATED ELECTRICAL CONNECTING ELEMENTS; COUPLING DEVICES; CURRENT COLLECTORS
- H01R13/00—Details of coupling devices of the kinds covered by groups H01R12/70 or H01R24/00 - H01R33/00
- H01R13/62—Means for facilitating engagement or disengagement of coupling parts or for holding them in engagement
- H01R13/627—Snap or like fastening
Definitions
- the disclosure relates generally to robotic systems, and more particularly, to modular assembly robotic toys.
- Robotic toys are cutting-edge products for childhood education because they can keep children engaged, educated, and entertained. Unlike a virtual character that resides only on a display screen, a robotic toy can be held in a child's arm or touched and thus, provides a visceral experience.
- a robotic toy can be held in a child's arm or touched and thus, provides a visceral experience.
- the term “educational robotics” refers to the teaching practice during which the students use the robots to construct knowledge with the help of or for the robots themselves.
- the disclosure relates generally to robotic systems, and more particularly, to modular assembly robotic toys.
- a system in one example, includes a plurality of assembly modules and one or more connectors.
- Each assembly module includes at least one connection interface.
- Each connector is configured to mechanically and electrically connect two of the plurality of assembly modules via the respective connection interfaces of the two assembly modules.
- the plurality of assembly modules include at least a control module and an analyzing module.
- the control module includes a control module communication unit configured to obtain a set of host instructions from one or more hosts and a control module processor configured to generate a set of operation instructions for control each assembly module based on at least the set of host instructions.
- the analyzing module includes an analyzing module sensor configured to obtain a sensor signal, an analyzing module processor configured to analyze the sensor signal to generate a first analyzing result, and an analyzing module communication unit configured to transmit the sensor signal or the first analyzing result to at least one of the one or more hosts.
- an assembly module in another example, includes at least one connection interface, a sensor, a processor, and a communication unit.
- Each connection interface is configured to mechanically and electrically connect to a connector and receive at least a power signal via the connector.
- the sensor is configured to obtain a sensor signal.
- the processor is operatively coupled to the sensor and the at least one connection interface and configured to analyze the sensor signal to generate an analyzing result.
- the communication unit is operatively coupled to the processor and configured to transmit the sensor signal or the analyzing result to a host.
- a system in still another example, includes a plurality of assembly modules and one or more connectors. At least one of the assembly modules includes at least one connection interface. Each connector is configured to mechanically and electrically connect two of the plurality of assembly modules via the connection interface of one of the two assembly modules.
- the plurality of assembly modules include at least a control module and an actuation module.
- the control module includes a communication unit configured to obtain a set of host instructions from one or more hosts and a processor configured to generate a set of operation instructions for each assembly module based on at least the set of host instructions.
- the actuation module includes a set of propellers and a motor configured to drive the set of propellers based on at least the set of operation instructions for the actuation module generated by the processor.
- a system in yet another example, includes a plurality of assembly modules and one or more connectors.
- Each assembly module includes at least one connection interface.
- Each connector is configured to mechanically and electrically connect two of the plurality of assembly modules via the respective connection interfaces of the two assembly modules.
- Each connector includes two open ends adapted to fitting into the connection interfaces of the two assembly modules, respectively.
- the plurality of assembly modules include at least a control module.
- the control module includes a communication unit configured to obtain a set of host instructions from one or more hosts and a processor configured to generate a set of operation instructions for each assembly module based on at least the set of host instructions.
- a connection structure includes two connection interfaces and a connector.
- Each connection interface includes a plurality of planar contacts arranged at a center and one or more concentric rings on a circuit board and a plurality of first lock mechanisms arranged on a first casing.
- the connector includes a second casing including two open ends and a plurality of second lock mechanisms arranged on the second casing and a plurality of pins. Each pin includes two ends each exposed by one of the two open ends of the second casing, respectively.
- the plurality of pins of the connector are in contact with the plurality of planar contacts of each connection interface so that the two connection interfaces are electrically connected, and the plurality of second lock mechanisms of the connector are interlocked with the plurality of first lock mechanisms of each connection interface so that the two connection interfaces are mechanically connected.
- a connection structure in another example, includes two connection interfaces and a connector.
- Each connection interface includes a plurality of contacts arranged on a circuit board and a plurality of first lock mechanisms arranged on a first casing.
- the connection includes a second casing including two open ends and a plurality of second lock mechanisms arranged on the second casing and a plurality of concentric ring contacts.
- Each concentric ring contact includes two ends each exposed by one of the two open ends of the second casing, respectively.
- the plurality of concentric ring contacts of the connector are in contact with the plurality of contacts of each connection interface so that the two connection interfaces are electrically connected, and the plurality of second lock mechanisms of the connector are interlocked with the plurality of first lock mechanisms of each connection interface so that the two connection interfaces are mechanically connected.
- a method for registering one of a plurality of assembly modules operatively coupled to one another in a modular assembly system is provided.
- a first message including a first identifier of the assembly module is received from one of the plurality of assembly modules.
- a second message including a second identifier for the assembly module is transmitted to the assembly module.
- the second identifier is generated based on at least the first identifier.
- a third message including the second identifier is received from the assembly module.
- the assembly module is registered as a new assembly module of the modular assembly system. At least one of the receiving, transmitting, determining, and registering is performed by a control module of the plurality of assembly modules.
- a method for updating a status associated with one of a plurality of assembly modules operatively coupled to one another in a modular assembly system is provided.
- a first message for requesting data from the assembly module is transmitted to one of the plurality of assembly modules.
- a second message including the requested data or a third message including a normal status indicator is received from the assembly module.
- a status associated with the assembly module is updated as being coupled to the modular assembly system. At least one of the transmitting, determining, and updating is performed by a control module of the plurality of assembly modules.
- a method for updating firmware on a control module of a modular assembly system is provided.
- Information related to noise sampled from the control module is obtained.
- a first encryption key is calculated based on the information.
- Firmware to be updated on the control module is received from a host of the modular assembly system.
- the firmware is encrypted based on at least a second encryption key.
- the decrypted firmware is loaded into the control module. At least one of the obtaining, calculating, receiving, determining, and loading is performed by the control module.
- a method for encrypting firmware to be updated on a control module of a modular assembly system is provided.
- An encryption key calculated based on information related to noise sampled from the control module is received.
- Firmware is encrypted based on at least the encryption key.
- the encrypted firmware is transmitted to the control module. At least one of the receiving, encrypting, and transmitting is performed by a host of the modular assembly system.
- a graphical programming environment including a set of first graphical representations and a set of second graphical representations is presented to a user.
- Each first graphical representation corresponds to a statement block comprising at least one parameter.
- Each second graphical representation corresponds to one of the plurality of assembly modules associated with at least one property.
- a user is facilitated to select at least one of the first graphical representations and provide values to the at least one parameter of each selected first graphical representation.
- the user is facilitated to provide values to the at least one property of one or more of the second graphical representations.
- a set of host instructions are generated.
- the set of host instructions are transmitted to the control module for controlling operation of the plurality of assembly modules. At least one of the presenting, facilitating, facilitating, generating, and transmitting is performed by a host of the modular assembly system.
- a graphical user interface (GUI) including a first set of GUI elements and a second set of GUI elements is presented to a user.
- the first set of GUI elements allow the user to interactively control operation of the modular assembly system at runtime when the modular assembly system is on operation.
- the second set of GUI elements allow the user to designate a function corresponding to the modular assembly system. The user is facilitated to select one of the first and second sets of GUI elements.
- a first set of host instructions are dynamically generated based on at least the user's interactions with the first set of GUI elements for controlling the operation of the modular assembly system at runtime, and the generated first set of host instructions are transmitted to the control module of the modular assembly system at runtime when the modular assembly system is on operation.
- a second set of host instructions are obtained based on at least the function designated by the user, and the obtained second set of host instructions are transmitted to the control module of the modular assembly system prior to the modular assembly system performs the function designated by the user. At least one of the presenting, facilitating, generating, transmitting, obtaining, and transmitting is performed by a host of the modular assembly system.
- FIGS. 1A-1C are perspective views of an example of a modular assembly robotic toy including multiple assembly modules and connectors in accordance with an embodiment
- FIG. 2 is a block diagram illustrating a system including assembly modules, hosts, and a server in accordance with an embodiment
- FIG. 3 is a depiction of various examples of assembly modules in accordance with an embodiment
- FIG. 4 is a schematic diagram illustrating an example of a bus connecting multiple assembly modules in accordance with an embodiment
- FIG. 5 is a depiction of an example of transmission of host instructions from hosts to a control module in accordance with an embodiment
- FIG. 6 is a block diagram illustrating an example of an assembly module in accordance with an embodiment
- FIG. 7 is a block diagram illustrating an example of a control module in accordance with an embodiment
- FIG. 8 is a block diagram illustrating an example of an analyzing module in accordance with an embodiment
- FIG. 9 is a block diagram illustrating an example of a sensor module in accordance with an embodiment
- FIG. 10 is a block diagram illustrating an example of an actuator module in accordance with an embodiment
- FIG. 11 is a block diagram illustrating an example of a power module in accordance with an embodiment
- FIG. 12 is a block diagram illustrating an example of hosts and a server in accordance with an embodiment
- FIG. 13 is a perspective view of an example of a modular assembly unmanned aerial vehicle (UAV) robotic toy including multiple assembly modules and connectors in accordance with an embodiment
- UAV unmanned aerial vehicle
- FIG. 14A-14B are perspective views of an example of a connection structure in accordance with an embodiment
- FIG. 15 is an exploded view of an example of a connection structure in accordance with an embodiment
- FIG. 16A is a perspective view of an example of a connector in accordance with an embodiment
- FIG. 16B is a perspective view of an example of a pin of the connector in FIG. 17A in accordance with an embodiment
- FIG. 17 is a plan view of an example of a circuit board of a connection interface in accordance with an embodiment
- FIG. 18 is a plan view of an example of a connection interface in accordance with an embodiment
- FIG. 19 is a cross-sectional view of an example of a connection structure in accordance with an embodiment
- FIGS. 20A-20D are plan views of the connection interface in FIG. 19 in contact with pins of a connector at four orientations with 90 degrees offset, respectively, in accordance with an embodiment
- FIG. 21A-21B are perspective views of various examples of a circuit board having ring contacts thereon in accordance with an embodiment
- FIG. 22A is a perspective view of another example of a connector in accordance with an embodiment
- FIG. 22B is a cross-sectional view of the connector in FIG. 22A in accordance with an embodiment
- FIG. 22C is a perspective view of contacts of the connector in FIG. 22A in accordance with an embodiment
- FIG. 23 is a plan view of another example of a connection interface in accordance with an embodiment
- FIG. 24A is a plan view of another example of a circuit board of the connection interface in FIG. 23 in accordance with an embodiment
- FIG. 24B-24D are cross-sectional views of another example of a connection structure including the connector in FIG. 22A in contact with the connection interface in FIG. 23 in accordance with an embodiment
- FIG. 25 is a depiction of an example of communication between a control module and multiple assembly modules and hosts in accordance with an embodiment
- FIG. 26 is an event diagram illustrating an example of a method for registering an assembly module in accordance with an embodiment
- FIG. 27 is a flow chart illustrating an example of a method for registering an assembly module in accordance with an embodiment
- FIG. 28 is a flow chart illustrating another example of a method for registering an assembly module in accordance with an embodiment
- FIG. 29 is an event diagram illustrating an example of a method for updating a status associated with an assembly module in accordance with an embodiment
- FIG. 30 is an event diagram illustrating another example of a method for updating a status associated with an assembly module in accordance with an embodiment
- FIG. 31 is a flow chart illustrating an example of a method for updating a status associated with an assembly module in accordance with an embodiment
- FIG. 32 is a flow chart illustrating another example of a method for updating a status associated with an assembly module in accordance with an embodiment
- FIG. 33 is an event diagram illustrating an example of a method for updating firmware on a control module in accordance with an embodiment
- FIG. 34 is a flow chart illustrating an example of a method for updating firmware on a control module in accordance with an embodiment
- FIG. 35 is a flow chart illustrating another example of a method for updating firmware on a control module in accordance with an embodiment
- FIG. 36 is a block diagram illustrating an example of applications running on hosts in accordance with an embodiment
- FIGS. 37A-37B are screenshots of an example of a control application in accordance with an embodiment
- FIG. 38 is a screenshot of another example of a control application in accordance with an embodiment
- FIG. 39 is a flow chart illustrating an example of a method for providing host instructions to a control module in accordance with an embodiment
- FIGS. 40A-40B are screenshots of an example of a programming application in accordance with an embodiment
- FIG. 41 is a screenshot of an example of a program including graphical statement blocks in accordance with an embodiment
- FIG. 42 is a flow chart illustrating another example of a method for providing host instructions to a control module in accordance with an embodiment.
- FIG. 43 is a block diagram illustrating an example of a computer system useful for implementing various embodiments set forth in the disclosure.
- terms, such as “a,” “an,” or “the,” again, may be understood to convey a singular usage or to convey a plural usage, depending at least in part upon context.
- the term “based on” may be understood as not necessarily intended to convey an exclusive set of factors and may, instead, allow for existence of additional factors not necessarily expressly described, again, depending at least in part on context.
- assembly modules may include “smart” modules that can independently perform certain sensing and analysis functions and communicate the sensing and/or analysis results directly with remote hosts and/or servers.
- detection mechanisms may be used to efficiently and effectively achieve assembly module registration and status updates (e.g., online and offline) without the need for physical module configuration or user intervention.
- the functions of an assembly module may be further extended by downloading updated firmware using secure update mechanisms.
- the modular assembly systems disclosed herein also provide the ability to facilitate users to easily program any assembled robotic toys via graphical interfaces of various software applications so as to customize the behaviors and functions of the assembled robotic toys as desired.
- a graphical programming environment can be used by users, for example, young children, to input programs that can be downloaded to the assembled robotic toys.
- a runtime control environment may be provided on a portable device so that users can intuitively and interactively control the actions of the assembled robotic toys in real-time.
- FIGS. 1A-1C are perspective views of an example of a modular assembly robotic toy 100 including multiple assembly modules 102 , 104 , 106 , and 108 and connectors 110 in accordance with an embodiment.
- a control module 102 is connected to a power module 104 by a connector 110 .
- all connectors 110 are the same and interchangeable.
- any connector 110 can be used to mechanically and electrically connect any two assembly modules 102 , 104 , 106 , and 108 via their respective connection interfaces, which are the same as well.
- each of power module 104 and connector modules 108 - 1 and 108 - 2 includes multiple connection interfaces and thus, can connect to multiple assembly modules 102 , 104 , 106 , and 108 .
- power module 104 and connector modules 108 - 1 and 108 - 2 may serve as a “hub” to provide the flexibility and extensibility of connecting multiple assembly modules together.
- connector module 108 - 1 can connect to power module 104 and two wheel modules 106 - 1 and 106 - 2 .
- some assembly modules, such as control module 102 and wheel modules 106 - 1 and 106 - 2 each includes a single connection interface and thus, may be arranged at the “end” of modular assembly robotic toy 100 .
- control module 102 may work as the “brain” of modular assembly robotic toy 100 to control operations of each assembly module of modular assembly robotic toy 100 by communicating data signals, e.g., operation instructions, with each assembly module via connectors 110 .
- Power module 104 may provide “energy” to modular assembly robotic toy 100 , for example, by transmitting power signals from a battery pack to each assembly module via connectors 110 .
- Wheel modules 106 as one example of actuator modules, may work as the “feet” of modular assembly robotic toy 100 by rotating themselves along the axis of rotation.
- each assembly module is substantially ball-shaped.
- wheel modules 106 can move without additional structures, i.e., can rotate themselves along the axis of rotation.
- multiple connection interfaces can be arranged symmetrically along any diameters of connector module 108 so that connector module 108 can be arranged at various orientations in modular assembly robotic toy 100 , which further improves the flexibility and extensibility of modular assembly robotic toy 100 .
- Connectors 110 may serve as the “bones” and “nerves” of modular assembly robotic toy 100 to provide both mechanical and electrical connections between assembly modules.
- each connector 110 includes two open ends adapted to fitting into the connection interfaces of any two assembly modules, respectively.
- FIG. 1B illustrates that the assembly modules described with respect to FIG. 1A have been assembled together.
- the assembled structure can move around by wheel modules 106 , which are controlled by control module 102 and powered-up by power module 104 .
- FIG. 1B further illustrates that modular assembly robotic toy 100 can change its structure and form and extend its functions by connecting more assembly modules, e.g., an infrared sensor module 112 via connector 110 - 5 and a follower 114 .
- infrared sensor module 112 can be plugged into modular assembly robotic toy 100 by connecting to a spare connection interface of connector module 108 - 2 via connector 110 - 5 .
- follower 114 as one example of accessories, may be directly connected to another spare connection interface of connector module 108 - 2 without any connector.
- infrared sensor module 112 may work as the “eyes” of modular assembly robotic toy 100 to detect any objects by infrared beams.
- the sensor signals obtained by infrared sensor module 112 may be transmitted to control module 102 via connectors 110 .
- Infrared sensor module 112 may be substantially ball-shaped as well.
- follower 114 may help supporting and balancing modular assembly robotic toy 100 and follow the movement of wheel modules 106 .
- FIG. 1C illustrates that the assembly modules described with respect to FIG. 1B have been assembled together to build modular assembly robotic toy 100 .
- Modular assembly robotic toy 100 can move around by wheel modules 106 and follower 114 , which are controlled by control module 102 and powered-up by power module 104 .
- Modular assembly robotic toy 100 can also detect objects along the moving path by infrared sensor module 112 .
- control module 102 may adjust the moving path to avoid any objects detected by infrared sensor module 112 and control the movement of wheel modules 106 according to the adjusted moving path in real-time.
- modular assembly robotic toy 100 may be controlled by control module 102 in accordance with host instructions received from host(s) either in the form of programming instructions downloaded prior to the operation of modular assembly robotic toy 100 or in the form of control instructions received at runtime. That is, modular assembly robotic toy 100 can be customized by assembling a number of assembly modules with different functions using the same connectors 110 and by programming the assembled structure through predefined programs and/or real-time control. It is to be appreciated that modular assembly robotic toy 100 illustrated in FIGS. 1A-1C is for the illustrative purpose only. As a modular assembly system, robotic toys with different structures, forms, and functions may be easily assembled and programmed in other examples as will be described below in detail.
- FIG. 2 is a block diagram illustrating a system 200 including assembly modules 202 , hosts 204 , and a server 206 in accordance with an embodiment.
- System 200 in this embodiment provides hardware, firmware, software, and service supports for assembling, testing, and maintaining modular assembly robotic toys with different structures, forms, and functions.
- Assembly modules 202 include a number of assembly modules 202 - 1 , 202 - 2 , 202 - 3 , . . . , 202 - n of different types.
- FIG. 3 is a depiction of various examples of assembly modules 202 in accordance with an embodiment, which include control modules 302 (e.g., control module 102 in FIGS.
- sensor modules 304 sensor modules 304 , actuator modules 306 , analyzing modules 308 (a.k.a. “smart” modules), power modules 310 (e.g., power module 104 in FIGS. 1A-1C ), and connector modules 312 (e.g., connector module 108 in FIGS. 1A-1C ).
- analyzing modules 308 a.k.a. “smart” modules
- power modules 310 e.g., power module 104 in FIGS. 1A-1C
- connector modules 312 e.g., connector module 108 in FIGS. 1A-1C
- sensor modules 304 may include sub-types, such as infrared sensor modules 314 (e.g., infrared sensor module 112 in FIGS. 1A-1C ), color recognition modules 316 , and any other sensor modules that can obtain sensor signals from one or more sensors of any types.
- Actuator modules 306 may include sub-types as well, for example, movement modules 318 (e.g., wheel module 106 in FIGS. 1A-1C ), flight actuation modules 320 , joint modules 322 , and any other actuator modules that can apply energy for physical operation by one or more actuators of any types.
- Analyzing modules 308 may also include sub-types, including voice recognition modules 324 , image recognition modules 326 , and any other analyzing modules that can independently obtain and analyze sensor signals and transmit the sensor signals or the analyzing result to hosts 204 and/or server 206 .
- the same assembly module e.g., in the sense of having the same hardware
- voice recognition module 324 and image recognition module 326 may be formed by downloading different types of firmware to the same physical module.
- one type of assembly module may become another type of assembly module by connecting to accessories.
- movement module 318 may connect to a set of propellers to become flight actuation module 320 or a water actuation module (not shown).
- connector modules 312 may be connected to control modules 302 through connector modules 312 . It is to be appreciated that any two assembly modules 202 , either in the same type or different types, may be connected one another without connector module 312 , e.g., be connected directly via connectors as described above with respect to FIGS. 1A-1C . It is also to be appreciated that connector modules 312 do not have to be connected to control modules 302 and can be connected to any types of assembly modules 202 . In some embodiments, connector modules 312 may be viewed as a “hub” to provide a number of connection interfaces so that more assembly modules 202 can be assembled together.
- each assembly module 202 includes at least one connection interface through which assembly module 202 can be plugged to a modular assembly robotic toy by a connector.
- connection interfaces of any assembly modules 202 are all the same, i.e., are standard connection interfaces, so that the same connectors can be used to connect any two assembly modules 202 .
- each assembly module 202 is substantially ball-shaped. The detail of each assembly module 202 will be described below with respect to FIGS. 6-11S .
- hosts 204 may include multiple hosts 204 - 1 and 204 - 2 , each of which may be any suitable device, for example, a mobile or portable device (e.g., dumb or smart phone, tablet, etc.), laptop computer, desktop computer, netbook computer, media center, wearable device (e.g., eyeglasses, wrist watch, etc.), virtual reality (VR) or augmented reality (AR) device (e.g., VR headset, etc.), automobile control station, gaming console, television set, set-top box, global positioning system (GPS), printer, or any other suitable device.
- a mobile or portable device e.g., dumb or smart phone, tablet, etc.
- laptop computer e.g., desktop computer, netbook computer, media center
- wearable device e.g., eyeglasses, wrist watch, etc.
- VR virtual reality
- AR augmented reality
- automobile control station e.g., gaming console, television set, set-top box, global positioning system (GPS), printer, or any other suitable device.
- Hosts 204 may communicate with some of assembly modules 202 , e.g., control modules 302 and analyzing modules 308 , via any suitable communication approaches, such as wired communication, e.g., universal serial bus (USB), IEEE 1394, Thunderbolt, etc., or wireless communication, e.g., WiFi, Bluetooth, ZigBee, near-field communication (NFC), etc., to name a few.
- Hosts 204 may also communicate with server 206 via the Internet 208 .
- Hosts 204 may communicate with server 206 via any other networks, such as a local area network (LAN), a personal area network (PAN), etc.
- LAN local area network
- PAN personal area network
- applications may run on hosts 204 to allow hosts 204 to configure, control, and manage any modular assembly robotic toys assembled from assembly modules 202 .
- programming applications running on hosts 204 may facilitate users to build programs or select existing demo programs and download the programs into control module 302 .
- control applications running on hosts 204 may allow users to real-time control the operations of modular assembly robotic toys by transmitting control instructions to control module 302 at runtime.
- hosts 204 may obtain updated firmware, for example, from server 206 , encrypt the firmware, and manage the downloading of the encrypted firmware to control module 302 .
- hosts 204 may receive and handle data from modular assembly robotic toys, e.g., from control module 302 or analyzing module 308 .
- each assembly module 202 may be displayed on hosts 204 based on status messages received from control module 302 ; sensor signals and/or analyzing results of the sensors signals may be received from control module 302 and/or analyzing modules 308 and processed by hosts 204 or forwarded to server 206 for further processing.
- multiple hosts 204 may be used to distribute the tasks.
- host 204 - 2 may be a laptop or desktop computer on which the programming application and firmware update application run.
- Host 204 - 2 may be connected to control module 302 via USB to transmit programming instructions or updated firmware to control module 302 prior to the operation of the modular assembly robotic toy.
- Host 204 - 1 may be a mobile or portable device on which the control application runs. Host 204 - 1 may be connected to control module 302 via Bluetooth to transmit real-time control instructions and connected to analyzing modules 308 via WiFi to receive sensor signals and/or analyzing results from analyzing modules 308 at runtime.
- server 206 may run on the backend of system 200 to provide various services to system 200 via different applications running thereon.
- an artificial intelligence application may be used by server 206 to analyze any sensor signals or analyzing results obtained from analyzing module 308 (e.g., being forwarded by hosts 204 ) to performance tasks such as voice recognition or image recognition.
- a user management application may be used by server 206 to manage users' information and store usage data related to the modular assembly robotic toys.
- a firmware management application may be used by server 206 to store and manage firmware update data.
- server 206 may communicate with hosts 204 via the Internet 208 or any other networks to provide the services described above. It is to be appreciated that in some embodiments, server 206 may communicate with some assembly modules 202 directly, e.g., analyzing modules 308 for receiving the sensor signals and/or analyzing results.
- FIG. 4 is a schematic diagram illustrating an example of a bus 400 connecting multiple assembly modules 202 in accordance with an embodiment.
- bus 400 upon a number of assembly modules 202 being mechanically and electrically connected one another via connectors to form a modular assembly robotic toy, bus 400 is formed for transmitting power signals and data signals between assembly modules 202 .
- bus 400 may include two power lines—power supply (VCC) 402 and ground (GND) 404 for transmitting the power signals, e.g., a voltage between VCC 402 and GND 404 .
- Bus 400 may also include two data lines—Data-H 406 and Data-L 408 for transmitting the data signals, for example, differential data signals.
- Each assembly module 202 may be electrically connected to bus 400 in parallel.
- each connection interface (I/F) 410 of assembly module 202 may include four contacts, each of which can electrically connect to one of the four lines of bus 400 .
- assembly modules 202 - 1 and 202 - 2 that include a single connection interface 410 - 1 and 410 - 2 , e.g., control modules 302 , sensor modules 304 , or actuator modules 306 , assembly modules 202 - 1 and 202 - 2 are electrically connected to bus 400 via single connection interface 410 - 1 and 410 - 2 , respectively.
- each connection interface 410 - 3 , 410 - 4 , 410 - 5 , and 410 - 6 of assembly modules 202 - 3 and 202 - 4 is individually and separately electrically connected to bus 400 .
- power signals may be transmitted from power module 310 to each assembly module 202 via VCC 402 and GND 404 power lines of bus 400 .
- Data signals may include operation instructions transmitted from control module 302 to each assembly module 202 and module data (e.g., sensor signals or status information) transmitted from each assembly module 202 to control module 302 via Data-H 406 and Data-L 408 data lines of bus 400 .
- module data e.g., sensor signals or status information
- bus 400 may be a controlled area network (CAN) bus adopted by the International Organization of Standardization (ISO), for example, in ISO11898 and ISO11519 standards.
- ISO International Organization of Standardization
- Data-H 406 and Data-L 408 may be CAN-H and CAN-L data lines, which transmit data signals by voltage differential therebetween.
- Power signals may be transmitted via VCC 402 and GND 404 according to the CAN bus standards as well.
- Data transmission and identifier (ID) allocation protocols applied by bus 400 may follow the CAN bus standards in general.
- bus 400 is not limited to CAN bus and can be any suitable bus for transmitting power and data signals between assembly modules 202 that are electrically connected in parallel, such as but not limited to, USB, RS-485 bus, serial ATA (SATA) bus, low-voltage differential signaling (LVDS) bus, etc.
- USB Universal Serial Bus
- SATA serial ATA
- LVDS low-voltage differential signaling
- FIG. 5 is a depiction of an example of transmission of host instructions from hosts 204 to control module 302 in accordance with an embodiment.
- control module 302 includes one or more processors 502 on which an operating system 504 can be implemented.
- Operating system 504 may be any suitable operating system such as embedded operating systems or real-time operating systems (RTOS), e.g., embedded Linux, iOS, NetBSD, Inferno, OpenWrt, Windows Embedded, etc.
- RTOS real-time operating systems
- a virtual machine 506 may run on operating system 504 , such as Java virtual machine (JVM), Android Runtime (ART), Lua virtual machine, to name a few.
- Virtual machine 506 can provide the ability to execute programming instructions 508 in a platform-independent environment.
- a programming application may run on host 204 - 2 .
- Programming instructions 508 generated by the programming application may be transmitted from host 204 - 2 to virtual machine 506 of control module 302 directly.
- programming instructions 508 may be Lua scripts.
- host instructions in this embodiment may also include control instructions 510 that are generated by a control application running on host 204 - 1 at runtime. Control instructions 510 may be transmitted from host 204 - 1 to operating system 504 directly, e.g., using Bluetooth low energy (BLE, a.k.a. Bluetooth Smart) technologies.
- BLE Bluetooth low energy
- operating system 504 may generate operation instructions to control operations of corresponding assembly modules 202 based on control instructions 510 received from host 204 - 1 at runtime.
- operating system 504 may handle control instructions 510 and control privilege to virtual machine 506 .
- operating system 504 may work as an interface between virtual machine 506 and any other parts of the modular assembly robotic toy, e.g., assembly modules 202 and hosts 204 , while virtual machine 506 is taking control of executing programming instructions 508 and control instructions 510 .
- FIG. 6 is a block diagram illustrating an example of an assembly module 202 in accordance with an embodiment.
- assembly module 202 includes a processor 602 , a memory 604 , one or more connection interfaces 606 , one or more sensors 608 , one or more actuators 610 , a communication unit 612 , input/output (I/O) 614 , and a persistent storage 616 .
- processor 602 may be operatively coupled to memory 604 , connection interfaces 606 , sensors 608 , actuators 610 , communication unit 612 , I/O 614 , and persistent storage 616 .
- Assembly module 202 may communicate with hosts 204 via communication unit 612 and communicate with any other assembly modules 202 electrically connected to bus 400 via connection interfaces 606 .
- processor 602 may include one or more processing units such as microcontroller units (MCUs), microprocessors, graphical processing units (GPUs), memory controllers, etc.
- Memory 604 may be any program memory (e.g., RAM, flash) or read-only memory (ROM) that is integrated with MCUs in a single integrated circuit or separate from the processing units.
- Processor 602 may control operations of each component of assembly module 202 by executing instructions stored in memory 604 .
- each connection interface 606 may receive power signals from bus 400 and transmit and receive data signals via bus 400 in accordance with the instructions from processor 602 .
- Processor 602 may further receive data signals from connection interface 606 and transmit data signals to bus 400 via connection interface 606 .
- Power signals may be transmitted via connection interface 606 to processor 602 to supply power.
- power signals may be transmitted via connection interface 606 to other components of assembly module 202 to supply power.
- communication unit 612 may be any wired or wireless communication unit, such as USB, IEEE 1394, Thunderbolt, WiFi, Bluetooth, ZigBee, or NFC units that can communicate with the corresponding types of communication units of hosts 204 .
- host instructions transmitted from hosts 204 may be received by communication unit 612 and forwarded to processor 602 .
- communication unit 612 may include a modem or any network adaptors for communicating with server 206 via the Internet 208 or any other networks as described above. Data received from server 206 may be forwarded to processor 602 as well by communication unit 612 .
- sensors 608 may include any types of sensors such as light sensors, motion sensors, temperature sensors, sound sensors, electrical sensors, magnetic sensors, chemical sensors, biosensors, to name a few. Regardless of the specific type, sensors 608 can obtain sensor signals and transmit the sensor signals to processor 602 . Processor 602 may either analyzes the sensor signals and then transmits the analyzing results to hosts 204 via bus 400 or transmits the raw sensor signals directly to hosts 204 via communication unit 612 .
- actuators 610 may include any types of actuators, such as hydraulic actuators, pneumatic actuators, electric actuators, thermal actuators, magnetic actuators, mechanical actuators, to name a few. Regardless of the specific type, actuators 610 may perform physical actions according to the instructions provided by processor 602 (and power signals provided via bus 400 and connection interface 606 in some cases).
- I/O 614 may include any suitable I/O devices, such as display screens, lights, keypads, buttons, etc. Users of a modular assembly robotic toy may interact with assembly module 202 directly via I/O 614 . For example, status information (e.g., power level, operating status) of assembly module 202 or the entire modular assembly robotic toy may be presented via the display screen or the lights. Users may interrupt operation of assembly module 202 using the keypads or buttons.
- persistent storage 616 may be any data storage device that retains data after assembly module 202 being powered-off, such as hard disk drivers and solid-state drivers (e.g., flash drivers).
- Data stored in persistent storage 616 may be communicated with memory 604 , such as programming instructions (e.g., source code or intermediate codes of demo programs), operation logs, usage data backup, firmware, etc. It is to be appreciated that additional components may be included in assembly module 202 as well in some embodiments. It is also to be appreciated that depending on the specific type of assembly module 202 , certain components illustrated in FIG. 6 may not be necessary as described below with respect to FIGS. 7-11 .
- FIG. 7 is a block diagram illustrating an example of a control module 302 in accordance with an embodiment.
- Control module 302 in this embodiment includes a processor 702 , a memory 704 , one or more connection interfaces 706 , one or more sensors 708 , a communication unit 712 , I/O 714 , and a persistent storage 716 .
- processor 702 may be operatively coupled to memory 704 , connection interfaces 706 , sensors 708 , communication unit 712 , I/O 714 , and persistent storage 716 .
- Each component in FIG. 7 may perform the same functions of corresponding component described above with respect to FIG. 6 and will not be repeated again in this embodiment.
- persistent storage 716 may store programming instructions (e.g., source code or intermediate codes of demo programs) and operation logs and usage data backup of not only control module 302 , but also other assembly modules 202 of the modular assembly robotic toy.
- sensors 708 may include inertial sensors, such as gyroscopes and accelerometers.
- processor 702 of control module 302 may control operations of any other assembly modules 202 of the modular assembly robotic toy.
- host instructions may be provided by hosts 204 to processor 702 via communication unit 712 .
- programming instructions may be received prior to control module 302 is on operation and then executed by virtual machine 506 running on operating system 504 implemented on processor 702 ; control instructions, on the other hand, may be received at runtime when control module 302 is on operation and executed by operating system 504 directly.
- processor 702 may generate operation instructions for controlling each assembly module 202 via bus 400 and connection interface 706 .
- Processor 702 may transmit operation instructions, as parts of data signals, to corresponding assembly modules 202 via connection interface 706 and bus 400 . Moreover, processor 702 may communicate with assembly modules 202 via connection interface 706 and bus 400 to detect and configure any newly-added assembly modules. In some embodiments, the updated firmware may be provided by server 206 to hosts 204 via the Internet and then downloaded to memory 704 and/or persistent storage 716 via communication unit 712 . On the other hand, module data (e.g., sensor signals or status information) received from other assembly modules 202 or control module 302 itself may be transmitted by control module 302 to hosts 204 via communication unit 712 as well. In some embodiments, communication unit 712 may communicate with server 206 via the Internet or any other networks directly without passing through hosts 204 .
- module data e.g., sensor signals or status information
- I/O 714 may further include a physical switch configured to, in response to an input from a user, interrupt or resume the obtaining of at least some of the host instructions from hosts 204 or the generation of the operation instructions by processor 702 .
- execution of host instructions by processor 702 may be partially controlled by physical operation of the user via control module 302 .
- the physical switch may trigger processor 702 to execute the host instructions, for example, programming instructions (e.g., Lua scripts) by virtual machine 506 .
- control module 302 may further include a power switch for turning on and off control module 302 and/or the modular assembly robotic toy. The power switch may be different from the physical switch described above, which is used for controlling execution of host instructions by processor 702 .
- FIG. 8 is a block diagram illustrating an example of an analyzing module 308 in accordance with an embodiment.
- Analyzing module 308 in this embodiment includes a processor 802 , a memory 804 , one or more connection interfaces 806 , one or more sensors 808 , a communication unit 812 , and a persistent storage 816 .
- processor 802 may be operatively coupled to memory 804 , connection interfaces 806 , sensors 808 , communication unit 812 , and persistent storage 816 .
- Each component in FIG. 8 may perform the same functions of corresponding component described above with respect to FIG. 6 and will not be repeated again in this embodiment. Additional or alternative features of some components in analyzing module 308 will be described below in detail.
- persistent storage 816 may further store sensors signals obtained by sensors 808 and analyzing results of the signal signals generated by processor 802 .
- processor 802 of analyzing module 308 may be configured to analyze the sensor signals obtained by sensors 808 to generate analyzing results.
- analyzing module 308 may be voice recognition module 324 , and sensors 808 may include a microphone or any sound sensors configured to obtain a voice signal. Processor 802 then may analyze the voice signal to generate a voice recognition result by implementing any suitable voice or speech recognition engines.
- analyzing module 308 may be image recognition module 326 , and sensors 808 may include a camera or any image sensors configured to obtain an image signal. Processor 802 then may analyze the image signal to generate an image recognition result by implementing any suitable image or video recognition engines.
- the recognition engines may be stored in persistent storage 816 and read into memory 804 at runtime for analyzing the corresponding sensor signals by processor 802 .
- analyzing module 308 can be of other types by including suitable types of sensors 808 and implementing suitable analyzing engines by processor 802 .
- the sensor signals obtained by sensors 808 and/or the analyzing results generated by processor 802 may be transmitted to host 204 via communication unit 812 without passing through control module 302 .
- Host 204 after receiving the sensor signals or the analyzing results, may further process the sensor signals or the analyzing results to generate further analyzing results because host 204 may have a superior computation capability than analyzing module 308 for performing more complex analysis.
- host 204 may transmit the sensor signals or the analyzing results to server 206 via the Internet 208 or any other networks so that more powerful processors and/or analyzing engines on server 206 can perform even more complex analysis of the sensor signals or the analyzing results.
- communication unit 812 may include a modem or any suitable network adaptors for transmitting the sensor signals or the analyzing results to server 206 directly without passing through host 204 .
- host 204 may generate operation instructions and provide the operation instructions to processor 802 via communication unit 812 .
- the generated operation instructions may be provided by host 204 to control module 302 as a part of host instructions, and control module 302 then may transmit the operation instructions to analyzing module 308 or other assembly module 202 via bus 400 .
- voice recognition module 324 voice commands from a user to control the operations of the modular assembly robotic toy may be recognized and understood by host 204 in conjunction with voice recognition module 324 and/or server 206 and applied to corresponding assembly modules 202 .
- a target on the video taken by the camera of image recognition module 326 may be recognized and tracked by host 204 in conjunction with image recognition module 326 and/or server 206 so that host 204 can instruct corresponding actuator modules 306 to follow the moving path of the target and instruct image recognition module 326 to keep tracking of the target.
- analyzing module 308 may be considered as a “smart” module because analyzing module 308 can independently perform sensor signal analysis tasks and/or independently communicate the analyzing results with host 204 or server 206 without the intervention of control module 302 .
- analyzing module 308 may determine whether to analyze the obtained sensor signals by processor 802 or transmit the sensor signals to hosts 204 and/or server 206 for analysis.
- processor 802 may make the determination based on the complexity of the analysis tasks and perform relatively simple analysis tasks and handle over the relatively complex analysis tasks to hosts 204 and/or server 206 .
- processor 802 may make the determination based on whether the communication unit 812 is capable of communicating with hosts 204 and/or server 206 .
- analyzing module 308 may perform the analysis tasks locally by processor 802 . It is to be appreciated that pre-processing may be performed on the obtained raw sensor signals by processor 802 even when the analysis tasks are to be performed by hosts 204 and/or server 206 .
- FIG. 9 is a block diagram illustrating an example of sensor module 304 in accordance with an embodiment.
- Sensor module 304 in this embodiment includes a processor 902 , a memory 904 , one or more connection interfaces 906 , one or more sensors 908 , and a persistent storage 916 .
- processor 902 may be operatively coupled to memory 904 , connection interfaces 906 , sensors 908 , and persistent storage 916 .
- Each component in FIG. 9 may perform the same functions of corresponding component described above with respect to FIG. 6 and will not be repeated again in this embodiment. Additional or alternative features of some components in sensor module 304 will be described below in detail.
- persistent storage 916 may further store sensors signals obtained by sensors 908 .
- sensor module 304 may be infrared sensor module 314
- sensors 908 may include an infrared sensor.
- the infrared sensor may include an infrared transmitter configured to emit a first infrared beam to an object and an infrared receiver configured to obtain a second infrared beam reflected from the object.
- Sensor signals may be obtained by infrared sensor module 314 based on the first and/or second infrared beams.
- the infrared transmitter may be a light emitting diode (LED) that can produce light in the infrared spectrum
- the infrared receiver can detect the presence, motion, or brightness of the object based on the intensity of the second beam.
- LED light emitting diode
- the infrared sensor may be a passive infrared sensor (PIR) that measures infrared light radiating from objects in its field of view, which can be used for detecting the presence or motion of the objects.
- processor 902 may control operation of the infrared sensor based on operation instructions received from control module 302 via bus 400 .
- processor 902 may control the infrared sensor to work in the active mode (reflection mode) or in the passive mode. In the active mode, processor 902 may further control the infrared sensor to repeatedly emit the infrared beam or emit a single infrared beam.
- sensor module 304 may be a color recognition module 316
- sensors 908 may include a light sensor configured to obtain a light signal from an object.
- the light sensor may be any suitable sensor that can detect the current ambient light level (e.g., RGB level and light intensity level), such as photoresistors, photodiodes, and phototransistors. Additional optical and electrical components may be included in the light sensor, such as color filters, input multiplexor, and light sources (e.g., RGB LEDs).
- light signals obtained by the light sensor may be provided to processor 902 to determine the color of the object based on the light signals.
- processor 902 may also control operation of the light sensor based on operation instructions received from control module 302 via bus 400 .
- processor 902 may control the light sensor to work in the ambient light intensity detection mode or in the R, G. or B color detection mode.
- Processor 902 may further control the light sources to repeatedly emit a light beam in a desired color or emit a single light beam in a desired color.
- the sensor signals e.g., infrared signals, ambient light intensity signals, or RGB signals
- the sensor signals may be formatted by processor 902 according to the data transmission and ID allocation protocols of bus 400 and packed into messages with IDs.
- the messages may be transmitted to control module 302 from processor 902 via bus 400 .
- data related to sensor signals may be stored in persistent storage 916 as backups.
- sensor module 304 can be of any other types by including suitable types of sensors 908 .
- FIG. 10 is a block diagram illustrating an example of actuator module 306 in accordance with an embodiment.
- Actuator module 306 in this embodiment includes a processor 1002 , a memory 1004 , one or more connection interfaces 1006 , one or more actuators 1010 , and a persistent storage 1016 .
- processor 1002 may be operatively coupled to memory 1004 , connection interfaces 1006 , actuators 1008 , and persistent storage 1016 .
- Each component in FIG. 10 may perform the same functions of corresponding component described above with respect to FIG. 6 and will not be repeated again in this embodiment. Additional or alternative features of some components in actuator module 306 will be described below in detail.
- actuator module 306 may be movement module 318 that is substantially ball-shaped, and actuators 1010 may include a motor configured to rotate the entirety of movement module 318 .
- movement module 318 may be wheel module 106 illustrated in FIGS. 1A-1C , which includes a track around a great circle of sphere to increase the friction.
- the motor may be any electric motors, such as a servomotor, which can rotate the entirety of movement module 318 along an axis of rotation.
- additional accessories may be attached to movement module 318 , such as wheels or adaptors through which any physical structures can be plugged to the modular assembly robotic toy and rotate along with movement module 318 .
- movement module 318 can cause any piece of toys that is attached thereto via suitable adaptors to rotate as well.
- the motor is not limited to a rotary motor for driving the angular movement of movement module 318 .
- the motor may be a linear motor for driving the linear movement of movement module 318 .
- processor 1002 may control operation of the motor based on operation instructions received from control module 302 via bus 400 .
- processor 1002 may control the movement speed, direction, duration, and break of movement module 318 .
- actuator module 306 may be a flight actuation module 320
- actuators 1010 may include a motor configured to drive a set of propellers.
- the motor may be any electric motors, such as a servomotor, which can rotate the set of propellers along an axis of rotation and thus, cause the modular assembly robotic toy to fly in the air.
- processor 1002 may control operation of the motor based on operation instructions received from control module 302 via bus 400 . For example, processor 1002 may control the flight speed, direction, altitude, pose, duration, and break of flight actuation module 320 .
- sensors 708 of control module 302 may obtain sensor signals indicative of attitude of the modular assembly robotic toy in the air at runtime, and processor 702 of control module 302 may generate operation instructions for flight actuation module 320 based on the sensor signals to adjust the flight attitude. It is to be appreciated that flight actuation module 320 may be turned into a water actuation module by driving a suitable set of propellers in the water.
- actuator module 306 may be a joint module 322
- actuators 1010 may include a steering gear configured to rotate joint module 322 from 0 to 180 degrees in the radial direction (e.g., as a radial joint module) or rotate joint module 322 from ⁇ 90 to +90 degrees in the axial direction (e.g., as an axial joint module).
- processor 1002 may control operation of the steering gear based on operation instructions received from control module 302 via bus 400 . For example, processor 1002 may control the rotation speed, direction, angle, duration, and break of joint module 322 .
- the operation instructions for controlling actuators 1010 may be formatted by processor 702 of control module 302 according to the data transmission and ID allocation protocols of bus 400 and packed into messages with IDs.
- the messages may be transmitted from control module 302 to processor 1002 of actuator module 306 via bus 400 .
- data related to operation status of actuators 1010 may be collected by processor 1002 and transmitted to control module 302 in suitable message formats.
- actuator module 306 can be of other types by including suitable types of actuators 1010 .
- FIG. 11 is a block diagram illustrating an example of a power module 310 in accordance with an embodiment.
- Power module 310 in this embodiment includes a processor 1102 , a memory 1104 , one or more connection interfaces 1106 , a persistent storage 1116 , a battery 1118 , and a charging interface 1120 .
- processor 1102 may be operatively coupled to memory 1104 , connection interfaces 1106 , persistent storage 1116 , and battery 1118 .
- Each component in FIG. 11 may perform the same functions of corresponding component described above with respect to FIG. 6 and will not be repeated again in this embodiment. Additional or alternative features of some components in power module 310 will be described below in detail.
- persistent storage 1116 may further store battery-related information, e.g., battery health, charging condition, remaining lifetime, etc.
- battery 1118 may be any suitable batteries, including primary batteries such as lithium, alkaline, zinc, or magnesium batteries, and secondary (rechargeable batteries) such as lithium ion, NiCd, lead-acid, NiMH, NiZn, or AgZn batteries. In some embodiments, a number of batteries 1118 may form a battery pack. In this embodiment, operation of battery 1118 , such as charging/discharging and maintenance, may be controlled by processor 1102 in conjunction with any suitable battery management circuit (not shown) based on operation instructions received from control module 302 . The status of battery 1118 , e.g., battery health, charging condition, and remaining lifetime, may be monitored by processor 1102 in conjunction with any suitable battery management circuit (not shown) as well. In some embodiments, power signals from battery 1118 may be provided to power module 310 and other assembly modules 202 via connection interface 1106 and bus 400 .
- primary batteries such as lithium, alkaline, zinc, or magnesium batteries
- secondary (rechargeable batteries) such as lithium ion, NiCd, lead
- charging interface 1120 is operatively coupled to battery 1118 and may be any suitable interface/connector for charging battery 1118 , including wired charging interfaces, such as USB or DC jack, and wireless (induction) charging interfaces, such as Magne Charge, Qi, Rezence, or Power Matters Alliance (PMA).
- power module 310 may include additional or alternative power supplies, such as solar panels, AC-to-DC supplies, AC adapters, and generators.
- power module 310 may further include a power switch for a user to turn on and off the power of the modular assembly robotic toy and an indicator showing the current charging status and/or remaining power level of battery 1118 .
- operation of battery 1118 may be controlled by processor 1102 based on operation instructions received from control module 302 via bus 400 .
- FIG. 12 is a block diagram illustrating an example of hosts 204 and a server 206 in accordance with an embodiment.
- a user 1202 of a modular assembly robotic toy may assemble the modular assembly robotic toy using a number of assembly modules 202 and customize the functions and behaviors of the modular assembly robotic toy using hosts 204 - 1 and 204 - 2 .
- host 204 - 1 includes a processor 1204 - 1 , a memory 1206 - 1 , communication units 1208 - 1 and 1210 - 1 , and I/O 1212 - 1 .
- One or more applications, including a control application 1214 may be loaded into memory 1206 - 1 and executed by processor 1204 - 1 .
- GUI graphical user interface
- control application 1214 may be generated by processor 1204 - 1 and rendered on I/O 1212 - 1 (e.g., a display screen) for facilitating user 1202 to interact with control application 1214 via I/O 1212 - 1 .
- control application 1214 may receive input from user 1202 and generate a set of host instructions (e.g., control instructions) based on the user input at runtime when control module 302 is on operation.
- the set of host instructions may be transmitted to control module 302 via communication unit 1210 - 1 .
- the user input may include, for example, a command received from the GUI rendered by host 204 - 1 , a motion or gestured detected by one or more sensors on host 204 - 1 , and a voice detected by a microphone on host 204 - 1 .
- user 1202 can control the modular assembly robotic toy using control application 1214 through any suitable human-machine interfaces (HMIs).
- HMIs human-machine interfaces
- host 204 - 2 includes a processor 1204 - 2 , a memory 1206 - 2 , communication units 1208 - 2 and 1210 - 2 , and I/O 1212 - 2 .
- Multiple applications including a programming application 1216 and a firmware update application 1218 , may be loaded into memory 1206 - 2 and executed by processor 1204 - 2 .
- a GUI of programming application 1216 may be generated by processor 1204 - 2 and rendered on I/O 1212 - 2 (e.g., a display screen) for facilitating user 1202 to interact with programming application 1216 via I/O 1212 - 2 .
- programming application 1216 may receive inputs from user 1202 and generate a set of host instructions (e.g., programming instructions) prior to control module 302 is on operation.
- the set of host instructions may be transmitted to control module 302 via communication unit 1210 - 2 .
- the user inputs may include, for example, interactions with a graphical programming environment, e.g., programming by drag-and-drop of graphical representations of statement blocks.
- user 1202 may select existing demo programs.
- firmware update application 1218 may download firmware to be updated on control module 302 from server 206 via communication unit 1208 - 2 , encrypt the firmware, and transmit the encrypted firmware to control module 302 via communication unit 1210 - 2 .
- the firmware update status may be presented on the GUI of firmware update application 1218 to inform user 1202 .
- an analyzing application may be implemented to analyze sensor signals obtained by sensor modules 304 or analyzing modules 308 to generate analyzing results, e.g., voice or image recognition results.
- an assembly module management application may be implemented to display a list of assembly modules 202 that are currently registered (e.g., have been plugged into the modular assembly robotic toy), a list of assembly modules 202 that are currently online (e.g., currently plugged into the modular assembly robotic toy and are on operation), and/or a list of assembly modules 202 that are currently offline (e.g., currently de-coupled from the modular assembly robotic toy and are not on operation).
- communication units 1210 may communicate with assembly modules 202 , e.g., control module 302 , via wired or wireless communication, such as USB, WiFi, or Bluetooth.
- control instructions may be transmitted by communication unit 1210 - 1 to control module 302 in real-time via Bluetooth
- programming instructions may be transmitted by communication unit 1210 - 2 to control module 302 via USB.
- Module data of assembly modules 202 may be received by communication unit 1210 - 1 via Bluetooth as well in real-time or received by communication unit 1210 - 2 via USB after the operation of control module 302 is completed.
- communication units 1208 may communicate with remote server 206 via the Internet.
- sensor signals analyzing results of sensor signals, user information, or usage data may be transmitted to server 208 via the Internet by communication unit 1208 .
- Further analyzing results of sensor signals e.g., voice and image recognition results, updated firmware, user information, or usage data may be received from server 206 via the Internet by communication unit 1208 .
- server 206 includes a processor 1220 , a memory 1222 , and a communication unit 1224 .
- Multiple applications including an artificial intelligence application 1226 , a user management application 1228 , and a firmware management application 1230 , may be loaded into memory 1222 and executed by processor 1220 .
- Server 206 may communicate with hosts 204 via the Internet or any other networks by communication unit 1224 , which may be, for example, a modem or any suitable network adaptors.
- artificial intelligence application 1226 may implement any artificial intelligence algorithms, such as but not limited to, machine learning, natural language processing, search and optimization, logic programming and automated reasoning, probabilistic method, classifier and statistical learning method, neural network, and deep learning.
- artificial intelligence application 1226 may analyze the sensor signals or analyzing results of the sensor signals from hosts 204 and/or analyzing modules 308 using any suitable artificial intelligence approaches to generate analyzing results and provide the analyzing results to hosts 204 via communication unit 1224 .
- voice or speech recognition may be performed on voice signals and image or video recognition may be performed on image signals.
- user management application 1228 may store and organize any information related to user 1202 , for example, user profile, demographics, accounts, activities, preferences, and interests. In some embodiments, user management application 1228 may perform user authentication to verify whether user 1202 is authorized to assemble and customize the modular assembly robotic toy. In some embodiments, user management application 1228 may facilitate user 1202 to interact with other users of modular assembly robotic toys in a dedicated online community or any social media. For example, teachers may assist students to assemble and customize modular assembly robotic toys remotely via user management application 1228 on server 206 . In this embodiment, firmware management application 1230 may obtain, store, and distribute firmware to be updated on control modules 302 of modular assembly robotic toys. Firmware may be dynamically or periodically updated to fix bugs, add new functions, and improve hardware performance.
- Firmware management application 1230 may organize firmware by versions (reflecting the recency of firmware) or categories (for different structures, forms, and functions of modular assembly robotic toys). In some embodiments, firmware updates may be notified and pushed to hosts 204 once they become available or periodically according to an update schedule.
- FIG. 13 is a perspective view of an example of a modular assembly unmanned aerial vehicle (UAV) robotic toy 1300 including multiple assembly modules 1302 , 1304 , and 1306 and connectors 1308 in accordance with an embodiment.
- UAV unmanned aerial vehicle
- modular assembly robotic toys may be assembled and customized to achieve a wide variety of structures, forms, and functions, for example, modular assembly robotic toy 100 illustrated in FIGS. 1A-1C .
- modular assembly UAV robotic toy 1300 includes a control module 1302 and four flight actuation modules 1304 - 1 , 1304 - 2 , 1304 - 3 , and 1304 - 4 .
- Each flight actuation module 1304 may be electrically and mechanically connected to control module 1302 via a respective connector 1308 and connection interface 1310 of control module 1302 .
- a set of propellers 1306 may be attached to each flight actuation module 1304 and driven by a motor in a respective flight actuation module 1304 .
- Control module 1302 and each flight actuation module 1304 may include spare connection interfaces 1310 to be used to connect additional assembly modules, accessories, or any other physical structures.
- a payload may be attached to the bottom of control module 1302 , for example, a gimbal, a camera, or an additional battery pack.
- modular assembly UAV robotic toy 1300 may not include a separate power module. Instead, the power module may be integrated into control module 1302 and/or flight actuation modules 1304 . In some embodiments, a separate power module may be plugged into modular assembly UAV robotic toy 1300 .
- control module 1302 and flight actuation modules 1304 may be the same as control module 302 and flight actuation modules 320 , respectively, as described above in detail.
- connectors 1308 although the shape is different from that of connectors 110 in order to adapt the aerodynamic shape of a UAV, each connector 1308 still includes two open ends adapted to fitting into connection interfaces 1310 of two assembly modules, respectively, and to mechanically and electrically connect the two assembly modules as described above with respect to connectors 110 . It is to be appreciated that in some embodiments, different connectors may be used to mechanically and electrically connect two assembly modules of modular assembly UAV robotic toy 1300 , e.g., control module 1302 and flight actuation module 1304 .
- one end of the connector may be integrated with an assembly module and thus, the connector includes one open end adapted to fitting into connection interface 1310 of the other assembly module.
- the connector may be part of an assembly module and can be attached to and detached from another assembly module, as opposed to a separate component that can be detached from both assembly modules.
- the connector may be mechanically connected to connection interface 1310 via any suitable means, such as magnets.
- FIG. 14A-14B are perspective views of an example of a connection structure in accordance with an embodiment.
- the connection structure includes a connector 1402 , a first connection interface 1404 - 1 on a first assembly module 1406 - 1 , and a second connection interface 1404 - 2 on a second assembly module 1406 - 2 .
- Connector 1402 may be the same as connector 110 described above with respect to FIGS. 1A-1C
- each connection interface 1404 may be the same as connection interfaces described above with respect to FIGS. 1A-1C as well.
- connection interfaces 1404 - 1 and 1404 - 2 are parts of a color recognition module and a connector module, respectively.
- connection interfaces 1404 can be parts of any assembly modules 202 described herein. As described above, the number of connection interfaces 1404 of an assembly module 202 is not limited.
- first assembly module 1406 - 1 such as the color recognition module shown in FIG. 14A
- second assembly module 1406 - 2 such as the connector module shown in FIG. 14A
- connection interfaces 1404 - 2 may include multiple connection interfaces 1404 - 2 .
- connection interfaces 1404 - 1 and 1404 - 2 are plugged into connection interfaces 1404 - 1 and 1404 - 2 , respectively, so as to mechanically and electrically connect first and second assembly modules 1406 - 1 and 1406 - 2 .
- connector 1402 may be plugged into connection interfaces 1404 - 1 and 1404 - 2 at multiple orientations relative to one another.
- connector 1402 may be plugged into connection interfaces 1404 - 1 and 1404 - 2 at any orientations relative to one another. Thus, a user may no longer need to align connector 1402 with each connection interface 1404 at a specific orientation to ensure mechanical and electrical connectivity.
- spare connection interfaces 1404 - 2 on second assembly module 1406 - 2 may be used for connecting additional assembly modules to second assembly module 1406 - 2 via additional connectors 1402 .
- connector 1402 is detachable from each connection interface 1404 after being plugged into connection interfaces 1404 - 1 and 1404 - 2 .
- the connection structure disclosed herein thus provides an easy way to assemble assembly modules 202 to build modular assembly robotic toys and dissemble the modular assembly robotic toys into separate assembly modules 202 .
- FIG. 15 is an exploded view of an example of a connection structure in accordance with an embodiment.
- the connection structure includes connector 1402 and a connection interface having a casing 1502 and a circuit board 1504 . It is to be appreciated that although one connection interface is illustrated in FIG. 15 , another connection interface having the same structure as the connection interface shown in FIG. 15 can be part of the connection structure.
- FIG. 16A is a perspective view of an example of connector 1402 in accordance with an embodiment.
- connector 1402 includes a casing 1506 having two open ends 1508 - 1 and 1508 - 2 , lock mechanisms including snaps 1510 - 1 and 1510 - 2 , protrusions 1512 - 1 and 1512 - 2 , and recesses 1514 - 1 and 1514 - 2 , and a raised annular 1516 .
- Each open end 1508 may be adapted to fitting into the connection interfaces 1404 - 1 and 1404 - 2 .
- casing 1506 is in a substantially cylindrical shape and includes two symmetric portions with respect to raised annular 1516 .
- Casing 1506 may be made of any suitable materials, such as plastics.
- An inner space (not shown) is formed inside casing 1506 between two open ends 1508 - 1 and 1508 - 2 .
- connector 1402 further includes four pins 1518 arranged and fixed in the inner space of casing 1506 .
- FIG. 16B is a perspective view of an example of pin 1518 of connector in FIG. 16A in accordance with an embodiment.
- each pin 1518 includes two ends 1602 - 1 and 1602 - 2 and a body 1604 .
- a spring (not shown) may be disposed in the inner space of body 1604 and connected between two ends 1602 - 1 and 1602 - 2 .
- Each end 1602 of pin 1518 thus can move up and down because of the resilience of the spring.
- Each pin 1518 including ends 1602 , body 1604 , and spring, may be made of any suitable electrically conductive materials, such as copper or aluminum.
- each end 1602 of pin 1518 is in contact with a surface, e.g., a contact, end 1602 is pressed toward the surface by the spring to maintain reliable electrical connectivity.
- Two ends 1602 - 1 and 1602 - 1 of pin 1518 are exposed by open ends 1508 - 1 and 1508 - 2 of casing 1506 , respectively.
- Each pin 1518 is in parallel with one another and in parallel with the central axis of casing 1506 .
- Pins 1518 provide electrical connections between two connection interfaces when connector 1402 is plugged into the two connection interfaces. It is to be appreciated that the number of pins 1518 in this embodiment corresponds to the number of lines of bus 400 and thus, can be different in other examples.
- four pins 1518 include a center pin arranged along the central axis of casing 1506 and three peripheral pins arranged at concentric rings relative to the central axis of casing 1506 .
- lock mechanisms provide mechanical connection and stability between the two connection interfaces when connector 1402 is plugged into the two connection interfaces.
- Snaps 1510 - 1 and 1510 - 2 are disposed on annular edges at open ends 1508 - 1 and 1508 - 2 of casing 1506 , respectively. As shown in FIGS. 15 and 16A , snaps 1510 at each open end 1508 may be equally spaced apart by recesses 1514 , which are formed on casing 1506 .
- Protrusions 1512 - 1 and 1512 - 2 are disposed on the two symmetric portions of the outer surface of casing 1506 separated by raised annular 1516 , respectively. As shown in FIGS.
- lock mechanisms may include one or some of, but not all of, snaps 1510 , protrusions 1512 , and recesses 1514 .
- lock mechanisms other than snaps 1510 , protrusions 1512 , and recess 1514 may be formed in connector 1402 .
- casing 1502 of the connection interface includes a cover 1520 , a hole 1522 , lock mechanisms including recesses 1524 , protrusions 1526 , and a lower annular edge (not shown), and an upper annular edge 1528 .
- Casing 1502 may be made of any suitable materials, such as plastics.
- hole 1522 of casing 1502 is in a substantially cylindrical shape that fits the substantially cylindrical shape of connector 1402 .
- Lock mechanisms provide mechanically connection and stability between the connection interface and connector 1402 when one end of connector 1402 is plugged into the connection interface.
- the lower annular edge and upper annular edge 1528 are disposed at two ends of hole 1522 of casing 1502 , respectively.
- Recesses 1524 are formed in casing 1502 . As shown in FIGS. 15 and 18 , recesses 1524 may be equally spaced apart from one another. The number of recesses 1524 is the same as the number of protrusions 1512 - 1 on one portion of the outer surface of casing 1506 . Protrusions 1526 are disposed on the inner surface of casing 1502 . As shown in FIGS. 15 and 18 , protrusions 1526 may be equally spaced apart by recesses 1524 . The number of protrusions 1526 is the same as the number of recesses 1514 - 1 in one portion of casing 1506 .
- lock mechanisms may include one or some of, but not all of, recesses 1524 , protrusions 1526 , and the lower annular edge. In some embodiments, lock mechanisms other than recesses 1524 , protrusions 1526 , and the lower annular edge may be formed in the connection interface.
- guiding holes 1802 are formed on a panel that is arranged at the lower end of hole 1522 of casing 1502 and connected to the inner surface of casing 1502 .
- a portion of each pin 1518 passes through one of guiding holes 1802 to reach circuit board 1504 .
- the number of guiding holes 1802 in this embodiment is same as the number of contacts on circuit board 1504 and is larger than the number of pins 1518 of connector 1402 .
- circuit board 1504 of the connection interface includes a planar center contact 1530 arranged at the center of circuit board 1504 and planar peripheral contacts 1532 separately arranged at concentric rings 1531 - 1 and 1531 - 2 on circuit board 1504 .
- a first set of four peripheral contacts 1532 - 3 are electrically connected one another by circuit board 1504 , e.g., by wires inside the circuit board 1504 or on the other side of circuit board 1504 .
- a second set of four peripheral contacts 1532 - 2 are electrically connected one another by circuit board 1504 , e.g., by wires inside the circuit board 1504 or on the other side of circuit board 1504 .
- the first and second sets of peripheral contacts 1532 - 3 and 1532 - 2 are electrically separate from each other.
- all four peripheral contacts 1532 - 1 are electrically connected one another by circuit board 1504 , e.g., by wires inside the circuit board 1504 or on the other side of circuit board 1504 .
- the set of peripheral contacts 1532 - 1 are electrically separate from the first and second sets of peripheral contacts 1532 - 3 and 1532 - 2 . That is, four separate electrical contacts corresponding to center contact 1530 , peripheral contacts 1532 - 1 , peripheral contacts 1532 - 2 , and peripheral contacts 1532 - 3 are formed on circuit board 1504 . Each of the four separate electrical contacts is electrically connected to one of the four lines of bus 400 . On the other hand, when connector 1402 is plugged into the connection interface, each of four pins 1518 of connector 1402 is in contact with a respective one of the four separate electrical contacts.
- the center pin is in contact with center contact 1530
- each of the peripheral pins is in contact with one of the set of respective peripheral contacts 1532 depending on the orientation at which connector 1402 is plugged into the connection interface.
- the set of four separate peripheral contacts 1532 - 1 in innermost ring 1531 - 1 may be replaced by a single ring contact.
- FIG. 19 is a cross-sectional view of an example of a connection structure in accordance with an embodiment.
- connector 1402 is plugged into the two connection interfaces described above with respect to FIGS. 15-18 at one of a plurality of orientations.
- Pins 1518 of connectors 1402 are in contact with planar contacts of each connection interface so that the two connection interfaces are electrically connected. Specifically, one ends 1602 - 1 of each pin 1518 are in contact with planar contacts 1530 and 1532 on circuit board 1504 - 1 of one connection interface, and another ends 1602 - 2 of each pin 1518 are in contact with planar contacts 1530 and 1532 on circuit board 1504 - 2 of another connection interface.
- Each pin 1518 passes through one of guiding holes 1802 of each connection interface.
- each peripheral pin of connector 1402 may pass through different guiding holes 1802 and in contact with different peripheral contacts 1532 on circuit board 1504 .
- FIGS. 20A-20D are plan views of the connection interface in contact with pins 1518 of connector 1402 at four orientations with 90 degrees offset, respectively, in accordance with an embodiment.
- each solid dot represents one pin 1518 passing through guiding hole 1802 and is in contact with corresponding planar contact 1530 or 1532 on circuit board 1504 .
- four pins 1518 include a center pin arranged along the central axis of casing 1506 and three peripheral pins arranged along the concentric rings relative to the center pin.
- two peripheral pins that are electrically separate one another are arranged at the outermost ring relative to the center pin, and one peripheral pin is arranged at the innermost ring.
- the center pin regardless of the orientation, the center pin always passes through the center guiding hole and in contact with center contact 1530 on circuit board 1504 .
- the peripheral pin may pass through one of the four guiding holes at the innermost ring and be in contact with one of four peripheral contacts 1532 - 1 arranged at the innermost ring on circuit board 1504 depending on the orientation.
- the four guiding holes and peripheral contacts 1532 - 1 are equally spaced apart at the innermost ring with 90 degrees offset.
- each of the two peripheral pins may pass through one of four guiding pins with 90 degrees offset at the outermost ring and be in contact with one of four peripheral contacts 1532 - 2 or 1532 - 3 with 90 degrees offset at the outermost ring on circuit board 1504 depending on the orientation.
- connector 1402 can be plugged into the connection interface at any suitable number of orientations.
- snaps 1510 - 1 on one annular edge of casing 1506 are snapped-fit to lower annular edge 1902 - 1 of casing 1502 - 1 of one connection interface, and snaps 1510 - 2 on another annular edge of casing 1506 are snapped-fit to lower annular edge 1902 - 2 of casing 1502 - 2 of another connection interface. As shown in FIG. 19 , snaps 1510 - 1 on one annular edge of casing 1506 are snapped-fit to lower annular edge 1902 - 1 of casing 1502 - 1 of one connection interface, and snaps 1510 - 2 on another annular edge of casing 1506 are snapped-fit to lower annular edge 1902 - 2 of casing 1502 - 2 of another connection interface. As shown in FIG.
- each protrusion 1512 - 1 on one portion of the outer surface of casing 1506 is inserted into a respective recess 1524 - 1 in casing 1502 - 1 of one connection interface
- each protrusion 1512 - 2 on another portion of the outer surface of casing 1506 is inserted into a respective recess 1524 - 2 in casing 1502 - 2 of another connection interface.
- each protrusion 1526 on the inner surface of casing 1502 of a connection interface may be inserted into a respective recess 1514 in casing 1506 to further enhance the mechanical connection between two connection interfaces via connector 1402 .
- Lock mechanisms of connector 1402 and connection interfaces not only can provide mechanical stability to the corresponding structure, but also can guide connector 1402 to be plugged into the connection interfaces at certain orientations.
- upper annular edge 1528 - 1 of casing 1502 - 1 of one connection interface abuts against one side of raised annular 1516 of casing 1506 of connector 1402
- upper annular edge 1528 - 2 of casing 1502 - 2 of another connection interface abuts against another side of raised annular 1516 , which may provide additional mechanical stability and axial guidance to the corresponding connection structure.
- the number of possible orientations at which connector 1402 can be plugged into the two connection interfaces is the same as the number of recesses 1524 in casing 1502 , the number of recesses 1514 in casing 1506 , the number of protrusions 1526 on casing 1502 , and the number of protrusions 1512 on casing 1506 .
- each of recesses 1524 or 1514 is 90 degrees offset from adjacent recesses 1524 or 1514
- each of protrusions 1526 or 1512 is also 90 degrees offset from adjacent protrusions 1526 or 1512 .
- the number of orientations at which connector 1402 can be plugged into the connection interface is not limited to four as shown in this embodiment. In other examples, by changing the number of lock mechanisms and/or the angular offset between adjacent lock mechanisms, connector 1402 can be plugged into the connection interface at any suitable number of orientations.
- FIG. 21A-21B are perspective views of various examples of a circuit board 2102 or 2108 having ring contacts 2106 thereon in accordance with an embodiment.
- a plurality of ring contacts 2106 each arranged at one of concentric rings on circuit board 2102 or 2108 , replace peripheral contacts 1532 illustrated in FIG. 17 .
- a center contact 2104 is arranged at the center of circuit board 2102 or 2108 .
- a corresponding connector includes a center pin arranged along the central axis of casing, and a plurality of peripheral pins arranged at concentric rings relative to the central axis.
- the number of ring contacts 2106 in this embodiment is the same as the number of peripheral pins of the corresponding connector.
- circuit board 2102 includes three ring contacts 2106 and thus, the corresponding connector includes three peripheral contacts, each of which can be in contact with a respective ring contact 2106 .
- circuit board 2108 includes four ring contacts 2106 and thus, the corresponding connector includes four peripheral contacts, each of which can be in contact with a respective ring contact 2106 .
- FIGS. 22A and 22B are perspective view and cross-sectional view, respectively, of another example of a connector 2202 in accordance with an embodiment.
- casing and mechanical locks thereon have the same structures as the ones described in the embodiment with respect to FIGS. 15-20 and thus, will not be repeated again.
- connector 2202 includes a center pin 2204 and three concentric ring contacts 2206 - 1 , 2206 - 2 , and 2206 - 3 .
- Center pin 2204 is arranged along the central axis of the casing, and each ring contact 2206 is arranged concentric to center pin 2204 (the central axis).
- FIG. 22C is a perspective view of contacts 2204 and 2206 of connector 2202 in accordance with an embodiment.
- the lengths of ring contacts 2206 are different.
- ring contact 2206 - 1 is arranged at the innermost ring and has the largest length among three ring contacts 2206 ;
- ring contact 2206 - 2 is arranged at the intermediate ring and has the second largest length among three ring contacts 2206 ;
- ring contact 2206 - 3 is arranged at the outermost ring and has the smallest length among three ring contacts 2206 .
- center pin 2204 has the length larger than those of ring contacts 2206 - 2 and 2206 - 3 but smaller than that of ring contact 2206 - 1 .
- innermost ring contact 2206 - 1 has the smallest diameter
- outermost ring contact 2206 - 3 has the largest diameter among three ring contacts 2206 .
- Center pin 2204 and each ring contact 2206 may be made of any suitable electrically conductive materials, such as copper or aluminum.
- FIG. 23 is a plan view of another example of a connection interface in accordance with an embodiment.
- FIG. 24A is a plan view of another example of a circuit board 2402 of the connection interface in FIG. 23 in accordance with an embodiment.
- the connection interface in this embodiment can be used with connector 2202 illustrated in FIGS. 22A-22C .
- the connection interface may include a casing 2302 and circuit board 2402 .
- mechanical locks on casing 2302 have the same structures as those described in the embodiment with respect to FIGS. 15-20 and thus, will not be repeated again.
- a center guiding hole and three ring openings are formed on the panel to allow corresponding center pin 2204 and ring contacts 2206 to pass through, respectively.
- a center contact 2404 and three peripheral contacts 2406 - 1 , 2406 - 2 , and 2406 - 3 are arranged on circuit board 2402 .
- Center contact 2404 is arranged at the center of circuit board 2402
- each peripheral contact 2406 is arranged at a different distance from center contact 2404 .
- each peripheral contact 2406 is arranged at a respective concentric ring.
- peripheral contact 2406 - 1 is arranged in the innermost ring and has the shortest distance from center pin 2404 among three peripheral contacts 2406 ;
- peripheral contact 2406 - 2 is arranged in the intermediate ring and has the second shortest distance from center pin 2404 among three peripheral contacts 2406 ;
- peripheral contact 2406 - 3 is arranged in the outermost ring and has the longest distance from center pin 2404 among three peripheral contacts 2406 .
- FIG. 24B-24D are cross-sectional views of another example of a connection structure including connector 2202 in FIG. 22A in contact with the connection interface in FIG. 23 in accordance with an embodiment.
- center contact 2404 may pass through the center guiding hole in casing 2302 (see FIG. 23 ) to be in contact with center pin 2204 of connector 2202
- each peripheral contact 2406 may pass through a respective ring opening in casing 2302 (see FIG. 23 ) to be in contact with a respective ring contact 2206 .
- four electrical contacts are formed by the connection structure, which correspond to the four lines of bus 400 .
- center contact 2404 and peripheral contacts 2406 are deformable so as to be pressed onto a respective contact 2204 or 2206 of connector 2202 when connector 2202 is plugged into the connection interface.
- center contact 2404 may include an end connected to a spring as shown in FIGS. 24B-24D .
- Each peripheral contact 2406 may include a resilient zigzag portion that can deform under pressure.
- the arrangement disclosed in this embodiment with respect to FIGS. 22-24 can ensure electrical connectivity between connector 2202 and the connection interface when the connector is plugged at any orientation relative to the connection interface, i.e., can achieve 360 degrees rotation. Also, the arrangement disclosed in this embodiment is simple for adding more electrical contacts between connector 2202 and the connection interface, i.e., by adding additional peripheral contacts at outer concentric rings on circuit board 2402 of the connection interface and adding corresponding ring contacts to connector 2202 . Moreover, as described below, other structures of connector 2202 and the connection interface in this embodiment, such as the lock mechanisms, are the same as the corresponding structures in the embodiment with respect to FIGS. 15-20 . Similar to the embodiment with respect to FIGS.
- connection structure disclosed herein thus provides an easy way to assemble assembly modules to build modular assembly robotic toys and dissemble the modular assembly robotic toys into separate assembly modules.
- FIG. 25 is a depiction of an example of communication between control module 302 and multiple assembly modules 202 and hosts 204 in accordance with an embodiment.
- control module 302 may perform bidirectional communication with hosts 204 using USB and/or Bluetooth.
- host instructions generated by hosts 204 may be transmitted to control module 302 using BLE technologies.
- host instructions generated by hosts 204 for example, programming instructions, may be transmitted to control module 302 using USB.
- Error detection and correction codes such as cyclic redundancy check (CRC) code, may be added to the raw data of host instructions to ensure reliable delivery of host instructions.
- module data e.g., sensor signals obtained by sensor modules 304 and status data of each assembly module 202 , may be transmitted from control module 302 to hosts 204 using BLE technologies.
- firmware may be transmitted from hosts 204 to control module 302 using BLE or USB as well.
- the firmware file may be divided into multiple data packages with the same or different size, each of which includes a header and an error detection and correction code. Each data package may be transmitted in sequence to control module 302 and checked for data error. An end data package may be added to indicate the end of the transmission of the firmware data package stream.
- the firmware file may be encrypted using information that is unique to control module 302 to ensure that only the correct control module 302 can decrypt and update the received firmware.
- control module 302 may perform bidirectional communication with any assembly module 202 in the modular assembly robotic toy via bus 400 .
- bus 400 may be a CAN bus, and CAN data transmission and ID allocation protocols may be used for communication between control module 302 and assembly modules 202 .
- each assembly module 202 includes an initial ID that can uniquely identify assembly module 202 .
- the initial ID may be stored in persistent storage 616 , e.g., an ROM or a flash, of corresponding assembly module 202 and cannot be changed.
- a module type ID that is indicative of the type of corresponding assembly module 202 may be part of the initial ID or may be derived from the initial ID.
- the same type of assembly modules e.g., all power modules 310 or all connector modules 312 , may have the same module type ID.
- the initial ID may be used by control module 302 and hosts 204 to identify corresponding assembly module 202 and updating status (e.g., online or offline) of assembly module 202 .
- the initial ID may be used as the communication address of corresponding assembly module 202 before a communication ID is assigned to assembly module 202 .
- a communication ID that is used as the communication address (e.g., source or destination address) via bus 400 may be generated based on the initial ID and assigned to corresponding assembly module 202 by control module 302 .
- a communication ID may include a transmission ID and a receiving ID.
- the transmission ID may be used when a message is transmitted from control module 302 to corresponding assembly 202
- the receiving ID may be used when a message is received by control module 302 from corresponding assembly module 202 .
- the receiving ID may be derived from the corresponding transmission ID.
- control module 302 may only need to provide the transmission ID to corresponding assembly module 202 , and assembly module 202 can derive the corresponding receiving ID based on the received transmission ID.
- the receiving ID may be the transmission ID+0x0100. For example, if the transmission ID is 0x0060, then the receiving ID is 0x0160.
- control module 302 may transmit operation instructions to each assembly module 202 using the transmission ID of corresponding assembly module 202 through the two data lines of bus 400 .
- the operation instructions may be transmitted in the form of data messages, each of which includes the transmission ID of corresponding assembly module 202 as the destination address.
- TABLE 1 below shows one example of a message of operation instructions transmitted from control module 302 to infrared sensor module 314 .
- each assembly module 202 may transmit module data, e.g., sensor signals or status data, to control module 302 through the two data lines of bus 400 .
- the module data may be transmitted in the form of data messages, each of which includes the receiving ID of corresponding assembly module 202 to identify the source of the message.
- TABLE 2 below shows one example of a message of module data transmitted from power module 310 to control module 302 .
- assembly module 202 When an assembly module 202 is first time coupled into a modular assembly robotic toy, assembly module 202 may need to be registered as part of the modular assembly robotic toy by control module 302 .
- control module 302 For example, for modular assembly robotic toy 100 illustrated in FIGS. 1A-1C , when a user first time plugs infrared sensor module 112 into modular assembly robotic toy 100 to add the object detection capability, newly-added infrared sensor module 112 may need to be registered as part of modular assembly robotic toy 100 .
- FIG. 26 is an event diagram illustrating an example of registering assembly module 202 in accordance with an embodiment. In this embodiment, registration of new assembly module 202 may be informed to host 204 by control module 302 so that host 204 can manage all registered assembly modules 202 of the modular assembly robotic toy and provide the registration information to the user and/or server 206 .
- assembly module 202 may retrieve the initial ID thereof.
- the initial ID that is unique to assembly module 202 may be stored into persistent storage 616 of assembly module 202 when assembly module 202 was manufactured, which cannot be modified afterwards.
- the initial ID may be stored at a predefined address with a predefined length in persistent storage 616 , and assembly module 202 may retrieve the initial ID by reading data from the predefined address with the predefined length. If no data is stored at the predefined address, then assembly module 202 cannot work.
- a separate indicator may be stored in persistent storage 616 , and assembly module 202 may first read the indicator to see if the initial ID has been properly assigned and stored. This process may be automatically triggered when assembly module 202 is plugged into the modular assembly robotic toy and powered up by the power signals from the power lines of bus 400 .
- assembly module 202 may transmit a module initiation message including the retrieved initial ID to control module 302 via the data lines of bus 400 .
- TABLE 3 illustrates one example of the module initiation message transmitted from assembly module 202 to control module 302 .
- the field “Flag” indicates that the six-byte initial ID starts from the next byte of the message.
- the module initiation message may also include the module type ID of assembly module 202 .
- control module 302 may assign a communication ID to assembly module 202 , which can be used for communication between assembly module 202 and control module 302 via bus in the future.
- the communication ID may be generated based on information in the module initiation message, for example, the initial ID and/or the module type ID of assembly module 202 .
- control module 302 may generate the communication ID based on the module type ID if assembly module 202 is the only assembly module of the same type that has been registered with the modular assembly robotic toy.
- control module 302 may generate the communication ID based on the initial ID of assembly module 202 , which uniquely identifies corresponding assembly module 202 as described above.
- a certain range of commutation IDs may be reserved for each type of assembly modules 202 .
- communication IDs for movement modules 318 may be in the range from 0x31 to 0x3F.
- the commutation ID may include a transmission ID and a receiving ID as described above.
- control module 302 may transmit an ID assignment message including the assigned communication ID to assembly module 202 via the data lines of bus 400 .
- the ID assignment message may include both transmission and receiving IDs or the transmission ID only (if the receiving ID can be derived from the transmission ID).
- TABLE 4 below illustrates one example of the ID assignment message transmitted from control module 302 to assembly module 202 .
- the ID assignment message includes the initial ID of assembly module 202 as the destination address of the message. The initial ID may not be used in future communication between assembly module 202 and control module 302 after the communication ID is delivered to assembly module 202 .
- assembly module 202 may start to periodically transmit “heartbeat” messages indicative of normal status of assembly module 202 to control module 302 .
- Each heartbeat message may include the communication ID, for example, the receiving ID, to identify the source of the message.
- control module 302 may add the initial ID of corresponding assembly module 202 to an online module list.
- the online module list may include initial IDs of all assembly modules 202 that have registered with the modular assembly robotic toy and that are currently coupled to the modular assembly robotic toy.
- control module 302 may also assign resources to assembly module 202 .
- control module 302 may reset the value of the threshold period of assembly module 202 . The value of the threshold period may continuously decrease as time goes by.
- the threshold period may be used by control module 302 to determine whether corresponding assembly module 202 is decoupled from the modular assembly robotic toy (i.e., becomes offline). Newly-added assembly module 202 is then considered being registered with the modular assembly robotic toy by control module 302 .
- control module 302 may transmit a module registration message to host 204 indicating that assembly module 202 is registered.
- host 204 may update a registration list to include assembly module 202 and present a message to the user informing the registration of assembly module 202 .
- FIG. 27 is a flow chart illustrating an example of a method 2700 for registering assembly module 202 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed. Method 2700 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown in FIG. 27 , as will be understood by a person of ordinary skill in the art.
- hardware e.g., circuitry, dedicated logic, programmable logic, microcode, etc.
- software e.g., instructions executing on a processing device
- FIG. 27 is a flow chart illustrating an example of a method 2700 for registering assembly module 202
- control module 302 may receive a first message having a first ID of assembly module 202 .
- the first ID may be stored in persistent storage 616 of assembly module 202 and uniquely identify assembly module 202 .
- the first message may further include a third ID that is indicative of the type of assembly module 202 .
- the third ID may be either separate from the first ID, a part of the first ID, or can be derived from the first ID.
- control module 302 may generate a second ID for assembly module 202 based on the first ID of assembly module 202 .
- the second ID may be used for future communication between control module 302 and assembly module 202 .
- the second ID may be generated based on both the first ID and the third ID or based on the third ID alone.
- the second ID may include two sub-IDs, e.g., a transmission ID and a receiving ID, or may be one of the transmission and receiving IDs.
- control module 302 may transmit a second message having the second ID to assembly module 202 .
- the second message may include the first ID and/or the third ID of assembly module 202 as well.
- control module 302 may determine whether a third message having the second ID for assembly module 202 is received from assembly module 202 .
- the third message further includes a normal status indicator and is periodically transmitted by assembly module 202 to control module 302 .
- the third message may be a heartbeat message.
- the second ID was assigned by control module 302 to assembly module 202 and transmitted to assembly module 202 for future communication between control module 302 and assembly module 202 , including heartbeat messages. If no third message is received, then control module 302 may continue checking the receipt of the third message. If the third message is received, then at 2710 , control module 302 may register assembly module 202 as a new assembly module of the modular assembly system, e.g., a robotic toy.
- control module 302 may add the first ID of assembly module 202 into an online module list. That is, assembly module 202 may be associated with a status as being coupled to the modular assembly system.
- control module 302 may assign resources to assembly module 202 .
- control module 302 may reset the threshold period of assembly module 202 .
- control module 302 may transmit a fourth message having the status of assembly module 202 to host 204 . The status may indicate that assembly module 202 is coupled to the modular assembly system and registered as a new assembly module of the modular assembly system.
- FIG. 28 is a flow chart illustrating another example of a method 2800 for registering assembly module 202 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed. Method 2800 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown in FIG. 28 , as will be understood by a person of ordinary skill in the art.
- hardware e.g., circuitry, dedicated logic, programmable logic, microcode, etc.
- software e.g., instructions executing on a processing device
- assembly module 202 may obtain the first ID from persistent storage 616 . In some embodiments, 2802 may be automatically performed in response to assembly module 202 being powered-up. At 2804 , assembly module 202 may transmit the first message having the first ID to control module 302 . The first message may include the third ID that is indicative of the type of assembly module 202 . At 2806 , assembly module 202 may determine whether the second message having the second ID is received from control module 302 . If no second message is received, then assembly module 202 may continue checking the receipt of the second message. If the second message is received, then at 2808 , assembly module 202 may transmit the third message having the second ID to control module 302 . In some embodiments, assembly module 202 may periodically transmit heartbeat messages including the second ID that is indicative of the source of the heartbeat messages to control module 302 .
- a registered assembly module of a modular assembly system may be intentionally or accidently decoupled from the modular assembly system due to, for example, loose connectors, poor contacts, etc.
- control module 102 may quickly detect such an event and update the status of infrared sensor module 112 as being offline.
- control module 102 may also quickly detect such an event and update the status of infrared sensor module 112 as being online.
- FIG. 29 is an event diagram illustrating an example of updating a status associated with assembly module 202 in accordance with an embodiment.
- status update of assembly module 202 may be informed to host 204 by control module 302 so that host 204 can manage the status of all registered assembly modules 202 of the modular assembly robotic toy and provide the status information to the user and/or server 206 .
- assembly module 202 may periodically transmit heartbeat messages that are indicative of normal status of assembly module 202 to control module 302 .
- Each heartbeat message may include the communication ID, for example, the receiving ID, to identify the source of the message.
- the transmission of heartbeat messages may be an independent process that is unconditionally performed irrespective of other events or processes in this embodiment. In some embodiments, the transmission of heartbeat messages may be dependent upon other events or the outcome of other processes in this embodiment as will be described below in detail.
- host 204 may transmit a data request message to control module 302 requesting data from an assembly module 202 .
- host 204 may request status data or sensor signals from sensor modules 304 .
- control module 302 may transmit a data request message to corresponding assembly module 202 via the data lines of bus 400 for requesting the data from assembly module 202 .
- the data request message may include the transmission ID assigned to assembly module 202 as the destination address of the data request message as described above.
- assembly module 202 may retrieve the requested data, e.g., from persistent storage 616 , memory 604 , and/or any other suitable components.
- assembly module 202 may transmit a data message to control module 302 via the data lines of bus 400 .
- the data message may include the requested data and the receiving ID of assembly module 202 that is indicative of the source of the data message.
- control module 302 in response to receiving the data message from assembly module 202 and identifying the source of the data message based on the receiving ID, control module 302 may transmit a data message including the requested data to host 204 .
- assembly module 202 may skip transmitting the heartbeat messages to control module 302 because the data messages may also indicate the normal status of assembly module 202 .
- control module 302 in response to receiving either the heartbeat message at 2902 or the data message at 2910 from assembly module 202 , control module 302 can determine that assembly module 202 is currently coupled to the modular assembly robotic toy (i.e., online) and thus, add the initial ID of corresponding assembly module 202 to the online module list. In some embodiments, the communication ID assigned to assembly module 202 may be recorded as well in the online module list. At 2916 , control module 302 may also reset the value of the threshold period of assembly module 202 . At 2918 , control module 302 may transmit a status message to host 204 , which indicates the online status of corresponding assembly module 202 . In some embodiments, host 204 may update an online module list to include assembly module 202 and present a message to the user informing the online status of assembly module 202 .
- FIG. 30 is an event diagram illustrating another example of updating a status associated with assembly module 202 in accordance with an embodiment.
- host 204 may transmit a data request message to control module 302 for requesting data from assembly module 202 .
- host 204 may request status data or sensor signals from sensor modules 304 .
- control module 302 in response to receiving the data request message, may transmit a data request message to corresponding assembly module 202 via the data lines of bus 400 requesting the data from assembly module 202 .
- the data request message may include the transmission ID assigned to assembly module 202 as the destination address of the data request message as described above.
- control module 302 neither receives a data message from assembly module 202 as a response to the data request message transmitted at 3004 nor receives a heartbeat message from assembly module 202 until the threshold period of corresponding assembly module 202 expires.
- Control module 302 thus may determine that assembly module 202 is currently decoupled from the modular assembly robotic toy (i.e., becomes offline).
- control module 302 may move the initial ID of assembly module 202 to an offline module list.
- the communication ID assigned to assembly module 202 may be recorded in the offline module list as well.
- control module 302 may not transmit the data request message to assembly module 202 at 3004 .
- control module 302 may also move the initial ID of assembly module 202 to the offline module list.
- control module 302 may transmit a status message to host 204 , which indicate the offline status of corresponding assembly module 202 .
- host 204 may update an offline module list to include assembly module 202 and present a message to the user informing the offline status of assembly module 202 .
- FIG. 31 is a flow chart illustrating an example of a method 3100 for updating a status associated with assembly module 202 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed. Method 3100 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown in FIG. 31 , as will be understood by a person of ordinary skill in the art.
- hardware e.g., circuitry, dedicated logic, programmable logic, microcode, etc.
- software e.g., instructions executing on a processing device
- FIG. 31 is a flow chart illustrating an example of a method 3100 for updating
- control module 302 may transmit a first message to assembly module 202 requesting data from assembly module 202 .
- the first message may include a communication ID assigned to assembly module 202 as the destination address.
- the communication ID may be generated by control module 302 based on the initial ID of assembly module 202 .
- the first message may be generated in response to receiving a data request message from host 204 .
- control module 302 may determine whether a second message including the requested data is received from assembly module 202 . If control module 302 does not receive the second message from assembly module 202 , then at 3106 , control module 302 may determine whether a third message including a normal status indicator, e.g., a heartbeat message, is received from assembly module 202 . If control module 302 also does not receive the third message from assembly module 202 , then control module 302 may check whether the threshold period of assembly module 202 expires. If the threshold period expires, then at 3118 , control module 302 may update status of assembly module 202 as being decoupled from the modular assembly system (i.e., offline). If at 3116 , the threshold period has not expired, then method 3100 returns to 3102 .
- a third message including a normal status indicator e.g., a heartbeat message
- control module 302 may update the status of assembly module 202 as being coupled to the modular assembly system (i.e., online). An embodiment of 3108 shall now be described in greater detail. Specifically, at 3110 , control module 302 may determine whether the initial ID and/or communication ID of assembly module 202 is in the online module list.
- control module 302 may add the initial ID and/or communication ID of assembly module 202 into the online module list. In some embodiments, resources previously assigned to assembly module 202 may be resumed. At 3114 , control module 302 may also reset the value of the threshold period of assembly module 202 .
- control module 302 may skip 3112 and reset the value of the threshold period of assembly module 202 at 3114 .
- control module 302 may transmit a fourth message including the current status of assembly module 202 , either online or offline, to host 204 at 3120 .
- host 204 may update the online module list or the offline module list to include assembly module 202 accordingly and present a message to the user informing the current online or offline status of assembly module 202 .
- FIG. 32 is a flow chart illustrating another example of a method 3200 for updating a status associated with assembly module 202 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed. Method 3200 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown in FIG. 32 , as will be understood by a person of ordinary skill in the art.
- hardware e.g., circuitry, dedicated logic, programmable logic, microcode, etc.
- software e.g., instructions executing on a processing device
- assembly module 202 may receive the first message from control module 302 requesting data from assembly module 202 .
- assembly module 202 may retrieve the requested data.
- assembly module 202 may transmit the second message including the requested data to control module 302 .
- assembly module 202 may periodically transmit the third message including the normal status indicator to control module 302 . It is to be appreciated that as described above, in some embodiments, assembly module 202 may skip transmitting the third message to control module 302 if the second message has been transmitted to control module 302 within a time period.
- each of the second message and the third message may also include a communication ID assigned by control module 302 to assembly module 202 that indicates the source of the second message or third message.
- firmware of assembly modules 202 such as control modules 302 .
- bugs detected in previous version of firmware may be fixed in the updated firmware.
- new functions may be added to the updated firmware.
- an assembly module 202 may become a different type of assembly module 202 by downloading a different firmware.
- FIGS. 33-35 disclose examples of updating firmware on control module 302 in a secure way to ensure that the firmware to be updated is for the correct control module.
- FIG. 33 is an event diagram illustrating an example of updating firmware on control module 302 in accordance with an embodiment.
- control module 302 may sample noise signals of control module 302 itself. It is understood that certain noise signals, e.g., Gaussian white noise, are random signals at any time and thus, may be unique to the source of the noise signals, e.g., control module 302 in this example. It is to be appreciated that in some embodiments, the sampled signals may not be limited to noise signals and may be any signals that is unique to control module 302 .
- control module 302 may first sample certain components of control module 302 , e.g., the power supply, to obtain an initial signal, e.g., a power signal.
- the sampling may be performed by analog-to-digital conversion (ADC).
- Control module 302 then may filter the initial signal for removing noise signal to obtain a filter signal, e.g., a filtered power signal.
- the filtering may be performed by Kalman filtering, first-order lag or low-pass filtering, weighted average recursive filtering, Butterworth filtering, Chebyshev filtering, or any other suitable filters.
- Control module 302 may compute a noise signal based on the initial and filtered signals. For example, the value of the noise signal may be obtained by subtracting the value of the initial signal by the value of the filtered signal.
- control module 302 may compute an encryption key based on the noise signal. For example, modulo operation may be used for calculating the encryption key. In one example, the value of the noise signal may modulo 16 (NoiseValue % 16) to obtain the encryption key. In some embodiments, the length of the encryption key may be checked to see if it meets the security requirement. If the length of the encryption key does not meet the security requirement, different modulo operation may be applied to generate another encryption key. At 3306 , control module 302 may store the encryption key, for example, in persistent storage 716 . It is to be appreciated that the encryption key may be stored in any suitable storage.
- an encryption key may be generated by other approaches.
- any suitable computational random-number generator may be used by control module 302 to generate the encryption key, such as linear congruential generator, middle square method, Mersenne Twister algorithm, CryptGenRandom, probability density function, or any pseudorandom number generators (PRNGs), etc.
- PRNGs pseudorandom number generators
- the initial ID of control module 302 or any IDs of any components of control module 302 e.g., the ID of processor 702 , may be used by control module 302 to generate the encryption key.
- host 204 may transmit a firmware update request message to control module 302 . It is to be appreciated that 3308 may occur before 3302 .
- control module 302 may sample noise signals to generate the encryption key in response to receiving the firmware update request message.
- control module 302 may perform 3302 regardless of whether the firmware update request message being received. For example, control module 302 may automatically perform 3302 the first time when control module 302 is powered-up.
- control module 302 may transmit an encryption key message to host 204 .
- Control module 302 may retrieve the encryption key stored in persistent storage 716 and include the encryption key in the encryption key message.
- host 204 may encrypt the firmware to be updated based on the received encryption key. Any suitable encryption algorithms may be used by host 204 for encryption, such as but not limited to, advanced encryption standard (AES), data encryption standard (DES), or triple DES (3DES).
- host 204 may divide the firmware file into M data packages. In this embodiment, each data package may have the same size and include a header and an error detection and correction code. TABLE 5 below illustrates one example of the firmware data package. In TABLE 5, the header includes the flag, package size, and package number. The package size does not count the header and error detection and correction code, but includes the package number and data. The size of data is the package size minus two bytes.
- host 204 may transmit the first firmware data package to control module 302 .
- control module 302 may check the first firmware data package based on the CRC16 code. If the CRC check is passed, control module 302 may send a message notifying host 204 to continue to transmit the next firmware data package. If the CRC check is failed, control module 302 may send a message notifying host 204 to resend the previous firmware data package. In some embodiments, the firmware update process may be aborted if no response is received from host 204 within a certain period after notifying host 204 to resend the previous firmware data package or if the CRC check has failed for a certain number of times.
- host 204 may transmit the last (e.g., Mth) firmware data package to control module 302 . That is, host 204 may transmit each of the M firmware data packages in sequence to control module 302 . It is to be appreciated that in some embodiments, CRC check may be skipped, and host 204 may continue transmitting each firmware data package without waiting for notification from control module 302 .
- control module 302 may retrieve the encryption key, for example, from persistent storage 716 or any storage where the encryption key can be stored.
- control module 302 may decrypt the firmware file using the retrieved encryption key. If the retrieved encryption key matches the encryption key that is used by host 204 to encrypt the firmware file, i.e., the firmware file is transmitted to the correct control module, then the firmware file can be decrypted (i.e., the decryption is successful).
- control module 302 may load the firmware to complete the firmware update process.
- control module 302 may transmit a firmware update status message to host 204 to report whether the firmware update is successful or not.
- FIG. 34 is a flow chart illustrating an example of a method 3400 for updating firmware on control module 302 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed. Method 3400 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown in FIG. 34 , as will be understood by a person of ordinary skill in the art.
- hardware e.g., circuitry, dedicated logic, programmable logic, microcode, etc.
- software e.g., instructions executing on a processing device
- FIG. 34 is a flow chart illustrating an example of a method 3400 for updating firmware on control module
- control module 302 may obtain noise information sampled from control module 302 itself.
- control module 302 may sample certain components, such as the power supply, to obtain an initial signal, for example, using ADC.
- control module 346 may filter the initial signal to obtain a filter signal, for example, using Kalman filtering.
- control module 302 may compute a noise signal based on the initial and filter signals, for example, using subtraction operation.
- control module 302 may calculate a first encryption key based on the noise information. For example, the calculation may be performed by modulo operation on the noise signal.
- control module 302 may store the first encryption key in persistent storage 716 of control module 302 .
- control module 302 may determine whether a message requesting firmware update is received from host 204 . If the message is not received, control module 302 may continue checking until the message is received. At 3416 , control module 302 may transmit the first encryption key to host 204 .
- control module 302 may receive encrypted firmware from host 204 .
- the firmware may be encrypted by host 204 based on a second encryption key.
- the encrypted firmware may be divided into multiple data packages that are sequentially transmitted to control module 302 from host 204 . The size of each data package may be the same.
- control module 302 may retrieve the first encryption key from persistent storage 716 of control module 302 .
- control module 302 may decrypt the firmware based on the retrieved first encryption key.
- control module 302 may determine whether the decryption succeeds. In this embodiment, if the first encryption key matches the second encryption key, then the decryption succeeds.
- control module 302 may load the decrypted firmware to complete the firmware update process. Otherwise, the decryption fails, and the firmware update process fails.
- FIG. 35 is a flow chart illustrating another example of a method 3500 for updating firmware on control module 302 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed. Method 3500 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown in FIG. 35 , as will be understood by a person of ordinary skill in the art.
- hardware e.g., circuitry, dedicated logic, programmable logic, microcode, etc.
- software e.g., instructions executing on a processing device
- FIG. 35 is a flow chart illustrating another example of a method 3500 for updating firmware on control module
- host 204 may transmit a message request firmware update to corresponding control module 302 at which the firmware update is to be performed.
- host 204 may receive an encryption key from control module 302 .
- the encryption key may be calculated based on noise information sampled from control module 302 , such as the power supply of control module 302 .
- host 204 may encrypt the firmware based on the received encryption key using any suitable encryption algorithms, such as AES, DES, or 3DES.
- host 204 may divide the firmware into multiple data packages. For example, the size of each package may be the same.
- host 204 may sequentially transmit each firmware data package to control module 302 .
- host 204 may further receive the firmware update status (e.g., success or failure) from control module 302 .
- control application 1214 programming application 1216
- firmware update application 1218 described above with respect to FIG. 12 are examples of the host applications running on hosts 204 .
- Embodiments of control application 1214 and programming application 1216 shall now be described in greater detail with respect to FIGS. 36-42 .
- FIG. 36 is a block diagram illustrating an example of applications running on hosts 204 in accordance with an embodiment. It is to be appreciated that applications 3602 , 3604 , and 3606 disclosed herein may run on a single host 204 or on multiple hosts 204 . For the illustrative purpose only, applications 3602 , 3604 , and 3606 in this embodiment will be described as running on a single host 204 . It is also to be appreciated that some applications 3602 , 3604 , and 3606 may be integrated into a single application. For example, script control environment 3604 may be integrated with runtime control environment 3602 to form control application 1214 or may be integrated with graphical programming environment 3606 to form programming application 1216 . As shown in FIG.
- a user interface 3608 may be rendered by host 204 to serve as the interface between user 1202 and any of applications 3602 , 3604 , and 3606 .
- a host instruction generator 3622 may run on host 204 for generating host instructions based on user inputs to any of applications 3602 , 3604 , and 3606 and providing host instructions to operating system 504 and/or virtual machine 506 running on control module 302 .
- runtime control environment 3602 may allow user 1202 to interactively control operations of the modular assembly system at runtime when the modular assembly system in on operation.
- Runtime control environment 3602 may include a virtual handle 3610 , a lighting controller 3612 , and a gesture controller 3614 .
- Interactions between user 1202 and any functional components of runtime control environment 3602 may be recorded and forwarded to a control instruction generator 3624 in host instruction generator 3622 to generate corresponding control instructions.
- the control instructions may be transmitted from host 204 to operating system 504 of control module 302 and converted into operation instructions for each corresponding assembly module 202 of the modular assembly system.
- the control instruction may be transmitted to control module 302 using BLE technologies.
- virtual handle 3610 may allow user 1202 to control motion of the modular assembly system by interacting with virtual handle 3610 .
- virtual handle 3610 may mimic the appearance of one of assembly modules 202 of the modular assembly system.
- movement module 318 may be substantially ball-shaped, and virtual handle 3610 may mimic the ball shape of movement module 318 when virtual handle 3610 is rendered on the display screen of host 204 .
- User 1202 may interact with virtual handle 3160 in various manners.
- the display screen of host 204 may be a touch screen so that user 1202 can touch different portions of virtual handle 3160 and/or use different touch gestures to control the actions of actuator modules 306 , e.g., moving forward, backward, upward, and downward, turning left and right, or tilting forward and backward.
- host 204 may be a mobile or portable device having inertial sensors, such as gyroscopes and accelerometers.
- Host 204 thus can sense motion of the mobile device caused by user 1202 (e.g., capturing the angle in which the mobile device is tilted by user 1202 ), and virtual handle 3610 can control the actions of actuator modules 306 by mimicking the motion or pose (e.g., tilting angles) of the mobile device.
- user 1202 may first keep the mobile device flat to set a zero angle point.
- virtual handle 3160 can control actuator modules 306 to move forward or backward when the mobile device is tilted forward or backward, respectively, and control actuator modules 306 to turn left or right when the mobile device is tilted left or right, respectively.
- virtual handle 3610 may be presented on a display screen of an assembly module 202 of the modular assembly system, such as control modules 302 or analyzing modules 308 .
- voice command recognition or user gesture recognition may be performed, at least partially, by analyzing modules 308 .
- lighting controller 3612 may allow user 1202 to control lighting of the modular assembly system.
- lights may be arranged on one or more assembly modules 202 , such as control modules 302 and movement modules 318 .
- User 1202 may set the lighting scheme of the modular assembly system, for example, the color of lights, the lighting duration and interval, synchronization of lighting on different assembly modules, etc.
- Gesture controller 3614 may allow user 1202 to control the modular assembly system, or one or more assembly modules 202 thereof to present certain gestures. It is to be appreciated that additional functional components may be included in runtime control environment 3602 to facilitate user 1202 to control the modular assembly system at runtime.
- script control environment 3604 may allow user 1202 to designate a function or behavior corresponding to the particular modular assembly system.
- script control environment 3604 may provide a set of predefined base functions 3616 - 1 , . . . , 3616 - n to user 1202 for selection.
- Each predefined base function 3616 may correspond to one of modular assembly systems and include a series of actions for each assembly module 202 of the specific modular assembly system.
- User 1202 may further modify or configure the selected base function 3616 to designate the desired function or behavior to be performed by the particular modular assembly system.
- programming instruction generator 3626 in host instruction generator 3622 may generate corresponding programming instructions, e.g., Lua scripts, based on the modified or configured base function 3616 .
- Host 204 may transmit the programming instructions to virtual machine 506 of control module 302 prior to the modular assembly system performs the function or behavior designated by user 1202 .
- the programming instructions may be transmitted to control module 302 using BLE technologies.
- Virtual machine 506 may convert the programming instructions into operation instructions for each assembly module 202 of the modular assembly system to perform the series of actions set in the modified or configured base function 3616 .
- a physical switch on control module 302 may be used to interrupt the execution of the programming instructions by virtual machine 506 of control module 302 .
- the programming instructions may not be executed by control module 302 until the physical switch is triggered.
- Each base function 3616 may be predefined based on a specific modular assembly system, i.e., the particular assembly modules plugged into the modular assembly system.
- Base functions 3616 may include, for example, self-balancing, tracking, color recognition, obstacle avoidance, and following.
- the specific modular assembly system for the self-balancing base function may include at least control module 302 with gyroscopes and movement modules 318 .
- the self-balancing base function allows the modular assembly system to keep balance while moving.
- the gyroscopes on control module 302 may detect the titling angle of the modular assembly system at runtime, and control module 302 may control movement modules 318 to maintain balance based on the real-time tilting angle of the modular assembly system.
- the specific modular assembly system for the tracking base function may include at least color recognition module 316 and movement modules 318 .
- the tracking base function allows the modular assembly system to move along a colored path. Specifically, a path with a particular color may be drawn on the ground, and color recognition module 316 may recognize the particular colored path and provide the sensor signals to control module 302 . Control module 302 then may control movement modules 318 to move along the colored path.
- graphical programming environment 3606 may facilitate user 1202 to input programs, e.g., statement blocks, prior to the modular assembly system (e.g., control module 302 ) on operation.
- Graphical programming environment 3606 may include graphical statement blocks 3618 and graphical assembly modules 3620 . Interactions between user 1202 and any functional components of graphical programming environment 3606 may be recorded and forwarded to programming instruction generator 3626 in host instruction generator 3622 to generate corresponding programming instructions.
- the programming instructions may be transmitted by host 204 to virtual machine 506 of control module 302 and converted into operation instructions for each corresponding assembly module 202 of the modular assembly system. For example, the programming instructions may be transmitted to control module 302 using USB.
- graphical programming environment 3606 prior to transmitting the programming instructions to control module 302 , may present a preview of the operations of assembly modules 202 of the modular assembly system in accordance with the programming instructions.
- user 1202 may select graphical statement blocks 3618 by dragging-and-dropping and provide values to parameters of selected graphical statement blocks 3618 to build the program.
- graphical statement blocks 3618 may be grouped into categories, and at least some categories relate to functions of assembly modules 202 of the modular assembly system, such as motion, lighting, or sensing.
- parameters of some graphical statement blocks 3618 may be associated with the physical switch on control module 302 , such as the duration of pressing the physical switch as a condition to trigger an event.
- each graphical assembly module 3620 may be a graphical representation corresponding to one of assembly modules 202 of the modular assembly system and may be associated with at least one property, such as name, icon, color, etc.
- the icon may mimic the appearance of corresponding assembly module 202 .
- user 1202 may provide values of properties of graphical assembly modules 3620 to configure graphical assembly modules 3620 and/or corresponding assembly modules 202 . It is to be appreciated that additional functional components may be included in graphical programming environment 3606 to facilitate user 1202 to program the modular assembly system.
- FIGS. 37A-37B are screenshots of an example of a control application in accordance with an embodiment.
- the screenshot represents an exemplary GUI of virtual handle 3610 and lighting controller 3612 .
- a GUI element 3702 represents virtual handle 3610 for the user to real-time control the movement direction (e.g., forward, backward, left, and right) of movement modules 318 of the modular assembly system.
- a GUI element 3704 allows the user to adjust the movement speed of movement modules 318 .
- GUI elements 3706 and 3708 represent lighting controller 3612 .
- GUI element 3706 allows the user to control lighting on control module 302
- GUI element 3708 allows the user to control lighting on movement modules 318 .
- a GUI element 3710 represents gesture controller 3614 and allows the user to select one of the three predefined gestures that can be presented by color recognition module 316 .
- FIG. 38 is a screenshot of another example of a control application in accordance with an embodiment.
- the screenshot represents an exemplary GUI of one base function 3616 of script control environment 3604 .
- a GUI element 3802 indicates that the selected base function 3616 is “Obstacle Avoidance.”
- a GUI element 3804 represents the assembly modules that are needed for the corresponding modular assembly system to perform the selected base function and the number of each type of assembly modules that are currently online.
- a GUI element 3806 allows the user to further modify or configure the selected base function, for example, by simulating the behavior of the modular assembly system.
- FIG. 39 is a flow chart illustrating an example of a method 3900 for providing host instructions to control module 302 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed. Method 3900 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown in FIG. 39 , as will be understood by a person of ordinary skill in the art.
- hardware e.g., circuitry, dedicated logic, programmable logic, microcode, etc.
- software e.g., instructions executing on a processing device
- FIG. 39 is a flow chart illustrating an example of a method 3900 for providing host instructions to
- host 204 may present a GUI having a first set of GUI elements and a second set of GUI elements to a user.
- the first set of GUI elements may allow the user to interactively control operation of the modular assembly system at runtime when the modular assembly system is on operation.
- the operation of the modular assembly system may include, for example, motion, lighting, and gesture.
- the first set of GUI elements may represent runtime control environment 3602 , which includes virtual handle 3610 , lighting controller 3612 , and gesture controller 3614 , as described above in detail.
- the second set of GUI elements may allow the user to designate a function or behavior corresponding to the modular assembly system.
- the second set of GUI elements may represent script control environment 3604 , which includes predefined base functions 3616 as described above in detail.
- host 204 may facilitate the user to select the first set of GUI elements or the second set of GUI elements.
- host 204 may determine whether the first set of GUI elements or the second set of GUI elements is selected by the user. If the first set of GUI elements are selected, then at 3908 , host 204 may dynamically generate a first set of host instruction, e.g., control instructions, based on the user's interactions with the first set of GUI elements for controlling the operation of the modular assembly system.
- host 204 may transmit the generated first set of host instructions to control module 302 of the modular assembly system at runtime when the modular assembly system is on operation.
- host 204 may obtain a second set of host instructions, e.g., programming instructions, based on the function or behavior designated by the user.
- host 204 may transmit the obtained second set of host instructions to control module 302 of the modular assembly system prior to the modular assembly system performs the function or behavior designated by the user. It is to be appreciated that the user may select both the first and second sets of GUI elements, and host 204 can generate and transmit both the first and second sets of host instructions in parallel or in sequence.
- FIGS. 40A-40B are screenshots of an example of a programming application in accordance with an embodiment.
- the screenshot represents an exemplary GUI of graphical programming environment 3606 .
- GUI elements 4002 and 4004 represent graphical statement blocks 3618 that are organized in categories for the user select.
- GUI element 4002 represents the categories such as “Flow,” “Motion,” “Light,” “Sensor,” “Logic,” “Math,” and “Variable.”
- GUI element 4004 represents the available graphical statement blocks 3618 under the currently-selected category—“Flow.”
- graphical statements blocks 3618 may include parameters.
- the user can drag and drop desired graphical statement blocks 3618 into a GUI element 4006 to build a program.
- the values of the parameters of the selected graphical statement blocks 3618 can be inputted in GUI element 4006 as well.
- FIG. 41 is a screenshot of an example of a program 4100 including graphical statement blocks in accordance with an embodiment.
- program 4100 starts with a “Start” graphical statement block.
- Program 4100 sets the values of “ballpower” parameters of two power modules 310 as “30” and “ ⁇ 30.”
- the next graphical statement block of program 4100 indicates that the following graphical statement blocks are repeated.
- Program 4100 further includes a graphical statement block that instructs movement modules 318 to stop without brake and graphical statement blocks that instruct all assembly modules to flash lights in the green color.
- program 4100 can achieve the following function or behavior: (1) the modular assembly robotic toy moves forward for one second with output power of 30 watt, while all the assembly modules flash the green lights; (2) after one second of idle time, switching the power output of the two movement modules to cause the modular assembly robotic toy to move backward for one second, while all the assembly modules flash the green lights; and (3) repeating (1) and (2) until the execution of program 4100 is interrupted.
- GUI element 4008 represents graphical assembly modules 3620 of graphical programming environment 3606 .
- GUI element 4008 shows the icon 4010 of the modular assembly robotic toy, the name 4012 of the modular assembly robotic toy, and icons, names, and numbers of each assembly module 202 of the modular assembly robotic toy.
- a GUI element 4014 shows an icon of control module 302
- a GUI element 4016 shows a field to input the name of control module 302
- a GUI element 4018 shows a field to select the color for control module 302 .
- a GUI element 4018 provides the similar presentation or selection for movement module 318 .
- GUI element 4008 allows the user to provide values to properties (e.g., icon, name, or color) of each assembly module 202 of the modular assembly robotic toy or properties of the modular assembly robotic itself.
- properties e.g., icon, name, or color
- the icon of the modular assembly robotic toy and the icons of each assembly module 202 mimic the appearances of corresponding modular assembly robotic toy and assembly modules 202 , respectively.
- FIG. 42 is a flow chart illustrating another example of a method 4200 for providing host instructions to control module 302 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed. Method 4200 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown in FIG. 42 , as will be understood by a person of ordinary skill in the art.
- hardware e.g., circuitry, dedicated logic, programmable logic, microcode, etc.
- software e.g., instructions executing on a processing device
- host 204 may present a GUI, e.g., graphical programming environment 3606 , including a set of first graphical representations and a set of second graphical representations.
- Each first graphical representation e.g., graphical statement block 3618
- Each second graphical representation e.g., graphical assembly module 3620
- Each assembly module 202 may correspond to one assembly module 202 associated with at least one property, e.g., icon, name, or color.
- the set of first graphical representations may be grouped into categories, some of which relate to functions of assembly modules 202 , such as motion, lighting, or sensing.
- host 204 may facilitate the user to select at least one of the first graphical representations and provide values of the parameters for each selected graphical representation. The selection may be made by dragging-and-dropping the first graphical representations. In other words, the user may build the program in a visual and graphical manner.
- host 204 may facilitate the user to provide values to the properties of the second graphical representations. That is, the user may customize the properties of assembly modules 202 . It is to be appreciated that host 204 may perform 4204 and 4206 independently or in parallel. In some embodiments, the user may not be promoted to provide values to the properties of the second graphical representations.
- host 204 may generate a set of host instructions, e.g., programming instructions, based on the selected first and second graphical representations and values provided thereof.
- the host instructions may be, for example, source codes or intermediate codes. It is to be appreciated that in some embodiments, the host instructions may be generated based on the selected first graphical representation and values provided thereof, i.e., the program, but not based on the selected second graphical representations and values provided thereof. In other words, in some embodiments, the customization of properties of assembly modules 202 via the second graphical representations may be used by host 204 , but not by control module 302 .
- host 204 may transmit the generated set of host instructions to control module 302 for controlling the operations of assembly modules 202 of the modular assembly system.
- the transmission may occur prior to control module 302 is on operation.
- host 204 may present a preview of the operations of assembly modules 202 in accordance with the set of host instructions prior to the transmission.
- FIG. 43 Various embodiments can be implemented, for example, using one or more computer systems, such as computer system 4300 shown in FIG. 43 .
- One or more computer system 4300 can be used, for example, to implement method 2700 of FIG. 27 , method 2800 of FIG. 28 , method 3100 of FIG. 31 , method 3200 of FIG. 32 , method 3400 of FIG. 34 , method 3500 of FIG. 35 , method 3900 of FIG. 39 , and method 4200 of FIG. 42 , as well as event diagrams of FIGS. 26, 29, 30, and 33 .
- computer system 4300 can update firmware on and/or provide host instructions to a control module of a modular assembly system, according to various embodiments.
- Computer system 4300 can be any computer capable of performing the functions described herein.
- Computer system 4300 can be any well-known computer capable of performing the functions described herein.
- Computer system 4300 includes one or more processors (also called central processing units, or CPUs), such as a processor 4304 .
- processor 4304 is connected to a communication infrastructure or bus 4306 .
- One or more processors 4304 may each be a graphics processing unit (GPU).
- a GPU is a processor that is a specialized electronic circuit designed to process mathematically intensive applications.
- the GPU may have a parallel structure that is efficient for parallel processing of large blocks of data, such as mathematically intensive data common to computer graphics applications, images, videos, etc.
- Computer system 4300 also includes user input/output device(s) 4303 , such as monitors, keyboards, pointing devices, etc., that communicate with communication infrastructure 4306 through user input/output interface(s) 4302 .
- user input/output device(s) 4303 such as monitors, keyboards, pointing devices, etc., that communicate with communication infrastructure 4306 through user input/output interface(s) 4302 .
- Computer system 4300 also includes a main or primary memory 4308 , such as random access memory (RAM).
- Main memory 4308 may include one or more levels of cache.
- Main memory 4308 has stored therein control logic (i.e., computer software) and/or data.
- Computer system 4300 may also include one or more secondary storage devices or memory 4310 .
- Secondary memory 4310 may include, for example, a hard disk drive 4312 and/or a removable storage device or drive 4314 .
- Removable storage drive 4314 may be a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup device, and/or any other storage device/drive.
- Removable storage drive 4314 may interact with a removable storage unit 4318 .
- Removable storage unit 4318 includes a computer usable or readable storage device having stored thereon computer software (control logic) and/or data.
- Removable storage unit 4318 may be a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, and/any other computer data storage device.
- Removable storage drive 4314 reads from and/or writes to removable storage unit 4318 in a well-known manner.
- secondary memory 4310 may include other means, instrumentalities or other approaches for allowing computer programs and/or other instructions and/or data to be accessed by computer system 4300 .
- Such means, instrumentalities or other approaches may include, for example, a removable storage unit 4322 and an interface 4320 .
- the removable storage unit 4322 and the interface 4320 may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM or PROM) and associated socket, a memory stick and USB port, a memory card and associated memory card slot, and/or any other removable storage unit and associated interface.
- Computer system 4300 may further include a communication or network interface 4324 .
- Communication interface 4324 enables computer system 4300 to communicate and interact with any combination of remote devices, remote networks, remote entities, etc. (individually and collectively referenced by reference number 4328 ).
- communication interface 4324 may allow computer system 4300 to communicate with remote devices 4328 over communications path 4326 , which may be wired and/or wireless, and which may include any combination of LANs, WANs, the Internet, etc. Control logic and/or data may be transmitted to and from computer system 4300 via communication path 4326 .
- a tangible apparatus or article of manufacture comprising a tangible computer useable or readable medium having control logic (software) stored thereon is also referred to herein as a computer program product or program storage device.
- control logic software stored thereon
- control logic when executed by one or more data processing devices (such as computer system 4300 ), causes such data processing devices to operate as described herein.
Abstract
A modular assembly toy system includes assembly modules each including at least one connection interface and one or more connectors each configured to mechanically and electrically connect two of the assembly modules via the respective connection interfaces. The assembly modules include a control module and an analyzing module. The control module includes a control module communication unit configured to obtain a set of host instructions from one or more hosts and a control module processor configured to generate a set of operation instructions for control each assembly module based on at least the set of host instructions. The analyzing module includes an analyzing module sensor configured to obtain a sensor signal, an analyzing module processor configured to analyze the sensor signal to generate a first analyzing result, and an analyzing module communication unit configured to transmit the sensor signal or the first analyzing result to at least one of the hosts.
Description
- This application is continuation of U.S. application Ser. No. 15/601,664, filed on May 22, 2017, entitled “Connection Structures of Modular Assembly System,” which is continuation of International Application No. PCT/CN2016/104824, filed on Nov. 7, 2016, entitled “Modular Assembly System,” claims priority to Chinese Application No. CN201620271418.0, filed on Mar. 31, 2016, all of which are hereby incorporated by reference in their entireties.
- The disclosure relates generally to robotic systems, and more particularly, to modular assembly robotic toys.
- Robotic toys are cutting-edge products for childhood education because they can keep children engaged, educated, and entertained. Unlike a virtual character that resides only on a display screen, a robotic toy can be held in a child's arm or touched and thus, provides a visceral experience. Today, one focus is to explore how more sophisticated robotic systems could be used in educational settings. For example, the term “educational robotics” refers to the teaching practice during which the students use the robots to construct knowledge with the help of or for the robots themselves.
- While there is much potential for such systems, known robotic systems as toys have encountered issues such as difficulty of assembling, limited functions, and lack of flexibility and extensibility, especially when the users are young children.
- The disclosure relates generally to robotic systems, and more particularly, to modular assembly robotic toys.
- In one example, a system includes a plurality of assembly modules and one or more connectors. Each assembly module includes at least one connection interface. Each connector is configured to mechanically and electrically connect two of the plurality of assembly modules via the respective connection interfaces of the two assembly modules. The plurality of assembly modules include at least a control module and an analyzing module. The control module includes a control module communication unit configured to obtain a set of host instructions from one or more hosts and a control module processor configured to generate a set of operation instructions for control each assembly module based on at least the set of host instructions. The analyzing module includes an analyzing module sensor configured to obtain a sensor signal, an analyzing module processor configured to analyze the sensor signal to generate a first analyzing result, and an analyzing module communication unit configured to transmit the sensor signal or the first analyzing result to at least one of the one or more hosts.
- In another example, an assembly module includes at least one connection interface, a sensor, a processor, and a communication unit. Each connection interface is configured to mechanically and electrically connect to a connector and receive at least a power signal via the connector. The sensor is configured to obtain a sensor signal. The processor is operatively coupled to the sensor and the at least one connection interface and configured to analyze the sensor signal to generate an analyzing result. The communication unit is operatively coupled to the processor and configured to transmit the sensor signal or the analyzing result to a host.
- In still another example, a system includes a plurality of assembly modules and one or more connectors. At least one of the assembly modules includes at least one connection interface. Each connector is configured to mechanically and electrically connect two of the plurality of assembly modules via the connection interface of one of the two assembly modules. The plurality of assembly modules include at least a control module and an actuation module. The control module includes a communication unit configured to obtain a set of host instructions from one or more hosts and a processor configured to generate a set of operation instructions for each assembly module based on at least the set of host instructions. The actuation module includes a set of propellers and a motor configured to drive the set of propellers based on at least the set of operation instructions for the actuation module generated by the processor.
- In yet another example, a system includes a plurality of assembly modules and one or more connectors. Each assembly module includes at least one connection interface. Each connector is configured to mechanically and electrically connect two of the plurality of assembly modules via the respective connection interfaces of the two assembly modules. Each connector includes two open ends adapted to fitting into the connection interfaces of the two assembly modules, respectively. The plurality of assembly modules include at least a control module. The control module includes a communication unit configured to obtain a set of host instructions from one or more hosts and a processor configured to generate a set of operation instructions for each assembly module based on at least the set of host instructions.
- In a different example, a connection structure includes two connection interfaces and a connector. Each connection interface includes a plurality of planar contacts arranged at a center and one or more concentric rings on a circuit board and a plurality of first lock mechanisms arranged on a first casing. The connector includes a second casing including two open ends and a plurality of second lock mechanisms arranged on the second casing and a plurality of pins. Each pin includes two ends each exposed by one of the two open ends of the second casing, respectively. When the connector is plugged into the two connection interfaces at a plurality of orientations relative to one another, the plurality of pins of the connector are in contact with the plurality of planar contacts of each connection interface so that the two connection interfaces are electrically connected, and the plurality of second lock mechanisms of the connector are interlocked with the plurality of first lock mechanisms of each connection interface so that the two connection interfaces are mechanically connected.
- In another example, a connection structure includes two connection interfaces and a connector. Each connection interface includes a plurality of contacts arranged on a circuit board and a plurality of first lock mechanisms arranged on a first casing. The connection includes a second casing including two open ends and a plurality of second lock mechanisms arranged on the second casing and a plurality of concentric ring contacts. Each concentric ring contact includes two ends each exposed by one of the two open ends of the second casing, respectively. When the connector is plugged into the two connection interfaces at a plurality of orientations relative to one another, the plurality of concentric ring contacts of the connector are in contact with the plurality of contacts of each connection interface so that the two connection interfaces are electrically connected, and the plurality of second lock mechanisms of the connector are interlocked with the plurality of first lock mechanisms of each connection interface so that the two connection interfaces are mechanically connected.
- In a different example, a method for registering one of a plurality of assembly modules operatively coupled to one another in a modular assembly system is provided. A first message including a first identifier of the assembly module is received from one of the plurality of assembly modules. A second message including a second identifier for the assembly module is transmitted to the assembly module. The second identifier is generated based on at least the first identifier. A third message including the second identifier is received from the assembly module. In response to determining that the third message is received, the assembly module is registered as a new assembly module of the modular assembly system. At least one of the receiving, transmitting, determining, and registering is performed by a control module of the plurality of assembly modules.
- In another example, a method for updating a status associated with one of a plurality of assembly modules operatively coupled to one another in a modular assembly system is provided. A first message for requesting data from the assembly module is transmitted to one of the plurality of assembly modules. A second message including the requested data or a third message including a normal status indicator is received from the assembly module. In response to determining that the second message or the third message is received, a status associated with the assembly module is updated as being coupled to the modular assembly system. At least one of the transmitting, determining, and updating is performed by a control module of the plurality of assembly modules.
- In a different example, a method for updating firmware on a control module of a modular assembly system is provided. Information related to noise sampled from the control module is obtained. A first encryption key is calculated based on the information. Firmware to be updated on the control module is received from a host of the modular assembly system. The firmware is encrypted based on at least a second encryption key. In response to determining that the received firmware can be decrypted, the decrypted firmware is loaded into the control module. At least one of the obtaining, calculating, receiving, determining, and loading is performed by the control module.
- In another example, a method for encrypting firmware to be updated on a control module of a modular assembly system is provided. An encryption key calculated based on information related to noise sampled from the control module is received. Firmware is encrypted based on at least the encryption key. The encrypted firmware is transmitted to the control module. At least one of the receiving, encrypting, and transmitting is performed by a host of the modular assembly system.
- In a different example, a method for providing host instructions to a control module of a modular assembly system comprising a plurality of assembly modules is provided. A graphical programming environment including a set of first graphical representations and a set of second graphical representations is presented to a user. Each first graphical representation corresponds to a statement block comprising at least one parameter. Each second graphical representation corresponds to one of the plurality of assembly modules associated with at least one property. A user is facilitated to select at least one of the first graphical representations and provide values to the at least one parameter of each selected first graphical representation. The user is facilitated to provide values to the at least one property of one or more of the second graphical representations. Based on at least the selected first and second graphical representations and the provided values thereof, a set of host instructions are generated. The set of host instructions are transmitted to the control module for controlling operation of the plurality of assembly modules. At least one of the presenting, facilitating, facilitating, generating, and transmitting is performed by a host of the modular assembly system.
- In another example, a method for providing host instructions to a control module of a modular assembly system comprising a plurality of assembly modules is provided. A graphical user interface (GUI) including a first set of GUI elements and a second set of GUI elements is presented to a user. The first set of GUI elements allow the user to interactively control operation of the modular assembly system at runtime when the modular assembly system is on operation. The second set of GUI elements allow the user to designate a function corresponding to the modular assembly system. The user is facilitated to select one of the first and second sets of GUI elements. In response to the user selecting the first set of GUI elements, a first set of host instructions are dynamically generated based on at least the user's interactions with the first set of GUI elements for controlling the operation of the modular assembly system at runtime, and the generated first set of host instructions are transmitted to the control module of the modular assembly system at runtime when the modular assembly system is on operation. In response to the user selecting the second set of GUI elements, a second set of host instructions are obtained based on at least the function designated by the user, and the obtained second set of host instructions are transmitted to the control module of the modular assembly system prior to the modular assembly system performs the function designated by the user. At least one of the presenting, facilitating, generating, transmitting, obtaining, and transmitting is performed by a host of the modular assembly system.
- The embodiments will be more readily understood in view of the following description when accompanied by the below figures and wherein like reference numerals represent like elements, wherein:
-
FIGS. 1A-1C are perspective views of an example of a modular assembly robotic toy including multiple assembly modules and connectors in accordance with an embodiment; -
FIG. 2 is a block diagram illustrating a system including assembly modules, hosts, and a server in accordance with an embodiment; -
FIG. 3 is a depiction of various examples of assembly modules in accordance with an embodiment; -
FIG. 4 is a schematic diagram illustrating an example of a bus connecting multiple assembly modules in accordance with an embodiment; -
FIG. 5 is a depiction of an example of transmission of host instructions from hosts to a control module in accordance with an embodiment; -
FIG. 6 is a block diagram illustrating an example of an assembly module in accordance with an embodiment; -
FIG. 7 is a block diagram illustrating an example of a control module in accordance with an embodiment; -
FIG. 8 is a block diagram illustrating an example of an analyzing module in accordance with an embodiment; -
FIG. 9 is a block diagram illustrating an example of a sensor module in accordance with an embodiment; -
FIG. 10 is a block diagram illustrating an example of an actuator module in accordance with an embodiment; -
FIG. 11 is a block diagram illustrating an example of a power module in accordance with an embodiment; -
FIG. 12 is a block diagram illustrating an example of hosts and a server in accordance with an embodiment; -
FIG. 13 is a perspective view of an example of a modular assembly unmanned aerial vehicle (UAV) robotic toy including multiple assembly modules and connectors in accordance with an embodiment; -
FIG. 14A-14B are perspective views of an example of a connection structure in accordance with an embodiment; -
FIG. 15 is an exploded view of an example of a connection structure in accordance with an embodiment; -
FIG. 16A is a perspective view of an example of a connector in accordance with an embodiment; -
FIG. 16B is a perspective view of an example of a pin of the connector inFIG. 17A in accordance with an embodiment; -
FIG. 17 is a plan view of an example of a circuit board of a connection interface in accordance with an embodiment; -
FIG. 18 is a plan view of an example of a connection interface in accordance with an embodiment; -
FIG. 19 is a cross-sectional view of an example of a connection structure in accordance with an embodiment; -
FIGS. 20A-20D are plan views of the connection interface inFIG. 19 in contact with pins of a connector at four orientations with 90 degrees offset, respectively, in accordance with an embodiment; -
FIG. 21A-21B are perspective views of various examples of a circuit board having ring contacts thereon in accordance with an embodiment; -
FIG. 22A is a perspective view of another example of a connector in accordance with an embodiment; -
FIG. 22B is a cross-sectional view of the connector inFIG. 22A in accordance with an embodiment; -
FIG. 22C is a perspective view of contacts of the connector inFIG. 22A in accordance with an embodiment; -
FIG. 23 is a plan view of another example of a connection interface in accordance with an embodiment; -
FIG. 24A is a plan view of another example of a circuit board of the connection interface inFIG. 23 in accordance with an embodiment; -
FIG. 24B-24D are cross-sectional views of another example of a connection structure including the connector inFIG. 22A in contact with the connection interface inFIG. 23 in accordance with an embodiment; -
FIG. 25 is a depiction of an example of communication between a control module and multiple assembly modules and hosts in accordance with an embodiment; -
FIG. 26 is an event diagram illustrating an example of a method for registering an assembly module in accordance with an embodiment; -
FIG. 27 is a flow chart illustrating an example of a method for registering an assembly module in accordance with an embodiment; -
FIG. 28 is a flow chart illustrating another example of a method for registering an assembly module in accordance with an embodiment; -
FIG. 29 is an event diagram illustrating an example of a method for updating a status associated with an assembly module in accordance with an embodiment; -
FIG. 30 is an event diagram illustrating another example of a method for updating a status associated with an assembly module in accordance with an embodiment; -
FIG. 31 is a flow chart illustrating an example of a method for updating a status associated with an assembly module in accordance with an embodiment; -
FIG. 32 is a flow chart illustrating another example of a method for updating a status associated with an assembly module in accordance with an embodiment; -
FIG. 33 is an event diagram illustrating an example of a method for updating firmware on a control module in accordance with an embodiment; -
FIG. 34 is a flow chart illustrating an example of a method for updating firmware on a control module in accordance with an embodiment; -
FIG. 35 is a flow chart illustrating another example of a method for updating firmware on a control module in accordance with an embodiment; -
FIG. 36 is a block diagram illustrating an example of applications running on hosts in accordance with an embodiment; -
FIGS. 37A-37B are screenshots of an example of a control application in accordance with an embodiment; -
FIG. 38 is a screenshot of another example of a control application in accordance with an embodiment; -
FIG. 39 is a flow chart illustrating an example of a method for providing host instructions to a control module in accordance with an embodiment; -
FIGS. 40A-40B are screenshots of an example of a programming application in accordance with an embodiment; -
FIG. 41 is a screenshot of an example of a program including graphical statement blocks in accordance with an embodiment; -
FIG. 42 is a flow chart illustrating another example of a method for providing host instructions to a control module in accordance with an embodiment; and -
FIG. 43 is a block diagram illustrating an example of a computer system useful for implementing various embodiments set forth in the disclosure. - In the following detailed description, numerous specific details are set forth by way of examples in order to provide a thorough understanding of the relevant disclosures. However, it should be apparent to those skilled in the art that the present disclosure may be practiced without such details. In other instances, well known methods, procedures, systems, components, and/or circuitry have been described at a relatively high-level, without detail, in order to avoid unnecessarily obscuring aspects of the present disclosure.
- Throughout the specification and claims, terms may have nuanced meanings suggested or implied in context beyond an explicitly stated meaning. Likewise, the phrase “in one embodiment/example” as used herein does not necessarily refer to the same embodiment and the phrase “in another embodiment/example” as used herein does not necessarily refer to a different embodiment. It is intended, for example, that claimed subject matter include combinations of example embodiments in whole or in part.
- In general, terminology may be understood at least in part from usage in context. For example, terms, such as “and”, “or”, or “and/or,” as used herein may include a variety of meanings that may depend at least in part upon the context in which such terms are used. Typically, “or” if used to associate a list, such as A, B or C, is intended to mean A, B, and C, here used in the inclusive sense, as well as A, B or C, here used in the exclusive sense. In addition, the term “one or more” as used herein, depending at least in part upon context, may be used to describe any feature, structure, or characteristic in a singular sense or may be used to describe combinations of features, structures or characteristics in a plural sense. Similarly, terms, such as “a,” “an,” or “the,” again, may be understood to convey a singular usage or to convey a plural usage, depending at least in part upon context. In addition, the term “based on” may be understood as not necessarily intended to convey an exclusive set of factors and may, instead, allow for existence of additional factors not necessarily expressly described, again, depending at least in part on context.
- As will be disclosed in detail below, among other novel features, the modular assembly systems disclosed herein provide the ability to easily assemble a wide variety of robotic toys from different assembly modules without any assembly tools. In some embodiments, connectors can be used to both mechanically and electrically connect any assembly modules via their respective connection interfaces, thereby providing flexibility and extensibility to achieve different structures, forms, and functions of robotic toys by users. In some embodiments, assembly modules may include “smart” modules that can independently perform certain sensing and analysis functions and communicate the sensing and/or analysis results directly with remote hosts and/or servers. In some embodiments, detection mechanisms may be used to efficiently and effectively achieve assembly module registration and status updates (e.g., online and offline) without the need for physical module configuration or user intervention. In some embodiments, the functions of an assembly module may be further extended by downloading updated firmware using secure update mechanisms.
- The modular assembly systems disclosed herein also provide the ability to facilitate users to easily program any assembled robotic toys via graphical interfaces of various software applications so as to customize the behaviors and functions of the assembled robotic toys as desired. In some embodiments, a graphical programming environment can be used by users, for example, young children, to input programs that can be downloaded to the assembled robotic toys. In some embodiments, a runtime control environment may be provided on a portable device so that users can intuitively and interactively control the actions of the assembled robotic toys in real-time.
- Additional novel features will be set forth in part in the description which follows, and in part will become apparent to those skilled in the art upon examination of the following and the accompanying drawings or may be learned by production or operation of the examples. The novel features of the present disclosure may be realized and attained by practice or use of various aspects of the methodologies, instrumentalities, and combinations set forth in the detailed examples discussed below.
-
FIGS. 1A-1C are perspective views of an example of a modular assemblyrobotic toy 100 includingmultiple assembly modules FIG. 1A , acontrol module 102 is connected to apower module 104 by a connector 110.Power module 104 and the rest of assembly modules—two wheel modules 106-1 and 106-2 and two connector modules 108-1 and 108-2 are to be connected by connectors 110-1, 110-2, 110-3, and 110-4. In this embodiment, all connectors 110 are the same and interchangeable. Any connector 110 can be used to mechanically and electrically connect any twoassembly modules power module 104 and connector modules 108-1 and 108-2 includes multiple connection interfaces and thus, can connect tomultiple assembly modules power module 104 and connector modules 108-1 and 108-2 may serve as a “hub” to provide the flexibility and extensibility of connecting multiple assembly modules together. For example, connector module 108-1 can connect topower module 104 and two wheel modules 106-1 and 106-2. On the other hand, some assembly modules, such ascontrol module 102 and wheel modules 106-1 and 106-2, each includes a single connection interface and thus, may be arranged at the “end” of modular assemblyrobotic toy 100. - As will be described below in detail,
control module 102 may work as the “brain” of modular assemblyrobotic toy 100 to control operations of each assembly module of modular assemblyrobotic toy 100 by communicating data signals, e.g., operation instructions, with each assembly module via connectors 110.Power module 104 may provide “energy” to modular assemblyrobotic toy 100, for example, by transmitting power signals from a battery pack to each assembly module via connectors 110. Wheel modules 106, as one example of actuator modules, may work as the “feet” of modular assemblyrobotic toy 100 by rotating themselves along the axis of rotation. In this embodiment, each assembly module is substantially ball-shaped. For example, because of the ball shape, wheel modules 106 can move without additional structures, i.e., can rotate themselves along the axis of rotation. Also, because of the ball shape, multiple connection interfaces can be arranged symmetrically along any diameters of connector module 108 so that connector module 108 can be arranged at various orientations in modular assemblyrobotic toy 100, which further improves the flexibility and extensibility of modular assemblyrobotic toy 100. Connectors 110 may serve as the “bones” and “nerves” of modular assemblyrobotic toy 100 to provide both mechanical and electrical connections between assembly modules. For example, each connector 110 includes two open ends adapted to fitting into the connection interfaces of any two assembly modules, respectively. -
FIG. 1B illustrates that the assembly modules described with respect toFIG. 1A have been assembled together. The assembled structure can move around by wheel modules 106, which are controlled bycontrol module 102 and powered-up bypower module 104.FIG. 1B further illustrates that modular assemblyrobotic toy 100 can change its structure and form and extend its functions by connecting more assembly modules, e.g., aninfrared sensor module 112 via connector 110-5 and afollower 114. In this embodiment,infrared sensor module 112 can be plugged into modular assemblyrobotic toy 100 by connecting to a spare connection interface of connector module 108-2 via connector 110-5.Follower 114, as one example of accessories, may be directly connected to another spare connection interface of connector module 108-2 without any connector. - As will be described below in detail,
infrared sensor module 112, as one example of sensor modules, may work as the “eyes” of modular assemblyrobotic toy 100 to detect any objects by infrared beams. The sensor signals obtained byinfrared sensor module 112 may be transmitted to controlmodule 102 via connectors 110.Infrared sensor module 112 may be substantially ball-shaped as well. In this embodiment,follower 114 may help supporting and balancing modular assemblyrobotic toy 100 and follow the movement of wheel modules 106. -
FIG. 1C illustrates that the assembly modules described with respect toFIG. 1B have been assembled together to build modular assemblyrobotic toy 100. Modular assemblyrobotic toy 100 can move around by wheel modules 106 andfollower 114, which are controlled bycontrol module 102 and powered-up bypower module 104. Modular assemblyrobotic toy 100 can also detect objects along the moving path byinfrared sensor module 112. In some embodiments,control module 102 may adjust the moving path to avoid any objects detected byinfrared sensor module 112 and control the movement of wheel modules 106 according to the adjusted moving path in real-time. As will be described below in detail, the detection and movement operations of modular assemblyrobotic toy 100 may be controlled bycontrol module 102 in accordance with host instructions received from host(s) either in the form of programming instructions downloaded prior to the operation of modular assemblyrobotic toy 100 or in the form of control instructions received at runtime. That is, modular assemblyrobotic toy 100 can be customized by assembling a number of assembly modules with different functions using the same connectors 110 and by programming the assembled structure through predefined programs and/or real-time control. It is to be appreciated that modular assemblyrobotic toy 100 illustrated inFIGS. 1A-1C is for the illustrative purpose only. As a modular assembly system, robotic toys with different structures, forms, and functions may be easily assembled and programmed in other examples as will be described below in detail. -
FIG. 2 is a block diagram illustrating asystem 200 includingassembly modules 202, hosts 204, and aserver 206 in accordance with an embodiment.System 200 in this embodiment provides hardware, firmware, software, and service supports for assembling, testing, and maintaining modular assembly robotic toys with different structures, forms, and functions.Assembly modules 202 include a number of assembly modules 202-1, 202-2, 202-3, . . . , 202-n of different types. For example,FIG. 3 is a depiction of various examples ofassembly modules 202 in accordance with an embodiment, which include control modules 302 (e.g.,control module 102 inFIGS. 1A-1C ),sensor modules 304,actuator modules 306, analyzing modules 308 (a.k.a. “smart” modules), power modules 310 (e.g.,power module 104 inFIGS. 1A-1C ), and connector modules 312 (e.g., connector module 108 inFIGS. 1A-1C ). It is to be appreciated that any other types of assembly modules may be included in other examples. - In this embodiment,
sensor modules 304 may include sub-types, such as infrared sensor modules 314 (e.g.,infrared sensor module 112 inFIGS. 1A-1C ),color recognition modules 316, and any other sensor modules that can obtain sensor signals from one or more sensors of any types.Actuator modules 306 may include sub-types as well, for example, movement modules 318 (e.g., wheel module 106 inFIGS. 1A-1C ),flight actuation modules 320,joint modules 322, and any other actuator modules that can apply energy for physical operation by one or more actuators of any types. Analyzingmodules 308 may also include sub-types, includingvoice recognition modules 324,image recognition modules 326, and any other analyzing modules that can independently obtain and analyze sensor signals and transmit the sensor signals or the analyzing result tohosts 204 and/orserver 206. It is to be appreciated that in some embodiments, the same assembly module (e.g., in the sense of having the same hardware) may become different types of assembly modules by downloading different types of firmware. For example,voice recognition module 324 andimage recognition module 326 may be formed by downloading different types of firmware to the same physical module. In some embodiments, one type of assembly module may become another type of assembly module by connecting to accessories. For example,movement module 318 may connect to a set of propellers to becomeflight actuation module 320 or a water actuation module (not shown). - As shown in
FIG. 3 , different types ofassembly modules 202 may be connected to controlmodules 302 throughconnector modules 312. It is to be appreciated that any twoassembly modules 202, either in the same type or different types, may be connected one another withoutconnector module 312, e.g., be connected directly via connectors as described above with respect toFIGS. 1A-1C . It is also to be appreciated thatconnector modules 312 do not have to be connected to controlmodules 302 and can be connected to any types ofassembly modules 202. In some embodiments,connector modules 312 may be viewed as a “hub” to provide a number of connection interfaces so thatmore assembly modules 202 can be assembled together. Regardless of the specific type, eachassembly module 202 includes at least one connection interface through whichassembly module 202 can be plugged to a modular assembly robotic toy by a connector. In some embodiments, connection interfaces of anyassembly modules 202 are all the same, i.e., are standard connection interfaces, so that the same connectors can be used to connect any twoassembly modules 202. As described above, in some embodiments, eachassembly module 202 is substantially ball-shaped. The detail of eachassembly module 202 will be described below with respect toFIGS. 6-11S . - Referring back to
FIG. 2 , in this embodiment, hosts 204 may include multiple hosts 204-1 and 204-2, each of which may be any suitable device, for example, a mobile or portable device (e.g., dumb or smart phone, tablet, etc.), laptop computer, desktop computer, netbook computer, media center, wearable device (e.g., eyeglasses, wrist watch, etc.), virtual reality (VR) or augmented reality (AR) device (e.g., VR headset, etc.), automobile control station, gaming console, television set, set-top box, global positioning system (GPS), printer, or any other suitable device.Hosts 204 may communicate with some ofassembly modules 202, e.g.,control modules 302 and analyzingmodules 308, via any suitable communication approaches, such as wired communication, e.g., universal serial bus (USB), IEEE 1394, Thunderbolt, etc., or wireless communication, e.g., WiFi, Bluetooth, ZigBee, near-field communication (NFC), etc., to name a few.Hosts 204 may also communicate withserver 206 via theInternet 208. In some embodiments,Hosts 204 may communicate withserver 206 via any other networks, such as a local area network (LAN), a personal area network (PAN), etc. - In this embodiment, applications may run on
hosts 204 to allowhosts 204 to configure, control, and manage any modular assembly robotic toys assembled fromassembly modules 202. In one example, programming applications running onhosts 204 may facilitate users to build programs or select existing demo programs and download the programs intocontrol module 302. In another example, control applications running onhosts 204 may allow users to real-time control the operations of modular assembly robotic toys by transmitting control instructions to controlmodule 302 at runtime. In still another example, hosts 204 may obtain updated firmware, for example, fromserver 206, encrypt the firmware, and manage the downloading of the encrypted firmware to controlmodule 302. In yet another example, hosts 204 may receive and handle data from modular assembly robotic toys, e.g., fromcontrol module 302 or analyzingmodule 308. For example, status (e.g., registration or online/offline status) of eachassembly module 202 may be displayed onhosts 204 based on status messages received fromcontrol module 302; sensor signals and/or analyzing results of the sensors signals may be received fromcontrol module 302 and/or analyzingmodules 308 and processed byhosts 204 or forwarded toserver 206 for further processing. In this embodiment,multiple hosts 204 may be used to distribute the tasks. For example, host 204-2 may be a laptop or desktop computer on which the programming application and firmware update application run. Host 204-2 may be connected to controlmodule 302 via USB to transmit programming instructions or updated firmware to controlmodule 302 prior to the operation of the modular assembly robotic toy. Host 204-1 may be a mobile or portable device on which the control application runs. Host 204-1 may be connected to controlmodule 302 via Bluetooth to transmit real-time control instructions and connected to analyzingmodules 308 via WiFi to receive sensor signals and/or analyzing results from analyzingmodules 308 at runtime. - In this embodiment,
server 206 may run on the backend ofsystem 200 to provide various services tosystem 200 via different applications running thereon. For example, an artificial intelligence application may be used byserver 206 to analyze any sensor signals or analyzing results obtained from analyzing module 308 (e.g., being forwarded by hosts 204) to performance tasks such as voice recognition or image recognition. In another example, a user management application may be used byserver 206 to manage users' information and store usage data related to the modular assembly robotic toys. In still another example, a firmware management application may be used byserver 206 to store and manage firmware update data. As described above,server 206 may communicate withhosts 204 via theInternet 208 or any other networks to provide the services described above. It is to be appreciated that in some embodiments,server 206 may communicate with someassembly modules 202 directly, e.g., analyzingmodules 308 for receiving the sensor signals and/or analyzing results. -
FIG. 4 is a schematic diagram illustrating an example of abus 400 connectingmultiple assembly modules 202 in accordance with an embodiment. In this embodiment, upon a number ofassembly modules 202 being mechanically and electrically connected one another via connectors to form a modular assembly robotic toy,bus 400 is formed for transmitting power signals and data signals betweenassembly modules 202. As shown inFIG. 4 ,bus 400 may include two power lines—power supply (VCC) 402 and ground (GND) 404 for transmitting the power signals, e.g., a voltage betweenVCC 402 andGND 404.Bus 400 may also include two data lines—Data-H 406 and Data-L 408 for transmitting the data signals, for example, differential data signals. Eachassembly module 202 may be electrically connected tobus 400 in parallel. For example, each connection interface (I/F) 410 ofassembly module 202 may include four contacts, each of which can electrically connect to one of the four lines ofbus 400. For some assembly modules 202-1 and 202-2 that include a single connection interface 410-1 and 410-2, e.g.,control modules 302,sensor modules 304, oractuator modules 306, assembly modules 202-1 and 202-2 are electrically connected tobus 400 via single connection interface 410-1 and 410-2, respectively. For some assembly modules 202-3 and 202-4 that include multiple connection interfaces 410-3, 410-4, 410-5, and 410-6, e.g.,power modules 310 orconnector modules 312, each connection interface 410-3, 410-4, 410-5, and 410-6 of assembly modules 202-3 and 202-4 is individually and separately electrically connected tobus 400. As described above, power signals may be transmitted frompower module 310 to eachassembly module 202 viaVCC 402 andGND 404 power lines ofbus 400. Data signals may include operation instructions transmitted fromcontrol module 302 to eachassembly module 202 and module data (e.g., sensor signals or status information) transmitted from eachassembly module 202 to controlmodule 302 via Data-H 406 and Data-L 408 data lines ofbus 400. - In this embodiment,
bus 400 may be a controlled area network (CAN) bus adopted by the International Organization of Standardization (ISO), for example, in ISO11898 and ISO11519 standards. According to the CAN bus standards, Data-H 406 and Data-L 408 may be CAN-H and CAN-L data lines, which transmit data signals by voltage differential therebetween. Power signals may be transmitted viaVCC 402 andGND 404 according to the CAN bus standards as well. Data transmission and identifier (ID) allocation protocols applied bybus 400 may follow the CAN bus standards in general. It is to be appreciated thatbus 400 is not limited to CAN bus and can be any suitable bus for transmitting power and data signals betweenassembly modules 202 that are electrically connected in parallel, such as but not limited to, USB, RS-485 bus, serial ATA (SATA) bus, low-voltage differential signaling (LVDS) bus, etc. -
FIG. 5 is a depiction of an example of transmission of host instructions fromhosts 204 to controlmodule 302 in accordance with an embodiment. In this embodiment,control module 302 includes one ormore processors 502 on which anoperating system 504 can be implemented.Operating system 504 may be any suitable operating system such as embedded operating systems or real-time operating systems (RTOS), e.g., embedded Linux, iOS, NetBSD, Inferno, OpenWrt, Windows Embedded, etc. In this embodiment, avirtual machine 506 may run onoperating system 504, such as Java virtual machine (JVM), Android Runtime (ART), Lua virtual machine, to name a few.Virtual machine 506 can provide the ability to executeprogramming instructions 508 in a platform-independent environment. - In this embodiment, a programming application may run on host 204-2. Programming
instructions 508 generated by the programming application, either via an integrated programming environment (IDE) or by manual editing on host 204-2, may be transmitted from host 204-2 tovirtual machine 506 ofcontrol module 302 directly. For example, programminginstructions 508 may be Lua scripts. In addition to programminginstructions 508, host instructions in this embodiment may also includecontrol instructions 510 that are generated by a control application running on host 204-1 at runtime.Control instructions 510 may be transmitted from host 204-1 tooperating system 504 directly, e.g., using Bluetooth low energy (BLE, a.k.a. Bluetooth Smart) technologies. In this embodiment, whenvirtual machine 506 is not executing anyprogramming instructions 508 received from host 204-2,operating system 504 may generate operation instructions to control operations ofcorresponding assembly modules 202 based oncontrol instructions 510 received from host 204-1 at runtime. Whenvirtual machine 506 is executingprogramming instructions 508, e.g., Lua scripts,operating system 504 may handlecontrol instructions 510 and control privilege tovirtual machine 506. In this case,operating system 504 may work as an interface betweenvirtual machine 506 and any other parts of the modular assembly robotic toy, e.g.,assembly modules 202 and hosts 204, whilevirtual machine 506 is taking control of executingprogramming instructions 508 and controlinstructions 510. -
FIG. 6 is a block diagram illustrating an example of anassembly module 202 in accordance with an embodiment. In this embodiment,assembly module 202 includes aprocessor 602, amemory 604, one or more connection interfaces 606, one ormore sensors 608, one ormore actuators 610, acommunication unit 612, input/output (I/O) 614, and apersistent storage 616. As shown inFIG. 6 ,processor 602 may be operatively coupled tomemory 604, connection interfaces 606,sensors 608,actuators 610,communication unit 612, I/O 614, andpersistent storage 616.Assembly module 202 may communicate withhosts 204 viacommunication unit 612 and communicate with anyother assembly modules 202 electrically connected tobus 400 via connection interfaces 606. - In this embodiment,
processor 602 may include one or more processing units such as microcontroller units (MCUs), microprocessors, graphical processing units (GPUs), memory controllers, etc.Memory 604 may be any program memory (e.g., RAM, flash) or read-only memory (ROM) that is integrated with MCUs in a single integrated circuit or separate from the processing units.Processor 602 may control operations of each component ofassembly module 202 by executing instructions stored inmemory 604. In this embodiment, eachconnection interface 606 may receive power signals frombus 400 and transmit and receive data signals viabus 400 in accordance with the instructions fromprocessor 602.Processor 602 may further receive data signals fromconnection interface 606 and transmit data signals tobus 400 viaconnection interface 606. Power signals may be transmitted viaconnection interface 606 toprocessor 602 to supply power. In some embodiments, power signals may be transmitted viaconnection interface 606 to other components ofassembly module 202 to supply power. In this embodiment,communication unit 612 may be any wired or wireless communication unit, such as USB, IEEE 1394, Thunderbolt, WiFi, Bluetooth, ZigBee, or NFC units that can communicate with the corresponding types of communication units ofhosts 204. As described above, host instructions transmitted fromhosts 204 may be received bycommunication unit 612 and forwarded toprocessor 602. In some embodiments,communication unit 612 may include a modem or any network adaptors for communicating withserver 206 via theInternet 208 or any other networks as described above. Data received fromserver 206 may be forwarded toprocessor 602 as well bycommunication unit 612. - In this embodiment,
sensors 608 may include any types of sensors such as light sensors, motion sensors, temperature sensors, sound sensors, electrical sensors, magnetic sensors, chemical sensors, biosensors, to name a few. Regardless of the specific type,sensors 608 can obtain sensor signals and transmit the sensor signals toprocessor 602.Processor 602 may either analyzes the sensor signals and then transmits the analyzing results tohosts 204 viabus 400 or transmits the raw sensor signals directly tohosts 204 viacommunication unit 612. In this embodiment,actuators 610 may include any types of actuators, such as hydraulic actuators, pneumatic actuators, electric actuators, thermal actuators, magnetic actuators, mechanical actuators, to name a few. Regardless of the specific type,actuators 610 may perform physical actions according to the instructions provided by processor 602 (and power signals provided viabus 400 andconnection interface 606 in some cases). - In this embodiment, I/
O 614 may include any suitable I/O devices, such as display screens, lights, keypads, buttons, etc. Users of a modular assembly robotic toy may interact withassembly module 202 directly via I/O 614. For example, status information (e.g., power level, operating status) ofassembly module 202 or the entire modular assembly robotic toy may be presented via the display screen or the lights. Users may interrupt operation ofassembly module 202 using the keypads or buttons. In this embodiment,persistent storage 616 may be any data storage device that retains data afterassembly module 202 being powered-off, such as hard disk drivers and solid-state drivers (e.g., flash drivers). Data stored inpersistent storage 616 may be communicated withmemory 604, such as programming instructions (e.g., source code or intermediate codes of demo programs), operation logs, usage data backup, firmware, etc. It is to be appreciated that additional components may be included inassembly module 202 as well in some embodiments. It is also to be appreciated that depending on the specific type ofassembly module 202, certain components illustrated inFIG. 6 may not be necessary as described below with respect toFIGS. 7-11 . -
FIG. 7 is a block diagram illustrating an example of acontrol module 302 in accordance with an embodiment.Control module 302 in this embodiment includes aprocessor 702, amemory 704, one or more connection interfaces 706, one ormore sensors 708, acommunication unit 712, I/O 714, and apersistent storage 716. As shown inFIG. 7 ,processor 702 may be operatively coupled tomemory 704, connection interfaces 706,sensors 708,communication unit 712, I/O 714, andpersistent storage 716. Each component inFIG. 7 may perform the same functions of corresponding component described above with respect toFIG. 6 and will not be repeated again in this embodiment. Additional or alternative features of some components incontrol module 302 will be described below in detail. For example, in some embodiments,persistent storage 716 may store programming instructions (e.g., source code or intermediate codes of demo programs) and operation logs and usage data backup of not only controlmodule 302, but alsoother assembly modules 202 of the modular assembly robotic toy. In some embodiments,sensors 708 may include inertial sensors, such as gyroscopes and accelerometers. - In addition to controlling operations of components in
control module 302,processor 702 ofcontrol module 302 may control operations of anyother assembly modules 202 of the modular assembly robotic toy. As shown inFIG. 7 , host instructions may be provided byhosts 204 toprocessor 702 viacommunication unit 712. As described above, programming instructions may be received prior tocontrol module 302 is on operation and then executed byvirtual machine 506 running onoperating system 504 implemented onprocessor 702; control instructions, on the other hand, may be received at runtime whencontrol module 302 is on operation and executed by operatingsystem 504 directly. Based on the received host instructions,processor 702 may generate operation instructions for controlling eachassembly module 202 viabus 400 andconnection interface 706.Processor 702 may transmit operation instructions, as parts of data signals, tocorresponding assembly modules 202 viaconnection interface 706 andbus 400. Moreover,processor 702 may communicate withassembly modules 202 viaconnection interface 706 andbus 400 to detect and configure any newly-added assembly modules. In some embodiments, the updated firmware may be provided byserver 206 tohosts 204 via the Internet and then downloaded tomemory 704 and/orpersistent storage 716 viacommunication unit 712. On the other hand, module data (e.g., sensor signals or status information) received fromother assembly modules 202 orcontrol module 302 itself may be transmitted bycontrol module 302 tohosts 204 viacommunication unit 712 as well. In some embodiments,communication unit 712 may communicate withserver 206 via the Internet or any other networks directly without passing throughhosts 204. - In this embodiment, I/
O 714 may further include a physical switch configured to, in response to an input from a user, interrupt or resume the obtaining of at least some of the host instructions fromhosts 204 or the generation of the operation instructions byprocessor 702. In other words, execution of host instructions byprocessor 702 may be partially controlled by physical operation of the user viacontrol module 302. For example, the physical switch may triggerprocessor 702 to execute the host instructions, for example, programming instructions (e.g., Lua scripts) byvirtual machine 506. In some embodiments,control module 302 may further include a power switch for turning on and offcontrol module 302 and/or the modular assembly robotic toy. The power switch may be different from the physical switch described above, which is used for controlling execution of host instructions byprocessor 702. -
FIG. 8 is a block diagram illustrating an example of ananalyzing module 308 in accordance with an embodiment. Analyzingmodule 308 in this embodiment includes aprocessor 802, amemory 804, one or more connection interfaces 806, one ormore sensors 808, acommunication unit 812, and apersistent storage 816. As shown inFIG. 8 ,processor 802 may be operatively coupled tomemory 804, connection interfaces 806,sensors 808,communication unit 812, andpersistent storage 816. Each component inFIG. 8 may perform the same functions of corresponding component described above with respect toFIG. 6 and will not be repeated again in this embodiment. Additional or alternative features of some components in analyzingmodule 308 will be described below in detail. For example, in some embodiments,persistent storage 816 may further store sensors signals obtained bysensors 808 and analyzing results of the signal signals generated byprocessor 802. - In addition to controlling operations of components in analyzing
module 308,processor 802 of analyzingmodule 308 may be configured to analyze the sensor signals obtained bysensors 808 to generate analyzing results. In one example, analyzingmodule 308 may bevoice recognition module 324, andsensors 808 may include a microphone or any sound sensors configured to obtain a voice signal.Processor 802 then may analyze the voice signal to generate a voice recognition result by implementing any suitable voice or speech recognition engines. In another example, analyzingmodule 308 may beimage recognition module 326, andsensors 808 may include a camera or any image sensors configured to obtain an image signal.Processor 802 then may analyze the image signal to generate an image recognition result by implementing any suitable image or video recognition engines. In some embodiments, the recognition engines may be stored inpersistent storage 816 and read intomemory 804 at runtime for analyzing the corresponding sensor signals byprocessor 802. It is to be appreciated that analyzingmodule 308 can be of other types by including suitable types ofsensors 808 and implementing suitable analyzing engines byprocessor 802. - In this embodiment, the sensor signals obtained by
sensors 808 and/or the analyzing results generated byprocessor 802 may be transmitted to host 204 viacommunication unit 812 without passing throughcontrol module 302. Host 204 after receiving the sensor signals or the analyzing results, may further process the sensor signals or the analyzing results to generate further analyzing results becausehost 204 may have a superior computation capability than analyzingmodule 308 for performing more complex analysis. In some embodiments, host 204 may transmit the sensor signals or the analyzing results toserver 206 via theInternet 208 or any other networks so that more powerful processors and/or analyzing engines onserver 206 can perform even more complex analysis of the sensor signals or the analyzing results. In some embodiments,communication unit 812 may include a modem or any suitable network adaptors for transmitting the sensor signals or the analyzing results toserver 206 directly without passing throughhost 204. - Based on the analyzing results from analyzing
module 308,host 204, and/orserver 206, host 204 may generate operation instructions and provide the operation instructions toprocessor 802 viacommunication unit 812. In some embodiments, the generated operation instructions may be provided byhost 204 to controlmodule 302 as a part of host instructions, andcontrol module 302 then may transmit the operation instructions to analyzingmodule 308 orother assembly module 202 viabus 400. In one example, forvoice recognition module 324, voice commands from a user to control the operations of the modular assembly robotic toy may be recognized and understood byhost 204 in conjunction withvoice recognition module 324 and/orserver 206 and applied tocorresponding assembly modules 202. In another example, forimage recognition module 326, a target on the video taken by the camera ofimage recognition module 326 may be recognized and tracked byhost 204 in conjunction withimage recognition module 326 and/orserver 206 so thathost 204 can instructcorresponding actuator modules 306 to follow the moving path of the target and instructimage recognition module 326 to keep tracking of the target. - In this embodiment, analyzing
module 308 may be considered as a “smart” module because analyzingmodule 308 can independently perform sensor signal analysis tasks and/or independently communicate the analyzing results withhost 204 orserver 206 without the intervention ofcontrol module 302. In some embodiments, analyzingmodule 308 may determine whether to analyze the obtained sensor signals byprocessor 802 or transmit the sensor signals tohosts 204 and/orserver 206 for analysis. In one example,processor 802 may make the determination based on the complexity of the analysis tasks and perform relatively simple analysis tasks and handle over the relatively complex analysis tasks tohosts 204 and/orserver 206. In another example,processor 802 may make the determination based on whether thecommunication unit 812 is capable of communicating withhosts 204 and/orserver 206. For example, if the communication connection is established, then the analysis tasks may be handled over tohosts 204 and/orserver 206. Otherwise, analyzingmodule 308 may perform the analysis tasks locally byprocessor 802. It is to be appreciated that pre-processing may be performed on the obtained raw sensor signals byprocessor 802 even when the analysis tasks are to be performed byhosts 204 and/orserver 206. -
FIG. 9 is a block diagram illustrating an example ofsensor module 304 in accordance with an embodiment.Sensor module 304 in this embodiment includes aprocessor 902, amemory 904, one or more connection interfaces 906, one ormore sensors 908, and apersistent storage 916. As shown inFIG. 9 ,processor 902 may be operatively coupled tomemory 904, connection interfaces 906,sensors 908, andpersistent storage 916. Each component inFIG. 9 may perform the same functions of corresponding component described above with respect toFIG. 6 and will not be repeated again in this embodiment. Additional or alternative features of some components insensor module 304 will be described below in detail. For example, in some embodiments,persistent storage 916 may further store sensors signals obtained bysensors 908. - In one example,
sensor module 304 may beinfrared sensor module 314, andsensors 908 may include an infrared sensor. In some embodiments, the infrared sensor may include an infrared transmitter configured to emit a first infrared beam to an object and an infrared receiver configured to obtain a second infrared beam reflected from the object. Sensor signals may be obtained byinfrared sensor module 314 based on the first and/or second infrared beams. In some embodiments, the infrared transmitter may be a light emitting diode (LED) that can produce light in the infrared spectrum, and the infrared receiver can detect the presence, motion, or brightness of the object based on the intensity of the second beam. In some embodiments, the infrared sensor may be a passive infrared sensor (PIR) that measures infrared light radiating from objects in its field of view, which can be used for detecting the presence or motion of the objects. In this embodiment,processor 902 may control operation of the infrared sensor based on operation instructions received fromcontrol module 302 viabus 400. For example,processor 902 may control the infrared sensor to work in the active mode (reflection mode) or in the passive mode. In the active mode,processor 902 may further control the infrared sensor to repeatedly emit the infrared beam or emit a single infrared beam. - In another example,
sensor module 304 may be acolor recognition module 316, andsensors 908 may include a light sensor configured to obtain a light signal from an object. The light sensor may be any suitable sensor that can detect the current ambient light level (e.g., RGB level and light intensity level), such as photoresistors, photodiodes, and phototransistors. Additional optical and electrical components may be included in the light sensor, such as color filters, input multiplexor, and light sources (e.g., RGB LEDs). In some embodiments, light signals obtained by the light sensor may be provided toprocessor 902 to determine the color of the object based on the light signals. In this embodiment,processor 902 may also control operation of the light sensor based on operation instructions received fromcontrol module 302 viabus 400. For example,processor 902 may control the light sensor to work in the ambient light intensity detection mode or in the R, G. or B color detection mode.Processor 902 may further control the light sources to repeatedly emit a light beam in a desired color or emit a single light beam in a desired color. - In this embodiment, the sensor signals, e.g., infrared signals, ambient light intensity signals, or RGB signals, may be formatted by
processor 902 according to the data transmission and ID allocation protocols ofbus 400 and packed into messages with IDs. The messages may be transmitted to controlmodule 302 fromprocessor 902 viabus 400. In some embodiments, data related to sensor signals may be stored inpersistent storage 916 as backups. It is to be appreciated thatsensor module 304 can be of any other types by including suitable types ofsensors 908. -
FIG. 10 is a block diagram illustrating an example ofactuator module 306 in accordance with an embodiment.Actuator module 306 in this embodiment includes aprocessor 1002, amemory 1004, one ormore connection interfaces 1006, one ormore actuators 1010, and apersistent storage 1016. As shown inFIG. 10 ,processor 1002 may be operatively coupled tomemory 1004,connection interfaces 1006, actuators 1008, andpersistent storage 1016. Each component inFIG. 10 may perform the same functions of corresponding component described above with respect toFIG. 6 and will not be repeated again in this embodiment. Additional or alternative features of some components inactuator module 306 will be described below in detail. - In one example,
actuator module 306 may bemovement module 318 that is substantially ball-shaped, andactuators 1010 may include a motor configured to rotate the entirety ofmovement module 318. For example,movement module 318 may be wheel module 106 illustrated inFIGS. 1A-1C , which includes a track around a great circle of sphere to increase the friction. The motor may be any electric motors, such as a servomotor, which can rotate the entirety ofmovement module 318 along an axis of rotation. In some embodiments, additional accessories may be attached tomovement module 318, such as wheels or adaptors through which any physical structures can be plugged to the modular assembly robotic toy and rotate along withmovement module 318. For example, in addition to moving the modular assembly robotic toy itself,movement module 318 can cause any piece of toys that is attached thereto via suitable adaptors to rotate as well. It is to be appreciated that the motor is not limited to a rotary motor for driving the angular movement ofmovement module 318. In some embodiments, the motor may be a linear motor for driving the linear movement ofmovement module 318. In this embodiment,processor 1002 may control operation of the motor based on operation instructions received fromcontrol module 302 viabus 400. For example,processor 1002 may control the movement speed, direction, duration, and break ofmovement module 318. - In another example,
actuator module 306 may be aflight actuation module 320, andactuators 1010 may include a motor configured to drive a set of propellers. The motor may be any electric motors, such as a servomotor, which can rotate the set of propellers along an axis of rotation and thus, cause the modular assembly robotic toy to fly in the air. In this embodiment,processor 1002 may control operation of the motor based on operation instructions received fromcontrol module 302 viabus 400. For example,processor 1002 may control the flight speed, direction, altitude, pose, duration, and break offlight actuation module 320. In some embodiments,sensors 708 ofcontrol module 302 may obtain sensor signals indicative of attitude of the modular assembly robotic toy in the air at runtime, andprocessor 702 ofcontrol module 302 may generate operation instructions forflight actuation module 320 based on the sensor signals to adjust the flight attitude. It is to be appreciated thatflight actuation module 320 may be turned into a water actuation module by driving a suitable set of propellers in the water. - In still another example,
actuator module 306 may be ajoint module 322, andactuators 1010 may include a steering gear configured to rotatejoint module 322 from 0 to 180 degrees in the radial direction (e.g., as a radial joint module) or rotatejoint module 322 from −90 to +90 degrees in the axial direction (e.g., as an axial joint module). In this embodiment,processor 1002 may control operation of the steering gear based on operation instructions received fromcontrol module 302 viabus 400. For example,processor 1002 may control the rotation speed, direction, angle, duration, and break ofjoint module 322. - In this embodiment, the operation instructions for controlling
actuators 1010 may be formatted byprocessor 702 ofcontrol module 302 according to the data transmission and ID allocation protocols ofbus 400 and packed into messages with IDs. The messages may be transmitted fromcontrol module 302 toprocessor 1002 ofactuator module 306 viabus 400. In some embodiments, data related to operation status ofactuators 1010 may be collected byprocessor 1002 and transmitted to controlmodule 302 in suitable message formats. It is to be appreciated thatactuator module 306 can be of other types by including suitable types ofactuators 1010. -
FIG. 11 is a block diagram illustrating an example of apower module 310 in accordance with an embodiment.Power module 310 in this embodiment includes aprocessor 1102, amemory 1104, one ormore connection interfaces 1106, apersistent storage 1116, abattery 1118, and a charginginterface 1120. As shown inFIG. 11 ,processor 1102 may be operatively coupled tomemory 1104,connection interfaces 1106,persistent storage 1116, andbattery 1118. Each component inFIG. 11 may perform the same functions of corresponding component described above with respect toFIG. 6 and will not be repeated again in this embodiment. Additional or alternative features of some components inpower module 310 will be described below in detail. For example, in some embodiments,persistent storage 1116 may further store battery-related information, e.g., battery health, charging condition, remaining lifetime, etc. - In this embodiment,
battery 1118 may be any suitable batteries, including primary batteries such as lithium, alkaline, zinc, or magnesium batteries, and secondary (rechargeable batteries) such as lithium ion, NiCd, lead-acid, NiMH, NiZn, or AgZn batteries. In some embodiments, a number ofbatteries 1118 may form a battery pack. In this embodiment, operation ofbattery 1118, such as charging/discharging and maintenance, may be controlled byprocessor 1102 in conjunction with any suitable battery management circuit (not shown) based on operation instructions received fromcontrol module 302. The status ofbattery 1118, e.g., battery health, charging condition, and remaining lifetime, may be monitored byprocessor 1102 in conjunction with any suitable battery management circuit (not shown) as well. In some embodiments, power signals frombattery 1118 may be provided topower module 310 andother assembly modules 202 viaconnection interface 1106 andbus 400. - In this embodiment, charging
interface 1120 is operatively coupled tobattery 1118 and may be any suitable interface/connector for chargingbattery 1118, including wired charging interfaces, such as USB or DC jack, and wireless (induction) charging interfaces, such as Magne Charge, Qi, Rezence, or Power Matters Alliance (PMA). It is to be appreciated that in some embodiments,power module 310 may include additional or alternative power supplies, such as solar panels, AC-to-DC supplies, AC adapters, and generators. In some embodiments,power module 310 may further include a power switch for a user to turn on and off the power of the modular assembly robotic toy and an indicator showing the current charging status and/or remaining power level ofbattery 1118. In this embodiment, operation ofbattery 1118 may be controlled byprocessor 1102 based on operation instructions received fromcontrol module 302 viabus 400. -
FIG. 12 is a block diagram illustrating an example ofhosts 204 and aserver 206 in accordance with an embodiment. In this embodiment, auser 1202 of a modular assembly robotic toy may assemble the modular assembly robotic toy using a number ofassembly modules 202 and customize the functions and behaviors of the modular assembly robotic toy using hosts 204-1 and 204-2. In this embodiment, host 204-1 includes a processor 1204-1, a memory 1206-1, communication units 1208-1 and 1210-1, and I/O 1212-1. One or more applications, including acontrol application 1214, may be loaded into memory 1206-1 and executed by processor 1204-1. As will be described below in detail, a graphical user interface (GUI) ofcontrol application 1214 may be generated by processor 1204-1 and rendered on I/O 1212-1 (e.g., a display screen) for facilitatinguser 1202 to interact withcontrol application 1214 via I/O 1212-1. In some embodiments,control application 1214 may receive input fromuser 1202 and generate a set of host instructions (e.g., control instructions) based on the user input at runtime whencontrol module 302 is on operation. The set of host instructions may be transmitted to controlmodule 302 via communication unit 1210-1. The user input may include, for example, a command received from the GUI rendered by host 204-1, a motion or gestured detected by one or more sensors on host 204-1, and a voice detected by a microphone on host 204-1. In other words,user 1202 can control the modular assembly robotic toy usingcontrol application 1214 through any suitable human-machine interfaces (HMIs). - Similarly, in this embodiment, host 204-2 includes a processor 1204-2, a memory 1206-2, communication units 1208-2 and 1210-2, and I/O 1212-2. Multiple applications, including a
programming application 1216 and afirmware update application 1218, may be loaded into memory 1206-2 and executed by processor 1204-2. As will be described below in detail, a GUI ofprogramming application 1216 may be generated by processor 1204-2 and rendered on I/O 1212-2 (e.g., a display screen) for facilitatinguser 1202 to interact withprogramming application 1216 via I/O 1212-2. In some embodiments,programming application 1216 may receive inputs fromuser 1202 and generate a set of host instructions (e.g., programming instructions) prior tocontrol module 302 is on operation. The set of host instructions may be transmitted to controlmodule 302 via communication unit 1210-2. The user inputs may include, for example, interactions with a graphical programming environment, e.g., programming by drag-and-drop of graphical representations of statement blocks. In some embodiments,user 1202 may select existing demo programs. In this embodiment,firmware update application 1218 may download firmware to be updated oncontrol module 302 fromserver 206 via communication unit 1208-2, encrypt the firmware, and transmit the encrypted firmware to controlmodule 302 via communication unit 1210-2. The firmware update status may be presented on the GUI offirmware update application 1218 to informuser 1202. - It is to be appreciated that additional or alternative applications may be loaded into memory 1206 and executed by processor 1204 of
hosts 204 for various configuration, control, and maintenance functions with respect to the modular assembly robotic toy. In one example, an analyzing application may be implemented to analyze sensor signals obtained bysensor modules 304 or analyzingmodules 308 to generate analyzing results, e.g., voice or image recognition results. In another example, an assembly module management application may be implemented to display a list ofassembly modules 202 that are currently registered (e.g., have been plugged into the modular assembly robotic toy), a list ofassembly modules 202 that are currently online (e.g., currently plugged into the modular assembly robotic toy and are on operation), and/or a list ofassembly modules 202 that are currently offline (e.g., currently de-coupled from the modular assembly robotic toy and are not on operation). - In this embodiment, communication units 1210 may communicate with
assembly modules 202, e.g.,control module 302, via wired or wireless communication, such as USB, WiFi, or Bluetooth. For example, control instructions may be transmitted by communication unit 1210-1 to controlmodule 302 in real-time via Bluetooth, and programming instructions may be transmitted by communication unit 1210-2 to controlmodule 302 via USB. Module data ofassembly modules 202 may be received by communication unit 1210-1 via Bluetooth as well in real-time or received by communication unit 1210-2 via USB after the operation ofcontrol module 302 is completed. In this embodiment, communication units 1208 may communicate withremote server 206 via the Internet. For example, sensor signals, analyzing results of sensor signals, user information, or usage data may be transmitted toserver 208 via the Internet by communication unit 1208. Further analyzing results of sensor signals, e.g., voice and image recognition results, updated firmware, user information, or usage data may be received fromserver 206 via the Internet by communication unit 1208. - In this embodiment,
server 206 includes aprocessor 1220, amemory 1222, and acommunication unit 1224. Multiple applications, including anartificial intelligence application 1226, auser management application 1228, and afirmware management application 1230, may be loaded intomemory 1222 and executed byprocessor 1220.Server 206 may communicate withhosts 204 via the Internet or any other networks bycommunication unit 1224, which may be, for example, a modem or any suitable network adaptors. - In this embodiment,
artificial intelligence application 1226 may implement any artificial intelligence algorithms, such as but not limited to, machine learning, natural language processing, search and optimization, logic programming and automated reasoning, probabilistic method, classifier and statistical learning method, neural network, and deep learning. As described above,artificial intelligence application 1226 may analyze the sensor signals or analyzing results of the sensor signals fromhosts 204 and/or analyzingmodules 308 using any suitable artificial intelligence approaches to generate analyzing results and provide the analyzing results tohosts 204 viacommunication unit 1224. For example, using any suitable artificial intelligence approach byartificial intelligence application 1226, voice or speech recognition may be performed on voice signals and image or video recognition may be performed on image signals. - In this embodiment,
user management application 1228 may store and organize any information related touser 1202, for example, user profile, demographics, accounts, activities, preferences, and interests. In some embodiments,user management application 1228 may perform user authentication to verify whetheruser 1202 is authorized to assemble and customize the modular assembly robotic toy. In some embodiments,user management application 1228 may facilitateuser 1202 to interact with other users of modular assembly robotic toys in a dedicated online community or any social media. For example, teachers may assist students to assemble and customize modular assembly robotic toys remotely viauser management application 1228 onserver 206. In this embodiment,firmware management application 1230 may obtain, store, and distribute firmware to be updated oncontrol modules 302 of modular assembly robotic toys. Firmware may be dynamically or periodically updated to fix bugs, add new functions, and improve hardware performance.Firmware management application 1230 may organize firmware by versions (reflecting the recency of firmware) or categories (for different structures, forms, and functions of modular assembly robotic toys). In some embodiments, firmware updates may be notified and pushed tohosts 204 once they become available or periodically according to an update schedule. -
FIG. 13 is a perspective view of an example of a modular assembly unmanned aerial vehicle (UAV)robotic toy 1300 includingmultiple assembly modules 1302, 1304, and 1306 and connectors 1308 in accordance with an embodiment. As described above, modular assembly robotic toys may be assembled and customized to achieve a wide variety of structures, forms, and functions, for example, modular assemblyrobotic toy 100 illustrated inFIGS. 1A-1C . As another example, modular assembly UAVrobotic toy 1300 includes acontrol module 1302 and four flight actuation modules 1304-1, 1304-2, 1304-3, and 1304-4. Each flight actuation module 1304 may be electrically and mechanically connected to controlmodule 1302 via a respective connector 1308 and connection interface 1310 ofcontrol module 1302. A set of propellers 1306 may be attached to each flight actuation module 1304 and driven by a motor in a respective flight actuation module 1304.Control module 1302 and each flight actuation module 1304 may include spare connection interfaces 1310 to be used to connect additional assembly modules, accessories, or any other physical structures. In one example, a payload may be attached to the bottom ofcontrol module 1302, for example, a gimbal, a camera, or an additional battery pack. In this embodiment, modular assembly UAVrobotic toy 1300 may not include a separate power module. Instead, the power module may be integrated intocontrol module 1302 and/or flight actuation modules 1304. In some embodiments, a separate power module may be plugged into modular assembly UAVrobotic toy 1300. - Structures and functions of
control module 1302 and flight actuation modules 1304 may be the same ascontrol module 302 andflight actuation modules 320, respectively, as described above in detail. As to connectors 1308, although the shape is different from that of connectors 110 in order to adapt the aerodynamic shape of a UAV, each connector 1308 still includes two open ends adapted to fitting into connection interfaces 1310 of two assembly modules, respectively, and to mechanically and electrically connect the two assembly modules as described above with respect to connectors 110. It is to be appreciated that in some embodiments, different connectors may be used to mechanically and electrically connect two assembly modules of modular assembly UAVrobotic toy 1300, e.g.,control module 1302 and flight actuation module 1304. For example, one end of the connector may be integrated with an assembly module and thus, the connector includes one open end adapted to fitting into connection interface 1310 of the other assembly module. In other words, the connector may be part of an assembly module and can be attached to and detached from another assembly module, as opposed to a separate component that can be detached from both assembly modules. In some embodiments, the connector may be mechanically connected to connection interface 1310 via any suitable means, such as magnets. -
FIG. 14A-14B are perspective views of an example of a connection structure in accordance with an embodiment. In this embodiment, as shown inFIG. 14A , the connection structure includes aconnector 1402, a first connection interface 1404-1 on a first assembly module 1406-1, and a second connection interface 1404-2 on a second assembly module 1406-2.Connector 1402 may be the same as connector 110 described above with respect toFIGS. 1A-1C , and each connection interface 1404 may be the same as connection interfaces described above with respect toFIGS. 1A-1C as well. As shown inFIG. 14A , connection interfaces 1404-1 and 1404-2 are parts of a color recognition module and a connector module, respectively. However, it is to be appreciated that connection interfaces 1404 can be parts of anyassembly modules 202 described herein. As described above, the number of connection interfaces 1404 of anassembly module 202 is not limited. For example, first assembly module 1406-1, such as the color recognition module shown inFIG. 14A , may include a single connection interface 1404-1, while second assembly module 1406-2, such as the connector module shown inFIG. 14A , may include multiple connection interfaces 1404-2. - As shown in
FIG. 14B , the two ends ofconnector 1402 are plugged into connection interfaces 1404-1 and 1404-2, respectively, so as to mechanically and electrically connect first and second assembly modules 1406-1 and 1406-2. As will be described below in detail,connector 1402 may be plugged into connection interfaces 1404-1 and 1404-2 at multiple orientations relative to one another. In some embodiments,connector 1402 may be plugged into connection interfaces 1404-1 and 1404-2 at any orientations relative to one another. Thus, a user may no longer need to alignconnector 1402 with each connection interface 1404 at a specific orientation to ensure mechanical and electrical connectivity. In this embodiment, spare connection interfaces 1404-2 on second assembly module 1406-2 may be used for connecting additional assembly modules to second assembly module 1406-2 viaadditional connectors 1402. In this embodiment,connector 1402 is detachable from each connection interface 1404 after being plugged into connection interfaces 1404-1 and 1404-2. The connection structure disclosed herein thus provides an easy way to assembleassembly modules 202 to build modular assembly robotic toys and dissemble the modular assembly robotic toys intoseparate assembly modules 202. -
FIG. 15 is an exploded view of an example of a connection structure in accordance with an embodiment. In this embodiment, the connection structure includesconnector 1402 and a connection interface having acasing 1502 and acircuit board 1504. It is to be appreciated that although one connection interface is illustrated inFIG. 15 , another connection interface having the same structure as the connection interface shown inFIG. 15 can be part of the connection structure. -
FIG. 16A is a perspective view of an example ofconnector 1402 in accordance with an embodiment. In this embodiment,connector 1402 includes acasing 1506 having two open ends 1508-1 and 1508-2, lock mechanisms including snaps 1510-1 and 1510-2, protrusions 1512-1 and 1512-2, and recesses 1514-1 and 1514-2, and a raised annular 1516. Each open end 1508 may be adapted to fitting into the connection interfaces 1404-1 and 1404-2. In this embodiment,casing 1506 is in a substantially cylindrical shape and includes two symmetric portions with respect to raised annular 1516.Casing 1506 may be made of any suitable materials, such as plastics. An inner space (not shown) is formed insidecasing 1506 between two open ends 1508-1 and 1508-2. In this embodiment,connector 1402 further includes fourpins 1518 arranged and fixed in the inner space ofcasing 1506. -
FIG. 16B is a perspective view of an example ofpin 1518 of connector inFIG. 16A in accordance with an embodiment. In this embodiment, eachpin 1518 includes two ends 1602-1 and 1602-2 and abody 1604. A spring (not shown) may be disposed in the inner space ofbody 1604 and connected between two ends 1602-1 and 1602-2. Each end 1602 ofpin 1518 thus can move up and down because of the resilience of the spring. Eachpin 1518, including ends 1602,body 1604, and spring, may be made of any suitable electrically conductive materials, such as copper or aluminum. Once each end 1602 ofpin 1518 is in contact with a surface, e.g., a contact, end 1602 is pressed toward the surface by the spring to maintain reliable electrical connectivity. Two ends 1602-1 and 1602-1 ofpin 1518 are exposed by open ends 1508-1 and 1508-2 ofcasing 1506, respectively. Eachpin 1518 is in parallel with one another and in parallel with the central axis ofcasing 1506.Pins 1518 provide electrical connections between two connection interfaces whenconnector 1402 is plugged into the two connection interfaces. It is to be appreciated that the number ofpins 1518 in this embodiment corresponds to the number of lines ofbus 400 and thus, can be different in other examples. As shown inFIGS. 15 and 16A , in this embodiment, fourpins 1518 include a center pin arranged along the central axis ofcasing 1506 and three peripheral pins arranged at concentric rings relative to the central axis ofcasing 1506. - In this embodiment, lock mechanisms provide mechanical connection and stability between the two connection interfaces when
connector 1402 is plugged into the two connection interfaces. Snaps 1510-1 and 1510-2 are disposed on annular edges at open ends 1508-1 and 1508-2 ofcasing 1506, respectively. As shown inFIGS. 15 and 16A , snaps 1510 at each open end 1508 may be equally spaced apart by recesses 1514, which are formed oncasing 1506. Protrusions 1512-1 and 1512-2 are disposed on the two symmetric portions of the outer surface ofcasing 1506 separated by raised annular 1516, respectively. As shown inFIGS. 15 and 16A , protrusions 1512 on each portion of the outer surface ofcasing 1506 may be equally spaced apart by recesses 1514 as well. It is to be appreciated that in some embodiments, lock mechanisms may include one or some of, but not all of, snaps 1510, protrusions 1512, and recesses 1514. In some embodiments, lock mechanisms other than snaps 1510, protrusions 1512, and recess 1514 may be formed inconnector 1402. - Referring now to
FIGS. 15 and 18 , in this embodiment, casing 1502 of the connection interface includes acover 1520, ahole 1522, lockmechanisms including recesses 1524,protrusions 1526, and a lower annular edge (not shown), and an upperannular edge 1528.Casing 1502 may be made of any suitable materials, such as plastics. In this embodiment,hole 1522 ofcasing 1502 is in a substantially cylindrical shape that fits the substantially cylindrical shape ofconnector 1402. Lock mechanisms provide mechanically connection and stability between the connection interface andconnector 1402 when one end ofconnector 1402 is plugged into the connection interface. The lower annular edge and upperannular edge 1528 are disposed at two ends ofhole 1522 ofcasing 1502, respectively.Recesses 1524 are formed incasing 1502. As shown inFIGS. 15 and 18 ,recesses 1524 may be equally spaced apart from one another. The number ofrecesses 1524 is the same as the number of protrusions 1512-1 on one portion of the outer surface ofcasing 1506.Protrusions 1526 are disposed on the inner surface ofcasing 1502. As shown inFIGS. 15 and 18 ,protrusions 1526 may be equally spaced apart byrecesses 1524. The number ofprotrusions 1526 is the same as the number of recesses 1514-1 in one portion ofcasing 1506. It is to be appreciated that in some embodiments, lock mechanisms may include one or some of, but not all of, recesses 1524,protrusions 1526, and the lower annular edge. In some embodiments, lock mechanisms other thanrecesses 1524,protrusions 1526, and the lower annular edge may be formed in the connection interface. - As shown in
FIG. 18 , in this embodiment, guidingholes 1802 are formed on a panel that is arranged at the lower end ofhole 1522 ofcasing 1502 and connected to the inner surface ofcasing 1502. Whenconnector 1402 is plugged into the connection interface, a portion of eachpin 1518, including end 1602-1, passes through one of guidingholes 1802 to reachcircuit board 1504. The number of guidingholes 1802 in this embodiment is same as the number of contacts oncircuit board 1504 and is larger than the number ofpins 1518 ofconnector 1402. - Referring now to
FIGS. 15 and 17 , in this embodiment,circuit board 1504 of the connection interface includes aplanar center contact 1530 arranged at the center ofcircuit board 1504 and planarperipheral contacts 1532 separately arranged at concentric rings 1531-1 and 1531-2 oncircuit board 1504. In this embodiment, as shown inFIG. 17 , at an outermost ring 1531-2 oncircuit board 1504, a first set of four peripheral contacts 1532-3 are electrically connected one another bycircuit board 1504, e.g., by wires inside thecircuit board 1504 or on the other side ofcircuit board 1504. Similarly, at outermost ring 1531-2 oncircuit board 1504, a second set of four peripheral contacts 1532-2 are electrically connected one another bycircuit board 1504, e.g., by wires inside thecircuit board 1504 or on the other side ofcircuit board 1504. The first and second sets of peripheral contacts 1532-3 and 1532-2 are electrically separate from each other. At an innermost ring 1531-1 oncircuit board 1504, all four peripheral contacts 1532-1 are electrically connected one another bycircuit board 1504, e.g., by wires inside thecircuit board 1504 or on the other side ofcircuit board 1504. The set of peripheral contacts 1532-1 are electrically separate from the first and second sets of peripheral contacts 1532-3 and 1532-2. That is, four separate electrical contacts corresponding to centercontact 1530, peripheral contacts 1532-1, peripheral contacts 1532-2, and peripheral contacts 1532-3 are formed oncircuit board 1504. Each of the four separate electrical contacts is electrically connected to one of the four lines ofbus 400. On the other hand, whenconnector 1402 is plugged into the connection interface, each of fourpins 1518 ofconnector 1402 is in contact with a respective one of the four separate electrical contacts. Specifically, the center pin is in contact withcenter contact 1530, and each of the peripheral pins is in contact with one of the set of respectiveperipheral contacts 1532 depending on the orientation at whichconnector 1402 is plugged into the connection interface. In some embodiments, the set of four separate peripheral contacts 1532-1 in innermost ring 1531-1 may be replaced by a single ring contact. -
FIG. 19 is a cross-sectional view of an example of a connection structure in accordance with an embodiment. In this embodiment,connector 1402 is plugged into the two connection interfaces described above with respect toFIGS. 15-18 at one of a plurality of orientations.Pins 1518 ofconnectors 1402 are in contact with planar contacts of each connection interface so that the two connection interfaces are electrically connected. Specifically, one ends 1602-1 of eachpin 1518 are in contact withplanar contacts pin 1518 are in contact withplanar contacts pin 1518 passes through one of guidingholes 1802 of each connection interface. Depending on the orientation at whichconnector 1402 is plugged into the connection interface, each peripheral pin ofconnector 1402 may pass through different guidingholes 1802 and in contact with differentperipheral contacts 1532 oncircuit board 1504. -
FIGS. 20A-20D are plan views of the connection interface in contact withpins 1518 ofconnector 1402 at four orientations with 90 degrees offset, respectively, in accordance with an embodiment. InFIGS. 20A-20D , each solid dot represents onepin 1518 passing through guidinghole 1802 and is in contact with correspondingplanar contact circuit board 1504. As described above, fourpins 1518 include a center pin arranged along the central axis ofcasing 1506 and three peripheral pins arranged along the concentric rings relative to the center pin. In this embodiment, two peripheral pins that are electrically separate one another are arranged at the outermost ring relative to the center pin, and one peripheral pin is arranged at the innermost ring. As shown inFIGS. 20A-20D , regardless of the orientation, the center pin always passes through the center guiding hole and in contact withcenter contact 1530 oncircuit board 1504. - As to the peripheral pin arranged at the innermost ring, the peripheral pin may pass through one of the four guiding holes at the innermost ring and be in contact with one of four peripheral contacts 1532-1 arranged at the innermost ring on
circuit board 1504 depending on the orientation. In this embodiment, the four guiding holes and peripheral contacts 1532-1 are equally spaced apart at the innermost ring with 90 degrees offset. As to the two peripheral pins arranged at the outermost ring, each of the two peripheral pins may pass through one of four guiding pins with 90 degrees offset at the outermost ring and be in contact with one of four peripheral contacts 1532-2 or 1532-3 with 90 degrees offset at the outermost ring oncircuit board 1504 depending on the orientation. That is, by arranging two sets of peripheral contacts 1532-2 and 1532-3 at the same outermost ring oncircuit board 1504, each of which is spaced apart with 45 degrees offset, the two electrically-separate peripheral pins can be arranged at the same outermost ring to save space required for arrangingpin 1518 inconnector 1402. On the other hand, such arrangement can ensure electrical connectivity whenconnector 1402 is plugged into the connection interface at multiple orientations, thereby increasing the flexibility of the corresponding connection structure. It is to be appreciated that the number of orientations at whichconnector 1402 can be plugged into the connection interface is not limited to four as shown in this embodiment. In other examples, by changing the number of concentric rings for peripheral pins, guiding holes, and peripheral contacts, the number of peripheral pins, guiding holes, and peripheral contacts arranged at each concentric ring, and/or the angular offset between adjacent peripheral pins, guiding holes, and peripheral contacts arranged at each concentric ring,connector 1402 can be plugged into the connection interface at any suitable number of orientations. - Returning to
FIG. 19 , in addition to electrical connection, whenconnector 1402 is plugged into the two connection interfaces at one of the plurality of orientations relative to one another, the lock mechanisms ofconnector 1402 are interlocked with the lock mechanisms of each connection interface so that the two connection interfaces are mechanically connected as well. In this embodiment, whenconnector 1402 is plugged into the two connection interfaces, the central axis ofhole 1522 ofcasing 1502 is aligned with the central axis ofcasing 1506. As shown inFIG. 19 , snaps 1510-1 on one annular edge ofcasing 1506 are snapped-fit to lower annular edge 1902-1 of casing 1502-1 of one connection interface, and snaps 1510-2 on another annular edge ofcasing 1506 are snapped-fit to lower annular edge 1902-2 of casing 1502-2 of another connection interface. As shown inFIG. 19 , each protrusion 1512-1 on one portion of the outer surface ofcasing 1506 is inserted into a respective recess 1524-1 in casing 1502-1 of one connection interface, and each protrusion 1512-2 on another portion of the outer surface ofcasing 1506 is inserted into a respective recess 1524-2 in casing 1502-2 of another connection interface. Although not shown inFIG. 19 , in some embodiments, eachprotrusion 1526 on the inner surface ofcasing 1502 of a connection interface may be inserted into a respective recess 1514 incasing 1506 to further enhance the mechanical connection between two connection interfaces viaconnector 1402. - Lock mechanisms of
connector 1402 and connection interfaces not only can provide mechanical stability to the corresponding structure, but also can guideconnector 1402 to be plugged into the connection interfaces at certain orientations. In this embodiment, upper annular edge 1528-1 of casing 1502-1 of one connection interface abuts against one side of raised annular 1516 of casing 1506 ofconnector 1402, and upper annular edge 1528-2 of casing 1502-2 of another connection interface abuts against another side of raised annular 1516, which may provide additional mechanical stability and axial guidance to the corresponding connection structure. In this example, the number of possible orientations at whichconnector 1402 can be plugged into the two connection interfaces is the same as the number ofrecesses 1524 incasing 1502, the number of recesses 1514 incasing 1506, the number ofprotrusions 1526 oncasing 1502, and the number of protrusions 1512 oncasing 1506. For example, each ofrecesses 1524 or 1514 is 90 degrees offset fromadjacent recesses 1524 or 1514, and each ofprotrusions 1526 or 1512 is also 90 degrees offset fromadjacent protrusions 1526 or 1512. It is to be appreciated that the number of orientations at whichconnector 1402 can be plugged into the connection interface is not limited to four as shown in this embodiment. In other examples, by changing the number of lock mechanisms and/or the angular offset between adjacent lock mechanisms,connector 1402 can be plugged into the connection interface at any suitable number of orientations. -
FIG. 21A-21B are perspective views of various examples of acircuit board ring contacts 2106 thereon in accordance with an embodiment. In this embodiment, a plurality ofring contacts 2106, each arranged at one of concentric rings oncircuit board peripheral contacts 1532 illustrated inFIG. 17 . Similar to the embodiment described with respect toFIG. 17 , acenter contact 2104 is arranged at the center ofcircuit board ring contacts 2106 in this embodiment is the same as the number of peripheral pins of the corresponding connector. For example, inFIG. 21A ,circuit board 2102 includes threering contacts 2106 and thus, the corresponding connector includes three peripheral contacts, each of which can be in contact with arespective ring contact 2106. InFIG. 21B ,circuit board 2108 includes fourring contacts 2106 and thus, the corresponding connector includes four peripheral contacts, each of which can be in contact with arespective ring contact 2106. - Compared with the embodiment with respect to
FIGS. 15-20 in which some peripheral pins are arranged at the same outermost ring, the space required to arrange the peripheral pins in the connector and the peripheral contacts oncircuit board circuit board FIGS. 15-20 to achieve “360 degrees rotation” of the connection structure in this embodiment. -
FIGS. 22A and 22B are perspective view and cross-sectional view, respectively, of another example of aconnector 2202 in accordance with an embodiment. In this embodiment, casing and mechanical locks thereon have the same structures as the ones described in the embodiment with respect toFIGS. 15-20 and thus, will not be repeated again. In this embodiment,connector 2202 includes acenter pin 2204 and three concentric ring contacts 2206-1, 2206-2, and 2206-3.Center pin 2204 is arranged along the central axis of the casing, and each ring contact 2206 is arranged concentric to center pin 2204 (the central axis). Each ofcenter pin 2204 and ring contacts 2206 includes two ends, each of which is exposed by one of two open ends of the casing ofconnector 2202, respectively.FIG. 22C is a perspective view ofcontacts 2204 and 2206 ofconnector 2202 in accordance with an embodiment. As shown inFIGS. 22B and 22C , the lengths of ring contacts 2206 are different. For example, ring contact 2206-1 is arranged at the innermost ring and has the largest length among three ring contacts 2206; ring contact 2206-2 is arranged at the intermediate ring and has the second largest length among three ring contacts 2206; ring contact 2206-3 is arranged at the outermost ring and has the smallest length among three ring contacts 2206. In this embodiment,center pin 2204 has the length larger than those of ring contacts 2206-2 and 2206-3 but smaller than that of ring contact 2206-1. In this embodiment, because three ring contacts 2206 are arranged concentrically, innermost ring contact 2206-1 has the smallest diameter, and outermost ring contact 2206-3 has the largest diameter among three ring contacts 2206.Center pin 2204 and each ring contact 2206 may be made of any suitable electrically conductive materials, such as copper or aluminum. -
FIG. 23 is a plan view of another example of a connection interface in accordance with an embodiment.FIG. 24A is a plan view of another example of acircuit board 2402 of the connection interface inFIG. 23 in accordance with an embodiment. The connection interface in this embodiment can be used withconnector 2202 illustrated inFIGS. 22A-22C . The connection interface may include acasing 2302 andcircuit board 2402. In this embodiment, mechanical locks oncasing 2302 have the same structures as those described in the embodiment with respect toFIGS. 15-20 and thus, will not be repeated again. In this embodiment, instead of have guidingholes 1802 arranged at the center and concentric rings on the panel as shown inFIG. 18 , a center guiding hole and three ring openings are formed on the panel to allowcorresponding center pin 2204 and ring contacts 2206 to pass through, respectively. In this embodiment, acenter contact 2404 and three peripheral contacts 2406-1, 2406-2, and 2406-3 are arranged oncircuit board 2402.Center contact 2404 is arranged at the center ofcircuit board 2402, and each peripheral contact 2406 is arranged at a different distance fromcenter contact 2404. In other words, each peripheral contact 2406 is arranged at a respective concentric ring. Specifically, peripheral contact 2406-1 is arranged in the innermost ring and has the shortest distance fromcenter pin 2404 among three peripheral contacts 2406; peripheral contact 2406-2 is arranged in the intermediate ring and has the second shortest distance fromcenter pin 2404 among three peripheral contacts 2406; peripheral contact 2406-3 is arranged in the outermost ring and has the longest distance fromcenter pin 2404 among three peripheral contacts 2406. -
FIG. 24B-24D are cross-sectional views of another example of a connectionstructure including connector 2202 inFIG. 22A in contact with the connection interface inFIG. 23 in accordance with an embodiment. In this embodiment, whenconnector 2202 is plugged into the connection interface,center contact 2404 may pass through the center guiding hole in casing 2302 (seeFIG. 23 ) to be in contact withcenter pin 2204 ofconnector 2202, and each peripheral contact 2406 may pass through a respective ring opening in casing 2302 (seeFIG. 23 ) to be in contact with a respective ring contact 2206. As a result, four electrical contacts are formed by the connection structure, which correspond to the four lines ofbus 400. To ensure reliable electrical connectivity, in this embodiment, one or more ofcenter contact 2404 and peripheral contacts 2406 are deformable so as to be pressed onto arespective contact 2204 or 2206 ofconnector 2202 whenconnector 2202 is plugged into the connection interface. For example,center contact 2404 may include an end connected to a spring as shown inFIGS. 24B-24D . Each peripheral contact 2406 may include a resilient zigzag portion that can deform under pressure. - The arrangement disclosed in this embodiment with respect to
FIGS. 22-24 can ensure electrical connectivity betweenconnector 2202 and the connection interface when the connector is plugged at any orientation relative to the connection interface, i.e., can achieve 360 degrees rotation. Also, the arrangement disclosed in this embodiment is simple for adding more electrical contacts betweenconnector 2202 and the connection interface, i.e., by adding additional peripheral contacts at outer concentric rings oncircuit board 2402 of the connection interface and adding corresponding ring contacts toconnector 2202. Moreover, as described below, other structures ofconnector 2202 and the connection interface in this embodiment, such as the lock mechanisms, are the same as the corresponding structures in the embodiment with respect toFIGS. 15-20 . Similar to the embodiment with respect toFIGS. 15-20 , whenconnector 2202 is plugged into two connection interfaces at multiple orientations relative to one another, the lock mechanisms ofconnector 2202 are interlocked with the lock mechanism of each connection interface so that the two connection interfaces are mechanically connected. In this embodiment,connector 2202 is detachable from each connection interface after being plugged into the connection interfaces. The connection structure disclosed herein thus provides an easy way to assemble assembly modules to build modular assembly robotic toys and dissemble the modular assembly robotic toys into separate assembly modules. -
FIG. 25 is a depiction of an example of communication betweencontrol module 302 andmultiple assembly modules 202 and hosts 204 in accordance with an embodiment. In this embodiment,control module 302 may perform bidirectional communication withhosts 204 using USB and/or Bluetooth. In one example, host instructions generated byhosts 204, for example, control instructions, may be transmitted to controlmodule 302 using BLE technologies. In another example, host instructions generated byhosts 204, for example, programming instructions, may be transmitted to controlmodule 302 using USB. Error detection and correction codes, such as cyclic redundancy check (CRC) code, may be added to the raw data of host instructions to ensure reliable delivery of host instructions. On the other hand, module data, e.g., sensor signals obtained bysensor modules 304 and status data of eachassembly module 202, may be transmitted fromcontrol module 302 tohosts 204 using BLE technologies. - In this embodiment, firmware may be transmitted from
hosts 204 to controlmodule 302 using BLE or USB as well. As will be described below in detail, in some embodiments, the firmware file may be divided into multiple data packages with the same or different size, each of which includes a header and an error detection and correction code. Each data package may be transmitted in sequence to controlmodule 302 and checked for data error. An end data package may be added to indicate the end of the transmission of the firmware data package stream. In some embodiments, the firmware file may be encrypted using information that is unique to controlmodule 302 to ensure that only thecorrect control module 302 can decrypt and update the received firmware. - In this embodiment, as described above,
control module 302 may perform bidirectional communication with anyassembly module 202 in the modular assembly robotic toy viabus 400. For example,bus 400 may be a CAN bus, and CAN data transmission and ID allocation protocols may be used for communication betweencontrol module 302 andassembly modules 202. In this embodiment, eachassembly module 202 includes an initial ID that can uniquely identifyassembly module 202. The initial ID may be stored inpersistent storage 616, e.g., an ROM or a flash, ofcorresponding assembly module 202 and cannot be changed. In some embodiments, a module type ID that is indicative of the type ofcorresponding assembly module 202 may be part of the initial ID or may be derived from the initial ID. The same type of assembly modules, e.g., allpower modules 310 or allconnector modules 312, may have the same module type ID. The initial ID may be used bycontrol module 302 and hosts 204 to identifycorresponding assembly module 202 and updating status (e.g., online or offline) ofassembly module 202. In some embodiments, the initial ID may be used as the communication address ofcorresponding assembly module 202 before a communication ID is assigned toassembly module 202. - In this embodiment, a communication ID that is used as the communication address (e.g., source or destination address) via
bus 400 may be generated based on the initial ID and assigned tocorresponding assembly module 202 bycontrol module 302. In some embodiments, a communication ID may include a transmission ID and a receiving ID. For example, the transmission ID may be used when a message is transmitted fromcontrol module 302 tocorresponding assembly 202, and the receiving ID may be used when a message is received bycontrol module 302 fromcorresponding assembly module 202. In some embodiments, the receiving ID may be derived from the corresponding transmission ID. Thus,control module 302 may only need to provide the transmission ID tocorresponding assembly module 202, andassembly module 202 can derive the corresponding receiving ID based on the received transmission ID. In one example, the receiving ID may be the transmission ID+0x0100. For example, if the transmission ID is 0x0060, then the receiving ID is 0x0160. - In this embodiment,
control module 302 may transmit operation instructions to eachassembly module 202 using the transmission ID ofcorresponding assembly module 202 through the two data lines ofbus 400. The operation instructions may be transmitted in the form of data messages, each of which includes the transmission ID ofcorresponding assembly module 202 as the destination address. TABLE 1 below shows one example of a message of operation instructions transmitted fromcontrol module 302 toinfrared sensor module 314. -
TABLE 1 Byte Field Value 0 Tx ID 0x0C 1 Working 1: Active Mode Mode 2 Emitting 0: Repeated Emitting Mode 1: Single Emitting 3 Interval Low Byte 4 (Repeated High Byte Emitting) 5 N/A N/A 6 N/A N/A 7 N/A N/A - On the other hand, each
assembly module 202 may transmit module data, e.g., sensor signals or status data, to controlmodule 302 through the two data lines ofbus 400. The module data may be transmitted in the form of data messages, each of which includes the receiving ID ofcorresponding assembly module 202 to identify the source of the message. TABLE 2 below shows one example of a message of module data transmitted frompower module 310 to controlmodule 302. -
TABLE 2 Byte Field Value 0 Rx ID 0x01 1 Power Level Low Byte 2 Power Level High Byte 3 N/A N/A 4 N/A N/A 5 N/A N/A 6 N/A N/A 7 N/A N/A - When an
assembly module 202 is first time coupled into a modular assembly robotic toy,assembly module 202 may need to be registered as part of the modular assembly robotic toy bycontrol module 302. For example, for modular assemblyrobotic toy 100 illustrated inFIGS. 1A-1C , when a user first time plugsinfrared sensor module 112 into modular assemblyrobotic toy 100 to add the object detection capability, newly-addedinfrared sensor module 112 may need to be registered as part of modular assemblyrobotic toy 100.FIG. 26 is an event diagram illustrating an example of registeringassembly module 202 in accordance with an embodiment. In this embodiment, registration ofnew assembly module 202 may be informed to host 204 bycontrol module 302 so thathost 204 can manage all registeredassembly modules 202 of the modular assembly robotic toy and provide the registration information to the user and/orserver 206. - At 2602,
assembly module 202 may retrieve the initial ID thereof. For example, the initial ID that is unique toassembly module 202 may be stored intopersistent storage 616 ofassembly module 202 whenassembly module 202 was manufactured, which cannot be modified afterwards. In some embodiments, the initial ID may be stored at a predefined address with a predefined length inpersistent storage 616, andassembly module 202 may retrieve the initial ID by reading data from the predefined address with the predefined length. If no data is stored at the predefined address, thenassembly module 202 cannot work. In some embodiments, a separate indicator may be stored inpersistent storage 616, andassembly module 202 may first read the indicator to see if the initial ID has been properly assigned and stored. This process may be automatically triggered whenassembly module 202 is plugged into the modular assembly robotic toy and powered up by the power signals from the power lines ofbus 400. - At 2604,
assembly module 202 may transmit a module initiation message including the retrieved initial ID to controlmodule 302 via the data lines ofbus 400. TABLE 3 below illustrates one example of the module initiation message transmitted fromassembly module 202 to controlmodule 302. In this example, the field “Flag” indicates that the six-byte initial ID starts from the next byte of the message. In some embodiments, the module initiation message may also include the module type ID ofassembly module 202. -
TABLE 3 Byte Field Value 0 Flag 0x1D 1 Initial 2 ID 3 4 5 6 7 N/A N/A - At 2606, after receiving the module initiation message from
assembly module 202,control module 302 may assign a communication ID toassembly module 202, which can be used for communication betweenassembly module 202 andcontrol module 302 via bus in the future. The communication ID may be generated based on information in the module initiation message, for example, the initial ID and/or the module type ID ofassembly module 202. For example,control module 302 may generate the communication ID based on the module type ID ifassembly module 202 is the only assembly module of the same type that has been registered with the modular assembly robotic toy. If there is more than oneassembly module 202 of the same type, i.e., the module type ID is no longer unique, then controlmodule 302 may generate the communication ID based on the initial ID ofassembly module 202, which uniquely identifiescorresponding assembly module 202 as described above. In some embodiments, a certain range of commutation IDs may be reserved for each type ofassembly modules 202. For example, communication IDs formovement modules 318 may be in the range from 0x31 to 0x3F. In some embodiments, the commutation ID may include a transmission ID and a receiving ID as described above. - At 2608,
control module 302 may transmit an ID assignment message including the assigned communication ID toassembly module 202 via the data lines ofbus 400. In some embodiments, if the communication ID includes both transmission ID and receiving ID, the ID assignment message may include both transmission and receiving IDs or the transmission ID only (if the receiving ID can be derived from the transmission ID). TABLE 4 below illustrates one example of the ID assignment message transmitted fromcontrol module 302 toassembly module 202. As described above, in this example, the ID assignment message includes the initial ID ofassembly module 202 as the destination address of the message. The initial ID may not be used in future communication betweenassembly module 202 andcontrol module 302 after the communication ID is delivered toassembly module 202. -
TABLE 4 Byte Field Value 0 Flag 0x1D 1 Initial 2 ID 3 4 5 6 7 Comm. ID - At 2610, after receiving the ID assignment message including the assigned communication ID from
control module 302,assembly module 202 may start to periodically transmit “heartbeat” messages indicative of normal status ofassembly module 202 to controlmodule 302. Each heartbeat message may include the communication ID, for example, the receiving ID, to identify the source of the message. - At 2612, once
control module 302 receives the first heartbeat message from correspondingassembly module 202 and identifies thatassembly module 202 has not been registered before with the modular assembly robotic toy,control module 302 may add the initial ID ofcorresponding assembly module 202 to an online module list. The online module list may include initial IDs of allassembly modules 202 that have registered with the modular assembly robotic toy and that are currently coupled to the modular assembly robotic toy. At 2614,control module 302 may also assign resources toassembly module 202. At 2616,control module 302 may reset the value of the threshold period ofassembly module 202. The value of the threshold period may continuously decrease as time goes by. The threshold period may be used bycontrol module 302 to determine whethercorresponding assembly module 202 is decoupled from the modular assembly robotic toy (i.e., becomes offline). Newly-addedassembly module 202 is then considered being registered with the modular assembly robotic toy bycontrol module 302. - At 2618, once the registration processes of
assembly module 202 are completed,control module 302 may transmit a module registration message to host 204 indicating thatassembly module 202 is registered. In some embodiments, host 204 may update a registration list to includeassembly module 202 and present a message to the user informing the registration ofassembly module 202. -
FIG. 27 is a flow chart illustrating an example of amethod 2700 for registeringassembly module 202 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed.Method 2700 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown inFIG. 27 , as will be understood by a person of ordinary skill in the art. - Starting at 2702,
control module 302 may receive a first message having a first ID ofassembly module 202. The first ID may be stored inpersistent storage 616 ofassembly module 202 and uniquely identifyassembly module 202. In some embodiments, the first message may further include a third ID that is indicative of the type ofassembly module 202. The third ID may be either separate from the first ID, a part of the first ID, or can be derived from the first ID. - At 2704,
control module 302 may generate a second ID forassembly module 202 based on the first ID ofassembly module 202. The second ID may be used for future communication betweencontrol module 302 andassembly module 202. In some embodiments, the second ID may be generated based on both the first ID and the third ID or based on the third ID alone. In some embodiments, the second ID may include two sub-IDs, e.g., a transmission ID and a receiving ID, or may be one of the transmission and receiving IDs. At 2706,control module 302 may transmit a second message having the second ID toassembly module 202. In some embodiments, the second message may include the first ID and/or the third ID ofassembly module 202 as well. - At 2708,
control module 302 may determine whether a third message having the second ID forassembly module 202 is received fromassembly module 202. In some embodiments, the third message further includes a normal status indicator and is periodically transmitted byassembly module 202 to controlmodule 302. In other words, the third message may be a heartbeat message. The second ID was assigned bycontrol module 302 toassembly module 202 and transmitted toassembly module 202 for future communication betweencontrol module 302 andassembly module 202, including heartbeat messages. If no third message is received, then controlmodule 302 may continue checking the receipt of the third message. If the third message is received, then at 2710,control module 302 may registerassembly module 202 as a new assembly module of the modular assembly system, e.g., a robotic toy. - An embodiment of 2710 shall now be described in greater detail. Specifically, at 2712,
control module 302 may add the first ID ofassembly module 202 into an online module list. That is,assembly module 202 may be associated with a status as being coupled to the modular assembly system. At 2714,control module 302 may assign resources toassembly module 202. At 2716,control module 302 may reset the threshold period ofassembly module 202. At 2718,control module 302 may transmit a fourth message having the status ofassembly module 202 to host 204. The status may indicate thatassembly module 202 is coupled to the modular assembly system and registered as a new assembly module of the modular assembly system. -
FIG. 28 is a flow chart illustrating another example of amethod 2800 for registeringassembly module 202 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed.Method 2800 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown inFIG. 28 , as will be understood by a person of ordinary skill in the art. - Starting at 2802,
assembly module 202 may obtain the first ID frompersistent storage 616. In some embodiments, 2802 may be automatically performed in response toassembly module 202 being powered-up. At 2804,assembly module 202 may transmit the first message having the first ID to controlmodule 302. The first message may include the third ID that is indicative of the type ofassembly module 202. At 2806,assembly module 202 may determine whether the second message having the second ID is received fromcontrol module 302. If no second message is received, thenassembly module 202 may continue checking the receipt of the second message. If the second message is received, then at 2808,assembly module 202 may transmit the third message having the second ID to controlmodule 302. In some embodiments,assembly module 202 may periodically transmit heartbeat messages including the second ID that is indicative of the source of the heartbeat messages to controlmodule 302. - In some situations, a registered assembly module of a modular assembly system may be intentionally or accidently decoupled from the modular assembly system due to, for example, loose connectors, poor contacts, etc. Thus, it may be desirable to effectively and efficiently detect and update the status (e.g., online or offline) of each registered assembly module of the modular assembly system without turning off the power of the modular assembly system. For example, for modular assembly
robotic toy 100 illustrated inFIGS. 1A-1C , when registeredinfrared sensor module 112 is accidentally decoupled from modular assemblyrobotic toy 100,control module 102 may quickly detect such an event and update the status ofinfrared sensor module 112 as being offline. Wheninfrared sensor module 112 is plugged back into modular assemblyrobotic toy 100,control module 102 may also quickly detect such an event and update the status ofinfrared sensor module 112 as being online.FIG. 29 is an event diagram illustrating an example of updating a status associated withassembly module 202 in accordance with an embodiment. In this embodiment, status update ofassembly module 202 may be informed to host 204 bycontrol module 302 so thathost 204 can manage the status of all registeredassembly modules 202 of the modular assembly robotic toy and provide the status information to the user and/orserver 206. - At 2902,
assembly module 202 may periodically transmit heartbeat messages that are indicative of normal status ofassembly module 202 to controlmodule 302. Each heartbeat message may include the communication ID, for example, the receiving ID, to identify the source of the message. In some embodiments, the transmission of heartbeat messages may be an independent process that is unconditionally performed irrespective of other events or processes in this embodiment. In some embodiments, the transmission of heartbeat messages may be dependent upon other events or the outcome of other processes in this embodiment as will be described below in detail. - At 2904, host 204 may transmit a data request message to control
module 302 requesting data from anassembly module 202. For example, host 204 may request status data or sensor signals fromsensor modules 304. At 2906, in response to receiving the data request message,control module 302 may transmit a data request message tocorresponding assembly module 202 via the data lines ofbus 400 for requesting the data fromassembly module 202. The data request message may include the transmission ID assigned toassembly module 202 as the destination address of the data request message as described above. - At 2908, in response to receiving the data request message from
control module 302,assembly module 202 may retrieve the requested data, e.g., frompersistent storage 616,memory 604, and/or any other suitable components. At 2910,assembly module 202 may transmit a data message to controlmodule 302 via the data lines ofbus 400. The data message may include the requested data and the receiving ID ofassembly module 202 that is indicative of the source of the data message. At 2912, in response to receiving the data message fromassembly module 202 and identifying the source of the data message based on the receiving ID,control module 302 may transmit a data message including the requested data to host 204. In some embodiments, ifassembly module 202 keeps transmitting data messages to controlmodule 302 in a time interval,assembly module 202 may skip transmitting the heartbeat messages to controlmodule 302 because the data messages may also indicate the normal status ofassembly module 202. - At 2914, in response to receiving either the heartbeat message at 2902 or the data message at 2910 from
assembly module 202,control module 302 can determine thatassembly module 202 is currently coupled to the modular assembly robotic toy (i.e., online) and thus, add the initial ID ofcorresponding assembly module 202 to the online module list. In some embodiments, the communication ID assigned toassembly module 202 may be recorded as well in the online module list. At 2916,control module 302 may also reset the value of the threshold period ofassembly module 202. At 2918,control module 302 may transmit a status message to host 204, which indicates the online status ofcorresponding assembly module 202. In some embodiments, host 204 may update an online module list to includeassembly module 202 and present a message to the user informing the online status ofassembly module 202. -
FIG. 30 is an event diagram illustrating another example of updating a status associated withassembly module 202 in accordance with an embodiment. At 3002, host 204 may transmit a data request message to controlmodule 302 for requesting data fromassembly module 202. For example, host 204 may request status data or sensor signals fromsensor modules 304. At 3004, in response to receiving the data request message,control module 302 may transmit a data request message tocorresponding assembly module 202 via the data lines ofbus 400 requesting the data fromassembly module 202. The data request message may include the transmission ID assigned toassembly module 202 as the destination address of the data request message as described above. - At 3006,
control module 302 neither receives a data message fromassembly module 202 as a response to the data request message transmitted at 3004 nor receives a heartbeat message fromassembly module 202 until the threshold period ofcorresponding assembly module 202 expires.Control module 302 thus may determine thatassembly module 202 is currently decoupled from the modular assembly robotic toy (i.e., becomes offline). At 3008,control module 302 may move the initial ID ofassembly module 202 to an offline module list. In some embodiments, the communication ID assigned toassembly module 202 may be recorded in the offline module list as well. In some embodiments,control module 302 may not transmit the data request message toassembly module 202 at 3004. At 3006, ifcontrol module 302 does not receive a heartbeat message fromassembly module 202 until the threshold period ofassembly module 202 expires,control module 302 may also move the initial ID ofassembly module 202 to the offline module list. At 3010,control module 302 may transmit a status message to host 204, which indicate the offline status ofcorresponding assembly module 202. In some embodiments, host 204 may update an offline module list to includeassembly module 202 and present a message to the user informing the offline status ofassembly module 202. -
FIG. 31 is a flow chart illustrating an example of amethod 3100 for updating a status associated withassembly module 202 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed.Method 3100 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown inFIG. 31 , as will be understood by a person of ordinary skill in the art. - Starting at 3102,
control module 302 may transmit a first message toassembly module 202 requesting data fromassembly module 202. The first message may include a communication ID assigned toassembly module 202 as the destination address. As described above, the communication ID may be generated bycontrol module 302 based on the initial ID ofassembly module 202. In some embodiments, the first message may be generated in response to receiving a data request message fromhost 204. - At 3104,
control module 302 may determine whether a second message including the requested data is received fromassembly module 202. Ifcontrol module 302 does not receive the second message fromassembly module 202, then at 3106,control module 302 may determine whether a third message including a normal status indicator, e.g., a heartbeat message, is received fromassembly module 202. Ifcontrol module 302 also does not receive the third message fromassembly module 202, then controlmodule 302 may check whether the threshold period ofassembly module 202 expires. If the threshold period expires, then at 3118,control module 302 may update status ofassembly module 202 as being decoupled from the modular assembly system (i.e., offline). If at 3116, the threshold period has not expired, thenmethod 3100 returns to 3102. - If
control module 302 receives the second message at 3104 or receives the third message at 3106 fromassembly module 202, then at 3108,control module 302 may update the status ofassembly module 202 as being coupled to the modular assembly system (i.e., online). An embodiment of 3108 shall now be described in greater detail. Specifically, at 3110,control module 302 may determine whether the initial ID and/or communication ID ofassembly module 202 is in the online module list. If the initial ID and/or communication ID ofassembly module 202 is not in the online module list (meaning that, for example,assembly module 202 may be quickly re-plugged into the modular assembly system after being decoupled from the modular assembly system), then at 3112,control module 302 may add the initial ID and/or communication ID ofassembly module 202 into the online module list. In some embodiments, resources previously assigned toassembly module 202 may be resumed. At 3114,control module 302 may also reset the value of the threshold period ofassembly module 202. If at 3110, the initial ID and/or communication ID ofassembly module 202 is in the online module list (meaning that, for example,assembly module 202 remains being plugged into the modular assembly system),control module 302 may skip 3112 and reset the value of the threshold period ofassembly module 202 at 3114. - After 3118 or 3114,
control module 302 may transmit a fourth message including the current status ofassembly module 202, either online or offline, to host 204 at 3120. In some embodiments, host 204 may update the online module list or the offline module list to includeassembly module 202 accordingly and present a message to the user informing the current online or offline status ofassembly module 202. -
FIG. 32 is a flow chart illustrating another example of amethod 3200 for updating a status associated withassembly module 202 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed.Method 3200 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown inFIG. 32 , as will be understood by a person of ordinary skill in the art. - Starting at 3202,
assembly module 202 may receive the first message fromcontrol module 302 requesting data fromassembly module 202. At 3204,assembly module 202 may retrieve the requested data. At 3206,assembly module 202 may transmit the second message including the requested data to controlmodule 302. In parallel, at 3208,assembly module 202 may periodically transmit the third message including the normal status indicator to controlmodule 302. It is to be appreciated that as described above, in some embodiments,assembly module 202 may skip transmitting the third message to controlmodule 302 if the second message has been transmitted to controlmodule 302 within a time period. In some embodiments, each of the second message and the third message may also include a communication ID assigned bycontrol module 302 toassembly module 202 that indicates the source of the second message or third message. - In some situations, it may be desirable to update firmware of
assembly modules 202, such ascontrol modules 302. In one example, bugs detected in previous version of firmware may be fixed in the updated firmware. In another example, new functions may be added to the updated firmware. In still another example, anassembly module 202 may become a different type ofassembly module 202 by downloading a different firmware. In any event, there is a risk that the firmware downloaded by aparticular assembly module 202 is not for theassembly module 202, either by mistakes or by batching downloading from malicious copying.FIGS. 33-35 disclose examples of updating firmware oncontrol module 302 in a secure way to ensure that the firmware to be updated is for the correct control module. -
FIG. 33 is an event diagram illustrating an example of updating firmware oncontrol module 302 in accordance with an embodiment. At 3302,control module 302 may sample noise signals ofcontrol module 302 itself. It is understood that certain noise signals, e.g., Gaussian white noise, are random signals at any time and thus, may be unique to the source of the noise signals, e.g.,control module 302 in this example. It is to be appreciated that in some embodiments, the sampled signals may not be limited to noise signals and may be any signals that is unique to controlmodule 302. In this embodiment,control module 302 may first sample certain components ofcontrol module 302, e.g., the power supply, to obtain an initial signal, e.g., a power signal. In one example, the sampling may be performed by analog-to-digital conversion (ADC).Control module 302 then may filter the initial signal for removing noise signal to obtain a filter signal, e.g., a filtered power signal. The filtering may be performed by Kalman filtering, first-order lag or low-pass filtering, weighted average recursive filtering, Butterworth filtering, Chebyshev filtering, or any other suitable filters.Control module 302 may compute a noise signal based on the initial and filtered signals. For example, the value of the noise signal may be obtained by subtracting the value of the initial signal by the value of the filtered signal. - At 3304,
control module 302 may compute an encryption key based on the noise signal. For example, modulo operation may be used for calculating the encryption key. In one example, the value of the noise signal may modulo 16 (NoiseValue % 16) to obtain the encryption key. In some embodiments, the length of the encryption key may be checked to see if it meets the security requirement. If the length of the encryption key does not meet the security requirement, different modulo operation may be applied to generate another encryption key. At 3306,control module 302 may store the encryption key, for example, inpersistent storage 716. It is to be appreciated that the encryption key may be stored in any suitable storage. - It is to be appreciated that in some embodiments, an encryption key may be generated by other approaches. In one example, any suitable computational random-number generator (RNG) may be used by
control module 302 to generate the encryption key, such as linear congruential generator, middle square method, Mersenne Twister algorithm, CryptGenRandom, probability density function, or any pseudorandom number generators (PRNGs), etc. In another example, the initial ID ofcontrol module 302 or any IDs of any components ofcontrol module 302, e.g., the ID ofprocessor 702, may be used bycontrol module 302 to generate the encryption key. - At 3308, host 204 may transmit a firmware update request message to control
module 302. It is to be appreciated that 3308 may occur before 3302. In other words, in some embodiments,control module 302 may sample noise signals to generate the encryption key in response to receiving the firmware update request message. In some embodiments,control module 302 may perform 3302 regardless of whether the firmware update request message being received. For example,control module 302 may automatically perform 3302 the first time whencontrol module 302 is powered-up. In any event, at 3310,control module 302 may transmit an encryption key message to host 204.Control module 302 may retrieve the encryption key stored inpersistent storage 716 and include the encryption key in the encryption key message. - At 3312, host 204 may encrypt the firmware to be updated based on the received encryption key. Any suitable encryption algorithms may be used by
host 204 for encryption, such as but not limited to, advanced encryption standard (AES), data encryption standard (DES), or triple DES (3DES). At 3314, host 204 may divide the firmware file into M data packages. In this embodiment, each data package may have the same size and include a header and an error detection and correction code. TABLE 5 below illustrates one example of the firmware data package. In TABLE 5, the header includes the flag, package size, and package number. The package size does not count the header and error detection and correction code, but includes the package number and data. The size of data is the package size minus two bytes. -
TABLE 5 Flag Package Size Package No. Data CRC Byte Byte Byte Byte Byte Byte Byte Byte . . . Byte Byte 0 1 2 3 4 5 6 7 N − 1 N 0x42 0x4C Package size Package No. Data 16 - At 3316, host 204 may transmit the first firmware data package to control
module 302. In this embodiment,control module 302 may check the first firmware data package based on the CRC16 code. If the CRC check is passed,control module 302 may send amessage notifying host 204 to continue to transmit the next firmware data package. If the CRC check is failed,control module 302 may send amessage notifying host 204 to resend the previous firmware data package. In some embodiments, the firmware update process may be aborted if no response is received fromhost 204 within a certain period after notifyinghost 204 to resend the previous firmware data package or if the CRC check has failed for a certain number of times. The same processes may be repeated until at 3318, host 204 may transmit the last (e.g., Mth) firmware data package to controlmodule 302. That is,host 204 may transmit each of the M firmware data packages in sequence to controlmodule 302. It is to be appreciated that in some embodiments, CRC check may be skipped, and host 204 may continue transmitting each firmware data package without waiting for notification fromcontrol module 302. - At 3320, after receiving all the firmware data packages, i.e., the entire firmware file,
control module 302 may retrieve the encryption key, for example, frompersistent storage 716 or any storage where the encryption key can be stored. At 3322,control module 302 may decrypt the firmware file using the retrieved encryption key. If the retrieved encryption key matches the encryption key that is used byhost 204 to encrypt the firmware file, i.e., the firmware file is transmitted to the correct control module, then the firmware file can be decrypted (i.e., the decryption is successful). At 3324,control module 302 may load the firmware to complete the firmware update process. Otherwise, if the decryption fails, for example, because the retrieved encryption key does not match the encryption key used for encrypting the firmware file byhost 204 or becausecontrol module 302 cannot retrieve any encryption key, then the firmware update process fails. In any event, at 3326,control module 302 may transmit a firmware update status message to host 204 to report whether the firmware update is successful or not. -
FIG. 34 is a flow chart illustrating an example of amethod 3400 for updating firmware oncontrol module 302 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed.Method 3400 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown inFIG. 34 , as will be understood by a person of ordinary skill in the art. - Starting at 3402,
control module 302 may obtain noise information sampled fromcontrol module 302 itself. An embodiment of 3402 shall now be described in greater detail. Specifically, at 3404,control module 302 may sample certain components, such as the power supply, to obtain an initial signal, for example, using ADC. At 3406, control module 346 may filter the initial signal to obtain a filter signal, for example, using Kalman filtering. At 3408,control module 302 may compute a noise signal based on the initial and filter signals, for example, using subtraction operation. At 3410,control module 302 may calculate a first encryption key based on the noise information. For example, the calculation may be performed by modulo operation on the noise signal. At 3412,control module 302 may store the first encryption key inpersistent storage 716 ofcontrol module 302. - At 3414,
control module 302 may determine whether a message requesting firmware update is received fromhost 204. If the message is not received,control module 302 may continue checking until the message is received. At 3416,control module 302 may transmit the first encryption key to host 204. - At 3418,
control module 302 may receive encrypted firmware fromhost 204. The firmware may be encrypted byhost 204 based on a second encryption key. In some embodiments, the encrypted firmware may be divided into multiple data packages that are sequentially transmitted to controlmodule 302 fromhost 204. The size of each data package may be the same. After receiving the encrypted firmware, e.g., all the data packages, at 3420control module 302 may retrieve the first encryption key frompersistent storage 716 ofcontrol module 302. At 3422,control module 302 may decrypt the firmware based on the retrieved first encryption key. At 3424,control module 302 may determine whether the decryption succeeds. In this embodiment, if the first encryption key matches the second encryption key, then the decryption succeeds. At 3426,control module 302 may load the decrypted firmware to complete the firmware update process. Otherwise, the decryption fails, and the firmware update process fails. -
FIG. 35 is a flow chart illustrating another example of amethod 3500 for updating firmware oncontrol module 302 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed.Method 3500 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown inFIG. 35 , as will be understood by a person of ordinary skill in the art. - Starting at 3502, host 204 may transmit a message request firmware update to
corresponding control module 302 at which the firmware update is to be performed. At 3504, host 204 may receive an encryption key fromcontrol module 302. The encryption key may be calculated based on noise information sampled fromcontrol module 302, such as the power supply ofcontrol module 302. At 3506, host 204 may encrypt the firmware based on the received encryption key using any suitable encryption algorithms, such as AES, DES, or 3DES. At 3508, host 204 may divide the firmware into multiple data packages. For example, the size of each package may be the same. At 3510, host 204 may sequentially transmit each firmware data package to controlmodule 302. In some embodiments, host 204 may further receive the firmware update status (e.g., success or failure) fromcontrol module 302. - The functions of modular assembly systems disclosed herein (e.g., modular assembly robotic toys) can be customized by users via host applications running on
hosts 204, and the behaviors of the modular assembly systems can be controlled by the users at runtime via the host applications running onhosts 204 as well. For example,control application 1214,programming application 1216, andfirmware update application 1218 described above with respect toFIG. 12 are examples of the host applications running onhosts 204. Embodiments ofcontrol application 1214 andprogramming application 1216 shall now be described in greater detail with respect toFIGS. 36-42 . -
FIG. 36 is a block diagram illustrating an example of applications running onhosts 204 in accordance with an embodiment. It is to be appreciated thatapplications single host 204 or onmultiple hosts 204. For the illustrative purpose only,applications single host 204. It is also to be appreciated that someapplications script control environment 3604 may be integrated withruntime control environment 3602 to formcontrol application 1214 or may be integrated withgraphical programming environment 3606 to formprogramming application 1216. As shown inFIG. 36 , auser interface 3608 may be rendered byhost 204 to serve as the interface betweenuser 1202 and any ofapplications host instruction generator 3622 may run onhost 204 for generating host instructions based on user inputs to any ofapplications operating system 504 and/orvirtual machine 506 running oncontrol module 302. - In this embodiment,
runtime control environment 3602 may allowuser 1202 to interactively control operations of the modular assembly system at runtime when the modular assembly system in on operation.Runtime control environment 3602 may include avirtual handle 3610, alighting controller 3612, and agesture controller 3614. Interactions betweenuser 1202 and any functional components ofruntime control environment 3602 may be recorded and forwarded to acontrol instruction generator 3624 inhost instruction generator 3622 to generate corresponding control instructions. The control instructions may be transmitted fromhost 204 tooperating system 504 ofcontrol module 302 and converted into operation instructions for eachcorresponding assembly module 202 of the modular assembly system. For example, the control instruction may be transmitted to controlmodule 302 using BLE technologies. - In this embodiment,
virtual handle 3610 may allowuser 1202 to control motion of the modular assembly system by interacting withvirtual handle 3610. In some embodiments,virtual handle 3610 may mimic the appearance of one ofassembly modules 202 of the modular assembly system. For example,movement module 318 may be substantially ball-shaped, andvirtual handle 3610 may mimic the ball shape ofmovement module 318 whenvirtual handle 3610 is rendered on the display screen ofhost 204.User 1202 may interact with virtual handle 3160 in various manners. In one example, the display screen ofhost 204 may be a touch screen so thatuser 1202 can touch different portions of virtual handle 3160 and/or use different touch gestures to control the actions ofactuator modules 306, e.g., moving forward, backward, upward, and downward, turning left and right, or tilting forward and backward. In another example, host 204 may be a mobile or portable device having inertial sensors, such as gyroscopes and accelerometers. Host 204 thus can sense motion of the mobile device caused by user 1202 (e.g., capturing the angle in which the mobile device is tilted by user 1202), andvirtual handle 3610 can control the actions ofactuator modules 306 by mimicking the motion or pose (e.g., tilting angles) of the mobile device. For example,user 1202 may first keep the mobile device flat to set a zero angle point. Then virtual handle 3160 can controlactuator modules 306 to move forward or backward when the mobile device is tilted forward or backward, respectively, andcontrol actuator modules 306 to turn left or right when the mobile device is tilted left or right, respectively. It is to be appreciated that in some embodiments,user 1202 may interact withvirtual handle 3610 in any other suitable manners, such as voice commands, eyeball movement, or head, body, hand, and finger gestures, to name a few. It is to be appreciated that in some embodiments,virtual handle 3610 may be presented on a display screen of anassembly module 202 of the modular assembly system, such ascontrol modules 302 or analyzingmodules 308. For example, voice command recognition or user gesture recognition may be performed, at least partially, by analyzingmodules 308. - In this embodiment,
lighting controller 3612 may allowuser 1202 to control lighting of the modular assembly system. In this embodiment, lights may be arranged on one ormore assembly modules 202, such ascontrol modules 302 andmovement modules 318.User 1202 may set the lighting scheme of the modular assembly system, for example, the color of lights, the lighting duration and interval, synchronization of lighting on different assembly modules, etc.Gesture controller 3614 may allowuser 1202 to control the modular assembly system, or one ormore assembly modules 202 thereof to present certain gestures. It is to be appreciated that additional functional components may be included inruntime control environment 3602 to facilitateuser 1202 to control the modular assembly system at runtime. - In this embodiment,
script control environment 3604 may allowuser 1202 to designate a function or behavior corresponding to the particular modular assembly system. In this embodiment,script control environment 3604 may provide a set of predefined base functions 3616-1, . . . , 3616-n touser 1202 for selection. Eachpredefined base function 3616 may correspond to one of modular assembly systems and include a series of actions for eachassembly module 202 of the specific modular assembly system.User 1202 may further modify or configure the selectedbase function 3616 to designate the desired function or behavior to be performed by the particular modular assembly system. In this embodiment,programming instruction generator 3626 inhost instruction generator 3622 may generate corresponding programming instructions, e.g., Lua scripts, based on the modified or configuredbase function 3616. Host 204 may transmit the programming instructions tovirtual machine 506 ofcontrol module 302 prior to the modular assembly system performs the function or behavior designated byuser 1202. For example, the programming instructions may be transmitted to controlmodule 302 using BLE technologies.Virtual machine 506 may convert the programming instructions into operation instructions for eachassembly module 202 of the modular assembly system to perform the series of actions set in the modified or configuredbase function 3616. As described above, in some embodiments, a physical switch oncontrol module 302 may be used to interrupt the execution of the programming instructions byvirtual machine 506 ofcontrol module 302. For example, the programming instructions may not be executed bycontrol module 302 until the physical switch is triggered. - Each
base function 3616 may be predefined based on a specific modular assembly system, i.e., the particular assembly modules plugged into the modular assembly system. Base functions 3616 may include, for example, self-balancing, tracking, color recognition, obstacle avoidance, and following. For example, the specific modular assembly system for the self-balancing base function may include atleast control module 302 with gyroscopes andmovement modules 318. The self-balancing base function allows the modular assembly system to keep balance while moving. Specifically, the gyroscopes oncontrol module 302 may detect the titling angle of the modular assembly system at runtime, andcontrol module 302 may controlmovement modules 318 to maintain balance based on the real-time tilting angle of the modular assembly system. In another example, the specific modular assembly system for the tracking base function may include at leastcolor recognition module 316 andmovement modules 318. The tracking base function allows the modular assembly system to move along a colored path. Specifically, a path with a particular color may be drawn on the ground, andcolor recognition module 316 may recognize the particular colored path and provide the sensor signals to controlmodule 302.Control module 302 then may controlmovement modules 318 to move along the colored path. - In this embodiment,
graphical programming environment 3606 may facilitateuser 1202 to input programs, e.g., statement blocks, prior to the modular assembly system (e.g., control module 302) on operation.Graphical programming environment 3606 may include graphical statement blocks 3618 andgraphical assembly modules 3620. Interactions betweenuser 1202 and any functional components ofgraphical programming environment 3606 may be recorded and forwarded toprogramming instruction generator 3626 inhost instruction generator 3622 to generate corresponding programming instructions. The programming instructions may be transmitted byhost 204 tovirtual machine 506 ofcontrol module 302 and converted into operation instructions for eachcorresponding assembly module 202 of the modular assembly system. For example, the programming instructions may be transmitted to controlmodule 302 using USB. In some embodiments, prior to transmitting the programming instructions to controlmodule 302,graphical programming environment 3606 may present a preview of the operations ofassembly modules 202 of the modular assembly system in accordance with the programming instructions. - In this embodiment,
user 1202 may select graphical statement blocks 3618 by dragging-and-dropping and provide values to parameters of selected graphical statement blocks 3618 to build the program. In some embodiments, graphical statement blocks 3618 may be grouped into categories, and at least some categories relate to functions ofassembly modules 202 of the modular assembly system, such as motion, lighting, or sensing. In some embodiments, parameters of some graphical statement blocks 3618 may be associated with the physical switch oncontrol module 302, such as the duration of pressing the physical switch as a condition to trigger an event. In this embodiment, eachgraphical assembly module 3620 may be a graphical representation corresponding to one ofassembly modules 202 of the modular assembly system and may be associated with at least one property, such as name, icon, color, etc. In some embodiments, the icon may mimic the appearance ofcorresponding assembly module 202. In this embodiment,user 1202 may provide values of properties ofgraphical assembly modules 3620 to configuregraphical assembly modules 3620 and/orcorresponding assembly modules 202. It is to be appreciated that additional functional components may be included ingraphical programming environment 3606 to facilitateuser 1202 to program the modular assembly system. -
FIGS. 37A-37B are screenshots of an example of a control application in accordance with an embodiment. InFIG. 37A , the screenshot represents an exemplary GUI ofvirtual handle 3610 andlighting controller 3612. AGUI element 3702 representsvirtual handle 3610 for the user to real-time control the movement direction (e.g., forward, backward, left, and right) ofmovement modules 318 of the modular assembly system. AGUI element 3704 allows the user to adjust the movement speed ofmovement modules 318. On the right side of the GUI,GUI elements lighting controller 3612.GUI element 3706 allows the user to control lighting oncontrol module 302, andGUI element 3708 allows the user to control lighting onmovement modules 318. InFIG. 37B , on the right side of the GUI, aGUI element 3710 representsgesture controller 3614 and allows the user to select one of the three predefined gestures that can be presented bycolor recognition module 316. -
FIG. 38 is a screenshot of another example of a control application in accordance with an embodiment. In this example, the screenshot represents an exemplary GUI of onebase function 3616 ofscript control environment 3604. As shown inFIG. 38 , aGUI element 3802 indicates that the selectedbase function 3616 is “Obstacle Avoidance.” AGUI element 3804 represents the assembly modules that are needed for the corresponding modular assembly system to perform the selected base function and the number of each type of assembly modules that are currently online. AGUI element 3806 allows the user to further modify or configure the selected base function, for example, by simulating the behavior of the modular assembly system. -
FIG. 39 is a flow chart illustrating an example of amethod 3900 for providing host instructions to controlmodule 302 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed.Method 3900 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown inFIG. 39 , as will be understood by a person of ordinary skill in the art. - Starting at 3902, host 204 may present a GUI having a first set of GUI elements and a second set of GUI elements to a user. The first set of GUI elements may allow the user to interactively control operation of the modular assembly system at runtime when the modular assembly system is on operation. The operation of the modular assembly system may include, for example, motion, lighting, and gesture. In one example, the first set of GUI elements may represent
runtime control environment 3602, which includesvirtual handle 3610,lighting controller 3612, andgesture controller 3614, as described above in detail. The second set of GUI elements may allow the user to designate a function or behavior corresponding to the modular assembly system. For example, the second set of GUI elements may representscript control environment 3604, which includespredefined base functions 3616 as described above in detail. - At 3904, host 204 may facilitate the user to select the first set of GUI elements or the second set of GUI elements. At 3906, host 204 may determine whether the first set of GUI elements or the second set of GUI elements is selected by the user. If the first set of GUI elements are selected, then at 3908, host 204 may dynamically generate a first set of host instruction, e.g., control instructions, based on the user's interactions with the first set of GUI elements for controlling the operation of the modular assembly system. At 3910, host 204 may transmit the generated first set of host instructions to control
module 302 of the modular assembly system at runtime when the modular assembly system is on operation. If the second set of GUI elements are selected, then at 3912, host 204 may obtain a second set of host instructions, e.g., programming instructions, based on the function or behavior designated by the user. At 3914, host 204 may transmit the obtained second set of host instructions to controlmodule 302 of the modular assembly system prior to the modular assembly system performs the function or behavior designated by the user. It is to be appreciated that the user may select both the first and second sets of GUI elements, and host 204 can generate and transmit both the first and second sets of host instructions in parallel or in sequence. -
FIGS. 40A-40B are screenshots of an example of a programming application in accordance with an embodiment. InFIG. 40A , the screenshot represents an exemplary GUI ofgraphical programming environment 3606.GUI elements GUI element 4002 represents the categories such as “Flow,” “Motion,” “Light,” “Sensor,” “Logic,” “Math,” and “Variable.”GUI element 4004 represents the available graphical statement blocks 3618 under the currently-selected category—“Flow.” As described above, graphical statements blocks 3618 may include parameters. The user can drag and drop desired graphical statement blocks 3618 into aGUI element 4006 to build a program. The values of the parameters of the selected graphical statement blocks 3618 can be inputted inGUI element 4006 as well. - For example,
FIG. 41 is a screenshot of an example of aprogram 4100 including graphical statement blocks in accordance with an embodiment. In this example,program 4100 starts with a “Start” graphical statement block.Program 4100 then sets the values of “ballpower” parameters of twopower modules 310 as “30” and “−30.” The next graphical statement block ofprogram 4100 indicates that the following graphical statement blocks are repeated.Program 4100 further includes a graphical statement block that instructsmovement modules 318 to stop without brake and graphical statement blocks that instruct all assembly modules to flash lights in the green color. In this example,program 4100 can achieve the following function or behavior: (1) the modular assembly robotic toy moves forward for one second with output power of 30 watt, while all the assembly modules flash the green lights; (2) after one second of idle time, switching the power output of the two movement modules to cause the modular assembly robotic toy to move backward for one second, while all the assembly modules flash the green lights; and (3) repeating (1) and (2) until the execution ofprogram 4100 is interrupted. - Returning back to
FIGS. 40A-40B , aGUI element 4008 representsgraphical assembly modules 3620 ofgraphical programming environment 3606. In this example,GUI element 4008 shows theicon 4010 of the modular assembly robotic toy, thename 4012 of the modular assembly robotic toy, and icons, names, and numbers of eachassembly module 202 of the modular assembly robotic toy. For example, aGUI element 4014 shows an icon ofcontrol module 302, aGUI element 4016 shows a field to input the name ofcontrol module 302, and aGUI element 4018 shows a field to select the color forcontrol module 302. AGUI element 4018 provides the similar presentation or selection formovement module 318. That is,GUI element 4008 allows the user to provide values to properties (e.g., icon, name, or color) of eachassembly module 202 of the modular assembly robotic toy or properties of the modular assembly robotic itself. In this embodiment, the icon of the modular assembly robotic toy and the icons of eachassembly module 202 mimic the appearances of corresponding modular assembly robotic toy andassembly modules 202, respectively. -
FIG. 42 is a flow chart illustrating another example of amethod 4200 for providing host instructions to controlmodule 302 in accordance with an embodiment. It will be described with reference to the above figures. However, any suitable circuit, logic, unit, or module may be employed.Method 4200 can be performed by any suitable circuit, logic, unit, or module that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown inFIG. 42 , as will be understood by a person of ordinary skill in the art. - Starting at 4202, host 204 may present a GUI, e.g.,
graphical programming environment 3606, including a set of first graphical representations and a set of second graphical representations. Each first graphical representation, e.g.,graphical statement block 3618, may correspond to a statement block including at least one parameter. Each second graphical representation, e.g.,graphical assembly module 3620, may correspond to oneassembly module 202 associated with at least one property, e.g., icon, name, or color. The set of first graphical representations may be grouped into categories, some of which relate to functions ofassembly modules 202, such as motion, lighting, or sensing. - At 4204, host 204 may facilitate the user to select at least one of the first graphical representations and provide values of the parameters for each selected graphical representation. The selection may be made by dragging-and-dropping the first graphical representations. In other words, the user may build the program in a visual and graphical manner. At 4206, host 204 may facilitate the user to provide values to the properties of the second graphical representations. That is, the user may customize the properties of
assembly modules 202. It is to be appreciated thathost 204 may perform 4204 and 4206 independently or in parallel. In some embodiments, the user may not be promoted to provide values to the properties of the second graphical representations. - At 4208, host 204 may generate a set of host instructions, e.g., programming instructions, based on the selected first and second graphical representations and values provided thereof. The host instructions may be, for example, source codes or intermediate codes. It is to be appreciated that in some embodiments, the host instructions may be generated based on the selected first graphical representation and values provided thereof, i.e., the program, but not based on the selected second graphical representations and values provided thereof. In other words, in some embodiments, the customization of properties of
assembly modules 202 via the second graphical representations may be used byhost 204, but not bycontrol module 302. At 4210, host 204 may transmit the generated set of host instructions to controlmodule 302 for controlling the operations ofassembly modules 202 of the modular assembly system. In this embodiment, the transmission may occur prior tocontrol module 302 is on operation. In some embodiments, host 204 may present a preview of the operations ofassembly modules 202 in accordance with the set of host instructions prior to the transmission. - Various embodiments can be implemented, for example, using one or more computer systems, such as
computer system 4300 shown inFIG. 43 . One ormore computer system 4300 can be used, for example, to implementmethod 2700 ofFIG. 27 ,method 2800 ofFIG. 28 ,method 3100 ofFIG. 31 ,method 3200 ofFIG. 32 ,method 3400 ofFIG. 34 ,method 3500 ofFIG. 35 ,method 3900 ofFIG. 39 , andmethod 4200 ofFIG. 42 , as well as event diagrams ofFIGS. 26, 29, 30, and 33 . For example,computer system 4300 can update firmware on and/or provide host instructions to a control module of a modular assembly system, according to various embodiments.Computer system 4300 can be any computer capable of performing the functions described herein. -
Computer system 4300 can be any well-known computer capable of performing the functions described herein.Computer system 4300 includes one or more processors (also called central processing units, or CPUs), such as aprocessor 4304.Processor 4304 is connected to a communication infrastructure or bus 4306. One ormore processors 4304 may each be a graphics processing unit (GPU). In an embodiment, a GPU is a processor that is a specialized electronic circuit designed to process mathematically intensive applications. The GPU may have a parallel structure that is efficient for parallel processing of large blocks of data, such as mathematically intensive data common to computer graphics applications, images, videos, etc. -
Computer system 4300 also includes user input/output device(s) 4303, such as monitors, keyboards, pointing devices, etc., that communicate with communication infrastructure 4306 through user input/output interface(s) 4302. -
Computer system 4300 also includes a main orprimary memory 4308, such as random access memory (RAM).Main memory 4308 may include one or more levels of cache.Main memory 4308 has stored therein control logic (i.e., computer software) and/or data.Computer system 4300 may also include one or more secondary storage devices ormemory 4310.Secondary memory 4310 may include, for example, ahard disk drive 4312 and/or a removable storage device or drive 4314.Removable storage drive 4314 may be a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup device, and/or any other storage device/drive.Removable storage drive 4314 may interact with aremovable storage unit 4318.Removable storage unit 4318 includes a computer usable or readable storage device having stored thereon computer software (control logic) and/or data.Removable storage unit 4318 may be a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, and/any other computer data storage device.Removable storage drive 4314 reads from and/or writes toremovable storage unit 4318 in a well-known manner. - According to an exemplary embodiment,
secondary memory 4310 may include other means, instrumentalities or other approaches for allowing computer programs and/or other instructions and/or data to be accessed bycomputer system 4300. Such means, instrumentalities or other approaches may include, for example, aremovable storage unit 4322 and aninterface 4320. Examples of theremovable storage unit 4322 and theinterface 4320 may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM or PROM) and associated socket, a memory stick and USB port, a memory card and associated memory card slot, and/or any other removable storage unit and associated interface. -
Computer system 4300 may further include a communication ornetwork interface 4324.Communication interface 4324 enablescomputer system 4300 to communicate and interact with any combination of remote devices, remote networks, remote entities, etc. (individually and collectively referenced by reference number 4328). For example,communication interface 4324 may allowcomputer system 4300 to communicate withremote devices 4328 over communications path 4326, which may be wired and/or wireless, and which may include any combination of LANs, WANs, the Internet, etc. Control logic and/or data may be transmitted to and fromcomputer system 4300 via communication path 4326. - In an embodiment, a tangible apparatus or article of manufacture comprising a tangible computer useable or readable medium having control logic (software) stored thereon is also referred to herein as a computer program product or program storage device. This includes, but is not limited to,
computer system 4300,main memory 4308,secondary memory 4310, andremovable storage units - Based on the teachings contained in this disclosure, it will be apparent to persons skilled in the relevant art(s) how to make and use embodiments of the present disclosure using data processing devices, computer systems and/or computer architectures other than that shown in
FIG. 43 . In particular, embodiments may operate with software, hardware, and/or operating system implementations other than those described herein. - It is to be appreciated that the Detailed Description section, and not the Summary and Abstract sections (if any), is intended to be used to interpret the claims. The Summary and Abstract sections (if any) may set forth one or more but not all exemplary embodiments of the present disclosure as contemplated by the inventor(s), and thus, are not intended to limit the present disclosure or the appended claims in any way.
- While the present disclosure has been described herein with reference to exemplary embodiments for exemplary fields and applications, it should be understood that the present disclosure is not limited thereto. Other embodiments and modifications thereto are possible, and are within the scope and spirit of the present disclosure. For example, and without limiting the generality of this paragraph, embodiments are not limited to the software, hardware, firmware, and/or entities illustrated in the figures and/or described herein. Further, embodiments (whether or not explicitly described herein) have significant utility to fields and applications beyond the examples described herein.
- Embodiments have been described herein with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined as long as the specified functions and relationships (or equivalents thereof) are appropriately performed. Also, alternative embodiments may perform functional blocks, steps, operations, methods, etc. using orderings different than those described herein.
- The breadth and scope of the present disclosure should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Claims (30)
1. A modular assembly toy system, comprising:
a plurality of assembly modules, each assembly module comprising at least one connection interface; and
one or more connectors, each connector configured to mechanically and electrically connect two of the plurality of assembly modules via the respective connection interfaces of the two assembly modules,
wherein the plurality of assembly modules include at least:
a control module comprising:
a control module communication unit configured to obtain a set of host instructions from one or more hosts, and
a control module processor configured to generate a set of operation instructions for control each assembly module based on at least the set of host instructions; and
an analyzing module comprising:
an analyzing module sensor configured to obtain a sensor signal,
an analyzing module processor configured to analyze the sensor signal to generate a first analyzing result, and
an analyzing module communication unit configured to transmit the sensor signal or the first analyzing result to at least one of the one or more hosts.
2. The system of claim 1 , wherein each connector comprises two open ends adapted to fitting into the connection interfaces of the two assembly modules, respectively.
3. The system of claim 1 , each assembly module is substantially ball-shaped.
4. The system of claim 1 , further comprising:
a bus formed upon the plurality of assembly modules being mechanically and electrically connected one another via the one or more connectors,
wherein each assembly module is electrically connected to the bus in parallel.
5. The system of claim 4 , wherein the bus is configured to transmit a power signal and a data signal between the plurality of assembly modules.
6. The system of claim 1 , further comprising the one or more hosts, wherein the one or more hosts comprise:
a control application configured to receive a first input from a user and generate, based on at least the first input, at least some of the set of host instructions at runtime when the control module is on operation; and
a programming application configured to receive a second input from a user and generate, based on at least the second input, at least some of the set of host instructions prior to the control module is on operation.
7. The system of claim 6 , wherein
the at least one of the one or more hosts is configured to transmit the sensor signal or the first analyzing result to a server via the Internet; and
the server comprises an analyzing application configured to analyze the sensor signal or the first analyzing result to generate a second analyzing result.
8. The system of claim 7 , wherein the second analyzing result is generated using an artificial intelligence approach.
9. The system of claim 7 , wherein the at least one of the one or more hosts is further configured to:
determine that the host is not operatively coupled to the server via the Internet, and
in response to determine that the host is not operatively coupled to the server via the Internet, invoke another analyzing application residing on the host to analyze the sensor signal or the first analyzing result to generate a third analyzing result.
10. The system of claim 1 , wherein the analyzing module communication unit is further configured to transmit the sensor signal or the first analyzing result to the at least one of the one or more hosts via wireless communication.
11. A toy assembly module, comprising:
at least one connection interface, each connection interface configured to mechanically and electrically connect to a connector and receive at least a power signal via the connector;
a sensor configured to obtain a sensor signal;
a processor, operatively coupled to the sensor and the at least one connection interface, configured to analyze the sensor signal to generate an analyzing result; and
a communication unit, operatively coupled to the processor, configured to transmit the sensor signal or the analyzing result to a host,
wherein at least one of the connection interface and the communication unit is configured to receive, from the host, a set of operation instructions generated based on at least the sensor signal or the analyzing result.
12. The assembly module of claim 11 , wherein communication unit is further configured to transmit the sensor signal or the analyzing result to the host via wireless communication.
13. The assembly module of claim 11 , wherein
the sensor includes a microphone configured to obtain a voice signal; and
the processor is configured to analyze the voice signal to generate a voice recognition result.
14. The assembly module of claim 11 , wherein
the sensor includes a camera configured to obtain an image signal; and
the processor is configured to analyze the image signal to generate an image recognition result.
15. The assembly module of claim 11 , wherein the set of operation instructions are generated based on another analyzing result, the another analyzing result generated based on the sensor signal or the analyzing result using an artificial intelligence approach by a server that is operatively coupled to the host via the Internet.
16. A modular assembly toy system, comprising:
a plurality of assembly modules, each assembly module being substantially ball-shaped, at least one of the assembly modules comprising at least one connection interface; and
one or more connectors, each connector configured to mechanically and electrically connect two of the plurality of assembly modules via the connection interface of one of the two assembly modules,
wherein the plurality of assembly modules include at least:
a control module comprising:
a communication unit configured to obtain a set of host instructions from one or more hosts, and
a processor configured to generate a set of operation instructions for each assembly module based on at least the set of host instructions; and
an actuation module comprising:
a set of propellers, and
a motor configured to drive the set of propellers based on at least the set of operation instructions for the actuation module generated by the processor.
17. The system of claim 16 , wherein
the control module further comprises a sensor configured to obtain a sensor signal indicative of attitude of the system at runtime when the actuation module is on operation; and
the processor is configured to generate the set of operation instructions for the actuation module based on at least the sensor signal.
18. The system of claim 16 , further comprising:
a bus formed upon the plurality of assembly modules being mechanically and electrically connected one another via the one or more connectors,
wherein each assembly module is electrically connected to the bus in parallel.
19. A modular assembly toy system, comprising:
a plurality of assembly modules, each assembly module comprising at least one connection interface and being substantially ball-shaped; and
one or more connectors, each connector configured to mechanically and electrically connect two of the plurality of assembly modules via the respective connection interfaces of the two assembly modules, each connector comprising two open ends adapted to fitting into the connection interfaces of the two assembly modules, respectively,
wherein the plurality of assembly modules include at least a control module comprising:
a communication unit configured to obtain a set of host instructions from one or more hosts, and
a processor configured to generate a set of operation instructions for each assembly module based on at least the set of host instructions.
20. The system of claim 19 , wherein the control module further comprises:
a physical switch configured to in response to an input from a user, interrupt and resume the obtaining of at least some of the set of host instructions or the generating of the set of operation instructions.
21. The system of claim 19 , wherein the plurality of assembly modules further include a power module comprising:
a power supply configured to generate a power signal for the plurality of assembly modules.
22. The system of claim 19 , wherein the plurality of assembly modules further include a color recognition module comprising:
a light sensor configured to obtain a light signal from an object; and
a processor configured to determine a color of the object based on at least the light signal.
23. The system of claim 19 , wherein the plurality of assembly modules further include a movement module that is substantially ball-shaped, the movement module comprising:
a motor configured to rotate the entirety of the movement module.
24. The system of claim 19 , wherein the plurality of assembly modules further include an infrared sensor module comprising:
an infrared transmitter configured to emit a first infrared beam to an object; and
an infrared receiver configured to obtain a second infrared beam reflected from the object.
25. The system of claim 19 , further comprising:
a bus formed upon the plurality of assembly modules being mechanically and electrically connected one another via the one or more connectors,
wherein each assembly module is electrically connected to the bus in parallel.
26. The system of claim 25 , wherein the bus is configured to transmit a power signal and a data signal between the plurality of assembly modules.
27. The system of claim 19 , further comprising the one or more hosts, wherein at least one of the one or more hosts is configured to:
encrypt firmware to be updated on the control module; and
transmit the encrypted firmware to the control module.
28. The system of claim 19 , further comprising the one or more hosts, wherein the one or more hosts comprise:
a control application configured to receive a first input from a user and generate, based on at least the first input, at least some of the set of host instructions at runtime when the control module is on operation; and
a programming application configured to receive a second input from a user and generate, based on at least the second input, at least some of the set of host instructions prior to the control module is on operation.
29. The system of claim 28 , wherein the first input includes at least one of:
a command received from a graphical user interface rendered by one of the one or more hosts;
a motion or gesture detected by a sensor on one of the one or more hosts; and
a voice detected by a microphone on one of the one or more hosts.
30. The system of claim 19 , further comprising:
the one or more hosts, wherein at least one of the one or more hosts is configured to:
communicate with the communication unit via wireless communication; and
communicate with a server via the Internet; and
the server configured to:
receive a sensor signal or a first analyzing result from the host;
analyze the sensor signal or the first analyzing result using an artificial intelligence approach to generate a second analyzing result; and
transmit the second analyzing result to the host.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/009,180 US20180311592A1 (en) | 2016-03-31 | 2018-06-14 | Modular assembly system |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201620271418.0 | 2016-03-31 | ||
CN201620271418.0U CN205752715U (en) | 2016-03-31 | 2016-03-31 | Attachment structure and apply the electronic installation of this attachment structure |
PCT/CN2016/104824 WO2017166816A1 (en) | 2016-03-31 | 2016-11-07 | Modular assembly system |
US15/601,664 US10010801B2 (en) | 2016-03-31 | 2017-05-22 | Connection structures of modular assembly system |
US16/009,180 US20180311592A1 (en) | 2016-03-31 | 2018-06-14 | Modular assembly system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/601,664 Continuation US10010801B2 (en) | 2016-03-31 | 2017-05-22 | Connection structures of modular assembly system |
Publications (1)
Publication Number | Publication Date |
---|---|
US20180311592A1 true US20180311592A1 (en) | 2018-11-01 |
Family
ID=59958449
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/601,664 Active US10010801B2 (en) | 2016-03-31 | 2017-05-22 | Connection structures of modular assembly system |
US15/601,672 Expired - Fee Related US10456699B2 (en) | 2016-03-31 | 2017-05-22 | Modular assembly system |
US15/601,648 Expired - Fee Related US10491380B2 (en) | 2016-03-31 | 2017-05-22 | Firmware of modular assembly system |
US15/601,634 Active 2037-04-13 US10846075B2 (en) | 2016-03-31 | 2017-05-22 | Host applications of modular assembly system |
US15/601,655 Active 2037-05-04 US10300399B2 (en) | 2016-03-31 | 2017-05-22 | Modules registration and status update of modular assembly system |
US16/009,180 Abandoned US20180311592A1 (en) | 2016-03-31 | 2018-06-14 | Modular assembly system |
Family Applications Before (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/601,664 Active US10010801B2 (en) | 2016-03-31 | 2017-05-22 | Connection structures of modular assembly system |
US15/601,672 Expired - Fee Related US10456699B2 (en) | 2016-03-31 | 2017-05-22 | Modular assembly system |
US15/601,648 Expired - Fee Related US10491380B2 (en) | 2016-03-31 | 2017-05-22 | Firmware of modular assembly system |
US15/601,634 Active 2037-04-13 US10846075B2 (en) | 2016-03-31 | 2017-05-22 | Host applications of modular assembly system |
US15/601,655 Active 2037-05-04 US10300399B2 (en) | 2016-03-31 | 2017-05-22 | Modules registration and status update of modular assembly system |
Country Status (1)
Country | Link |
---|---|
US (6) | US10010801B2 (en) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150089192A (en) * | 2014-01-27 | 2015-08-05 | 유니트러스트개발(주) | Power train system and built-up type toy having this |
US10010801B2 (en) * | 2016-03-31 | 2018-07-03 | Shenzhen Bell Creative Science and Education Co., Ltd. | Connection structures of modular assembly system |
EP3276875B1 (en) * | 2016-07-29 | 2020-02-19 | Nxp B.V. | Method and apparatus for updating an encryption key |
CN107146616B (en) * | 2017-06-13 | 2020-05-08 | Oppo广东移动通信有限公司 | Equipment control method and related product |
EP3476549A1 (en) * | 2017-10-27 | 2019-05-01 | Creaholic SA | Hardware module, robotic system, and method for operating the robotic system |
US20190143236A1 (en) * | 2017-11-13 | 2019-05-16 | Elenco Electronics, Inc. | Multi-dimensional snap connector for a snap-together electronic toy set |
CN108115686B (en) * | 2017-12-19 | 2021-02-09 | 北京可以科技有限公司 | Construction prompting method and system of modular device |
CN108326847B (en) * | 2017-12-19 | 2020-12-18 | 北京可以科技有限公司 | Correction method, correction system and control method of modular robot |
CN108326841B (en) * | 2017-12-19 | 2020-12-18 | 北京可以科技有限公司 | Modular robot and system, control method, construction prompting method and correction method for constructing modular robot |
CN108274458B (en) * | 2017-12-19 | 2020-12-18 | 北京可以科技有限公司 | Subunit module for building modular robot |
CN108356806B (en) * | 2017-12-19 | 2020-12-18 | 北京可以科技有限公司 | Modular robot control method and system |
US11331796B2 (en) * | 2018-02-12 | 2022-05-17 | Brain Corporation | Autonomous multi-tasking modular robotic system |
US10734759B2 (en) * | 2018-03-07 | 2020-08-04 | Xcelsis Corporation | Configurable smart object system with magnetic contacts and magnetic assembly |
JP7167473B2 (en) * | 2018-04-11 | 2022-11-09 | 株式会社ジェイテクト | motion support system |
CN108500967A (en) * | 2018-05-05 | 2018-09-07 | 深圳市越疆科技有限公司 | Control method, modular articulated robot and storage medium |
US10990357B2 (en) * | 2018-05-22 | 2021-04-27 | Vmware, Inc. | Application build automation |
CN108461991B (en) * | 2018-05-25 | 2023-08-08 | 山东交通学院 | Code editor who facilitates use |
WO2019239378A1 (en) * | 2018-06-15 | 2019-12-19 | Co-Robotics S.R.L. | A modular system and method for the making and/or prototype production of self-configuring systems |
US11024197B2 (en) * | 2018-08-10 | 2021-06-01 | Trashbots, Inc. | Robotics and computing learning platform with multi-level processing architecture |
JP7014101B2 (en) * | 2018-08-29 | 2022-02-01 | 日本電信電話株式会社 | Mobile robots, control methods and programs for mobile robots |
EP3905007A1 (en) * | 2018-10-15 | 2021-11-03 | Orcam Technologies Ltd. | Hearing aid systems and methods |
US10668398B2 (en) * | 2018-10-30 | 2020-06-02 | Joel Allen Schulz | Curiosity revealing or animating a shaped cavity |
JP2020069934A (en) * | 2018-10-31 | 2020-05-07 | トヨタ自動車株式会社 | vehicle |
US11470764B2 (en) | 2018-11-06 | 2022-10-18 | Droneseed Co. | Wide base capsular planting systems and methods |
WO2020121189A1 (en) * | 2018-12-14 | 2020-06-18 | Building Blocks Learning Solutions Pvt. Ltd | Modular robotic system and methods for configuring robotic module |
KR102231708B1 (en) * | 2019-01-16 | 2021-03-23 | 강동훈 | Remote control toy combined into blocks |
USD981440S1 (en) | 2019-03-13 | 2023-03-21 | Twitter, Inc. | Display screen with graphical user interface |
CN111823766B (en) * | 2019-04-15 | 2022-11-04 | 毕题斯贸易有限公司 | Pendulum unit and pendulum assembly |
CN112059983A (en) * | 2019-06-11 | 2020-12-11 | 中国航发商用航空发动机有限责任公司 | Method, device and computer readable medium for assembling workpiece |
CN110815210A (en) * | 2019-08-26 | 2020-02-21 | 华南理工大学 | Novel remote control method based on natural human-computer interface and augmented reality |
IT201900024481A1 (en) * | 2019-12-18 | 2021-06-18 | Fondazione St Italiano Tecnologia | CONFIGURABLE MODULAR ROBOT, CORRESPONDING PROCEDURE AND IT PRODUCT |
USD965075S1 (en) * | 2020-02-19 | 2022-09-27 | Wildflower Learning Tools, Llc | Stackable building block |
KR20210119709A (en) * | 2020-03-25 | 2021-10-06 | 한국과학기술연구원 | Module-type robot control system |
CN112071314B (en) * | 2020-07-31 | 2023-09-05 | 深圳市捷视飞通科技股份有限公司 | Voice control method, device, computer equipment and storage medium |
US11966232B2 (en) * | 2020-10-03 | 2024-04-23 | Viabot Inc. | Systems for setting and programming zoning for use by autonomous modular robots |
USD943680S1 (en) * | 2021-03-25 | 2022-02-15 | Peiyong Lin | Connecting ball |
JP7447864B2 (en) * | 2021-04-26 | 2024-03-12 | トヨタ自動車株式会社 | OTA master, method and program |
US20220374027A1 (en) * | 2021-05-20 | 2022-11-24 | Watts Innovations | Modular Vehicle Configuration Management System and Methods |
AU2022358350A1 (en) * | 2021-09-29 | 2024-03-14 | Abbott Diabetes Care Inc. | Mobile application updates for analyte data receiving devices |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6454624B1 (en) * | 2001-08-24 | 2002-09-24 | Xerox Corporation | Robotic toy with posable joints |
US7252572B2 (en) * | 2003-05-12 | 2007-08-07 | Stupid Fun Club, Llc | Figurines having interactive communication |
US20090023358A1 (en) * | 2007-07-17 | 2009-01-22 | Triple One Co., Ltd | Interactive toy control system |
US20110045736A1 (en) * | 2009-08-20 | 2011-02-24 | Charles Randy Wooten | Effect Generating Device in Response to User Actions |
US9155961B2 (en) * | 2009-05-28 | 2015-10-13 | Anki, Inc. | Mobile agents for manipulating, moving, and/or reorienting components |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999054015A1 (en) * | 1998-04-16 | 1999-10-28 | Creator Ltd. | Interactive toy |
DK175561B1 (en) * | 1999-01-11 | 2004-12-06 | Lego As | Toy building kit with system for transferring energy between building elements |
US6724894B1 (en) | 1999-11-05 | 2004-04-20 | Pitney Bowes Inc. | Cryptographic device having reduced vulnerability to side-channel attack and method of operating same |
US6443796B1 (en) | 2000-06-19 | 2002-09-03 | Judith Ann Shackelford | Smart blocks |
US6636781B1 (en) * | 2001-05-22 | 2003-10-21 | University Of Southern California | Distributed control and coordination of autonomous agents in a dynamic, reconfigurable system |
CA2448389A1 (en) * | 2001-05-25 | 2002-11-28 | Mike Dooley | Toy robot programming |
US6605914B2 (en) | 2001-08-24 | 2003-08-12 | Xerox Corporation | Robotic toy modular system |
US6575802B2 (en) * | 2001-08-24 | 2003-06-10 | Xerox Corporation | Robotic toy modular system with distributed program |
US7747352B2 (en) * | 2004-04-20 | 2010-06-29 | Massachusetts Institute Of Technology | Physical modeling system for constructing and controlling articulated forms with motorized joints |
WO2006044859A2 (en) * | 2004-10-19 | 2006-04-27 | Mega Brands International, Luxembourg, Zug Branch | Illuminated, three-dimensional modules with coaxial magnetic connectors for a toy construction kit |
US7683883B2 (en) | 2004-11-02 | 2010-03-23 | Pierre Touma | 3D mouse and game controller based on spherical coordinates system and system for use |
US20130019019A1 (en) | 2004-11-15 | 2013-01-17 | Peter Ar-Fu Lam | Cloud servicing system configured for servicing smart phone or touch pad circuit applications and consumer programmable articles |
SG149730A1 (en) | 2007-07-30 | 2009-02-27 | Molex Inc | Inverse coplanar electrical connector |
PL2918319T3 (en) * | 2007-10-11 | 2017-07-31 | Lego A/S | A toy construction system |
US8079890B2 (en) | 2008-02-26 | 2011-12-20 | Jsn, Inc. | Building block toy set |
US7942717B2 (en) * | 2008-12-15 | 2011-05-17 | Ting-Shuo Chou | Brick assembly with automatically recognizing connecting relationships |
KR101029758B1 (en) * | 2008-12-31 | 2011-04-19 | 노틸러스효성 주식회사 | A method for firmware updating in remote |
US8364309B1 (en) | 2009-07-14 | 2013-01-29 | Bailey Bendrix L | User-assisted robot navigation system |
US9472112B2 (en) * | 2009-07-24 | 2016-10-18 | Modular Robotics Incorporated | Educational construction modular unit |
US10177934B1 (en) * | 2009-09-04 | 2019-01-08 | Amazon Technologies, Inc. | Firmware updates inaccessible to guests |
WO2011068996A1 (en) * | 2009-12-04 | 2011-06-09 | Cryptography Research, Inc. | Verifiable, leak-resistant encryption and decryption |
US8221182B2 (en) * | 2009-12-16 | 2012-07-17 | Elenco Electronics, Inc. | Three-dimensional structures with electronic circuit paths and safety circuits |
DE102010062217B4 (en) | 2010-01-22 | 2018-11-22 | Kinematics Gmbh | Modular system with movable modules |
IL206008A0 (en) | 2010-05-27 | 2011-02-28 | Amir Meir Zilbershtain | Transmit receive interference cancellation |
CN101908989B (en) | 2010-08-16 | 2016-01-13 | 海尔集团公司 | A kind of control method of intelligent appliance |
CN102033764B (en) | 2010-11-30 | 2014-08-20 | 公安部第三研究所 | COS (Class of Service) firmware upgrading method of TF (T-Flash) card |
CN102563168A (en) | 2010-12-18 | 2012-07-11 | 西安迅腾科技有限责任公司 | Multi-gas-circuit gas pressure remote control system |
US8371894B1 (en) | 2011-12-23 | 2013-02-12 | LaRose Industries, LLC | Illuminated toy construction kit |
US9600443B2 (en) | 2012-01-30 | 2017-03-21 | International Business Machines Corporation | Tracking entities by means of hash values |
US20130217296A1 (en) | 2012-02-21 | 2013-08-22 | Addy Soentoro Widjaja | Modular toy system |
JP5984625B2 (en) * | 2012-10-31 | 2016-09-06 | ルネサスエレクトロニクス株式会社 | Semiconductor device and encryption key writing method |
US20140308872A1 (en) * | 2013-04-12 | 2014-10-16 | William Patrick Petillo | Toy building blocks |
CN104281527A (en) * | 2013-07-02 | 2015-01-14 | 英业达科技有限公司 | Computer system and operation method thereof |
JP5907937B2 (en) * | 2013-09-11 | 2016-04-26 | 京セラドキュメントソリューションズ株式会社 | Embedded system |
US9418229B2 (en) * | 2013-10-28 | 2016-08-16 | Disney Enterprises, Inc. | Firmware security |
KR20150074414A (en) * | 2013-12-24 | 2015-07-02 | 현대자동차주식회사 | Firmware upgrade method and system thereof |
US9120027B2 (en) | 2014-01-31 | 2015-09-01 | Zyrobotics, LLC | Toy controller for providing input to a computing device |
US9592443B2 (en) | 2014-03-11 | 2017-03-14 | Microsoft Technology Licensing, Llc | Data store for a modular assembly system |
US9370862B2 (en) * | 2014-06-12 | 2016-06-21 | Play-i, Inc. | System and method for reinforcing programming education through robotic feedback |
US9672756B2 (en) * | 2014-06-12 | 2017-06-06 | Play-i, Inc. | System and method for toy visual programming |
US10338191B2 (en) | 2014-10-30 | 2019-07-02 | Bastille Networks, Inc. | Sensor mesh and signal transmission architectures for electromagnetic signature analysis |
WO2016187517A1 (en) | 2015-05-20 | 2016-11-24 | Robo Technologies Gmbh | Connecting structures in a modular construction kit |
US10010801B2 (en) * | 2016-03-31 | 2018-07-03 | Shenzhen Bell Creative Science and Education Co., Ltd. | Connection structures of modular assembly system |
-
2017
- 2017-05-22 US US15/601,664 patent/US10010801B2/en active Active
- 2017-05-22 US US15/601,672 patent/US10456699B2/en not_active Expired - Fee Related
- 2017-05-22 US US15/601,648 patent/US10491380B2/en not_active Expired - Fee Related
- 2017-05-22 US US15/601,634 patent/US10846075B2/en active Active
- 2017-05-22 US US15/601,655 patent/US10300399B2/en active Active
-
2018
- 2018-06-14 US US16/009,180 patent/US20180311592A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6454624B1 (en) * | 2001-08-24 | 2002-09-24 | Xerox Corporation | Robotic toy with posable joints |
US7252572B2 (en) * | 2003-05-12 | 2007-08-07 | Stupid Fun Club, Llc | Figurines having interactive communication |
US20090023358A1 (en) * | 2007-07-17 | 2009-01-22 | Triple One Co., Ltd | Interactive toy control system |
US9155961B2 (en) * | 2009-05-28 | 2015-10-13 | Anki, Inc. | Mobile agents for manipulating, moving, and/or reorienting components |
US20110045736A1 (en) * | 2009-08-20 | 2011-02-24 | Charles Randy Wooten | Effect Generating Device in Response to User Actions |
Also Published As
Publication number | Publication date |
---|---|
US20170288976A1 (en) | 2017-10-05 |
US20170282089A1 (en) | 2017-10-05 |
US10456699B2 (en) | 2019-10-29 |
US10846075B2 (en) | 2020-11-24 |
US10491380B2 (en) | 2019-11-26 |
US10300399B2 (en) | 2019-05-28 |
US20170282091A1 (en) | 2017-10-05 |
US10010801B2 (en) | 2018-07-03 |
US20170285927A1 (en) | 2017-10-05 |
US20170286089A1 (en) | 2017-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10456699B2 (en) | Modular assembly system | |
EP3424108B1 (en) | Modular assembly toy system | |
US20170076194A1 (en) | Apparatuses, methods and systems for defining hardware-agnostic brains for autonomous robots | |
CN204695548U (en) | Take portable intelligent device as intelligent interactive system and the house robot system of control axis | |
CN105264452A (en) | Multi-purposed self-propelled device | |
US20140238762A1 (en) | Multi-purposed self-propelled device | |
JP2017530848A (en) | Interactive learning block | |
US20140015914A1 (en) | Remote robotic presence | |
WO2019064168A1 (en) | Assembly of a modular structure | |
CN108604404A (en) | infrared remote control method, terminal and device | |
CN106707834A (en) | Remote control equipment based on computer vision technology | |
CN106371455B (en) | A kind of intelligent interactive method and system | |
US20190232184A1 (en) | Modular Electronics System | |
WO2021212344A1 (en) | Fault management method and device for unmanned aerial vehicle, and storage medium | |
CN112516605B (en) | Modular assembly system | |
US20210247758A1 (en) | Teleoperation with a wearable sensor system | |
Rissanen et al. | Designing and implementing an intelligent Bluetooth-enabled robot car | |
EP2994804B1 (en) | Multi-purposed self-propelled device | |
KR102207517B1 (en) | Smart cube and method for operating the same | |
Xu et al. | Risk Analysis and Policy Enforcement of Function Interactions in Robot Apps | |
KR20230131742A (en) | Electronic device to create automation routines and the method for operating same | |
US20200285291A1 (en) | Low battery switchover | |
KR20240022945A (en) | Communication method using avatar of virtual space and apparatus of the same | |
KR20220138744A (en) | Elecronic device and method for sharing iot control information thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SHENZHEN BELL CREATIVE SCIENCE AND EDUCATION CO., Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:WANG, ZUOBING;LIAO, MEIYAN;QI, HONGBO;AND OTHERS;REEL/FRAME:046095/0575 Effective date: 20170517 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |