[go: up one dir, main page]

WO2025071755A1 - Techniques for controlling output components - Google Patents

Techniques for controlling output components Download PDF

Info

Publication number
WO2025071755A1
WO2025071755A1 PCT/US2024/040128 US2024040128W WO2025071755A1 WO 2025071755 A1 WO2025071755 A1 WO 2025071755A1 US 2024040128 W US2024040128 W US 2024040128W WO 2025071755 A1 WO2025071755 A1 WO 2025071755A1
Authority
WO
WIPO (PCT)
Prior art keywords
output
trajectory
component
movement
physical
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.)
Pending
Application number
PCT/US2024/040128
Other languages
French (fr)
Inventor
Ronak J. SHAH
Jeffrey D. Whitman
Glen A. Rhodes
Sijin Kim
Arto Kivila
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US18/619,651 external-priority patent/US20250110458A1/en
Application filed by Apple Inc filed Critical Apple Inc
Publication of WO2025071755A1 publication Critical patent/WO2025071755A1/en
Pending legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B15/00Systems controlled by a computer
    • G05B15/02Systems controlled by a computer electric
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/26Pc applications
    • G05B2219/2642Domotique, domestic, home control, automation, smart house

Definitions

  • a computer program product comprises one or more programs configured to be executed by one or more processors of an electronic device.
  • the one or more programs include instructions for, by a physical output component controller: receiving an output trajectory that includes a plurality of movement characteristics for a set of one or more movement components, wherein the output trajectory is generated by a coordinated trajectory planning component different from the physical output component controller; and after receiving the output trajectory: in accordance with a determination that a first set of one or more criteria is satisfied, causing movement of a movement component according to the plurality of movement characteristics of the output trajectory; and in accordance with a determination that a second set of one or more criteria is satisfied, wherein the second set of one or more criteria is different from the first set of one or more criteria, forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory.
  • Executable instructions for performing these functions are, optionally, included in a non-transitory computer-readable storage medium or other computer program product configured for execution by one or more processors. Executable instructions for performing these functions are, optionally, included in a transitory computer-readable storage medium or other computer program product configured for execution by one or more processors. DESCRIPTION OF THE FIGURES
  • FIG. l is a block diagram illustrating a compute system in accordance with some embodiments.
  • FIG. 3A-3C are block diagrams illustrating exemplary components of an electronic device for implementing a coordinated trajectory control scheme, in accordance with some embodiments.
  • FIG. 4A-4C are block diagrams illustrating exemplary functional component architectures for implementing trajectory control of output components, in accordance with some embodiments.
  • FIG. 6 is a communication flow diagram for controlling output trajectories, in accordance with some embodiments.
  • FIG. 7 is a flow diagram illustrating a method for controlling output components in accordance with some embodiments.
  • the methods disclosed herein can include one or more steps that are contingent upon one or more conditions being satisfied. It should be understood that a method can occur over multiple iterations of the same process with different steps of the method being satisfied in different iterations. A person having ordinary skill in the art would also understand that similar to a method with contingent steps, a system or computer readable storage medium can repeat the steps of a method as many times as needed to ensure that all of the contingent steps have been performed.
  • a method requires performing a first step upon a determination that a set of one or more criteria is met and a second step upon a determination that the set of one or more criteria is not met, a person of ordinary skill in the art would appreciate that the steps of the method are repeated until both conditions, in no particular order, are satisfied.
  • system or computer readable medium claims include instructions for performing one or more steps that are contingent upon one or more conditions being satisfied. Because the instructions for the system or computer readable medium claims are stored in one or more processors and/or at one or more memory locations, the system or computer readable medium claims include logic that can determine whether the one or more conditions have been satisfied without explicitly repeating steps of a method until all of the conditions upon which steps in the method are contingent have been satisfied.
  • the present disclosure utilizes numerical descriptors to organize elements without introducing numerous unique identifiers.
  • the terms “first,” “second,” “third,” etc. are utilized to differentiate between like elements.
  • numbering techniques are not used to be limiting, neither denote quantity nor order.
  • a first computing system could be termed a second computing system, and, without departing from the scope of the disclosure, the first computing system could be termed a computing system.
  • the first computing system and the second computing system are two separate references to the same computing system.
  • the first computing system and the second computing system can be distinct computing system of the same type of computing system or different type of computing systems.
  • a and/or B includes “A,” “B,” and “A and B.”
  • the present disclosure can include conditional language.
  • computing system 100 is illustrated through a block diagram, including a set of components.
  • computing system 100 is used for exemplary purposes and should not be construed as limiting to one type of computing system or to one computer architecture of a computing system. The methods herein can be performed by other computer architectures and other computing systems.
  • Computing system 100 can be any of various types of devices, including, but not limited to, a system on a chip, a server system, a personal computer system (e.g., a smartphone, a smartwatch, a wearable device, a tablet, a laptop computer, and/or a desktop computer), a sensor, or the like.
  • a single computing system is shown in FIG. 1, computing system 100 can also be implemented as two or more computing systems operating together.
  • computing system 100 is included, connected to, or in communication with a physical component for the purpose of modifying the physical component in response to an instruction.
  • an instruction is received by computing system 100, and in response to the instruction, computing system 100 modifies the physical component.
  • Computing system 100 can, but is not limited to, modify the following physical components: an acceleration control, a break, a gear box, a vacuum system, a motor, a pump, a refrigeration system, a steering control, a pump, a spring, a suspension system, a hinge, and/or a valve.
  • the physical component is modified via an algorithm, another computing system, an electric signal, and/or actuator.
  • computing system 100 includes one or more sensors.
  • computing system 100 is a sensor.
  • a sensor includes one or more components designed to obtain information about an environment.
  • a sensor can be configured to obtain information within its proximity, to obtain information through contact with the environment or an object within the environment, or to obtain information from a specified direction originating from the sensor.
  • Some exemplary sensor components include: a flow sensor, a force sensor, a temperature sensor, a time-of-flight sensor, a leak sensor, a level sensor, a light detection and ranging system, a gas sensor, a humidity sensor, an image sensor (e.g., a radar sensor, a camera sensor, and/or a LiDAR sensor), an angle sensor, a chemical sensor, a brake pressure sensor, a contact sensor, a non-contact sensor, an electrical sensor, an inertial measurement unit, a particle sensor, a photoelectric sensor, a position sensor (e.g., a global positioning system), a precipitation sensor, a pressure sensor, a proximity sensor, a radio detection and ranging system, a radiation sensor, a speed sensor (e.g., measures the speed of an object), a metal sensor, a motion sensor, a torque sensor, and an ultrasonic sensor.
  • a flow sensor e.g., a force sensor, a temperature sensor, a time-of-flight
  • a sensor includes a combination of multiple sensors.
  • sensor data is captured by fusing data from one sensor with data from one or more other sensors.
  • a sensor can include one or more components such as a sensing component (e.g., an image sensor or temperature sensor), a transmitting component (e.g., a laser or radio transmitter), a receiving component (e.g., a laser or radio receiver), or any combination thereof.
  • a sensing component e.g., an image sensor or temperature sensor
  • a transmitting component e.g., a laser or radio transmitter
  • a receiving component e.g., a laser or radio receiver
  • computing system 100 includes multiple subsystems that are connected to and in communication with each other.
  • interconnect 150 e.g., a system bus, one or more memory locations, or other communication channel for connecting multiple components of computing system 100
  • processor subsystem 110 can communicate with (e.g., wired and/or wirelessly) memory 120 (e.g., system memory, dynamic memory, and/or virtual memory) and I/O interface 130.
  • memory 120 e.g., system memory, dynamic memory, and/or virtual memory
  • multiple instances of processor subsystem 110 can be communicating via interconnect 150.
  • computing system 110 can communicate with additional components (e.g., I/O device 140) through I/O interface 130.
  • I/O interface 130 is included with I/O device 140 such that the two are a single component. It should be recognized that there can be one or more I/O interfaces, with each I/O interface communicating with one or more I/O devices.
  • Processor subsystem 110 enables computing system 100 to execute instructions to perform the exemplary disclosure laid out herein.
  • processor subsystem 110 can execute an operating system, a middleware system, one or more applications, or any combination thereof.
  • processor subsystem 110 includes one or more processors or processing units.
  • the instructions required to perform the operations described herein are stored in memory 120 (e.g., through a connected non-transitory or transitory computer readable medium).
  • Computing system 100 can use memory 120 to store (e.g., configured to store, assigned to store, and/or that stores) program instructions executable by processor subsystem 110.
  • memory 120 can store program instructions to implement the functionality associated with methods 800, 900, 1000, 11000, 12000, 1300, 1400, and 1500 described below.
  • Computing system 100 can utilize a variety of types of memory for storing instructions.
  • memory 120 can be implemented using different physical, non-transitory memory media, such as flash memory, random access memory (RAM-SRAM, EDO RAM, SDRAM, DDR SDRAM, RAMBUS RAM, or the like), hard disk storage, floppy disk storage, removable disk storage, read only memory (PROM, EEPROM, or the like), or the like.
  • computing system 100 is not limited to memory 120 for storage.
  • Computing system 100 can also include other forms of storage such as cache memory in processor subsystem 110 and non-processor storage through I/O interface 130 on VO device 140 (e.g., a hard drive, storage array, etc.).
  • instructions to be executed by processor subsystem 110 to perform operations described herein can be stored on these other forms of storage.
  • processor subsystem 110 (or each processor within processor subsystem 110) contains a cache or other form of on-board memory.
  • Computing system 100 utilizes I/O interface 130 to communicate with other devices.
  • interface 130 includes various types of interfaces configured to effectively communicate with other devices.
  • I/O interface 130 includes a bridge chip (e.g., Southbridge) from a front-side bus to one or more back-side buses.
  • computing system 100 includes one or more I/O interfaces.
  • I/O interface 130 is capable of communicating with one or more I/O devices (e.g., I/O device 140) via one or more corresponding buses or other interfaces.
  • I/O devices provide additional functionality to computing system 100 through the associate hardware components included in the I/O device.
  • I/O devices include: output devices (e.g., auditory, tactile, or visual) (e.g., speaker, light, screen, projector, or the like); network interface devices (e.g., to a local or wide-area network), sensor devices (e.g., camera, ultrasonic sensor, GPS, radar, LiDAR, inertial measurement device, or the like); and storage devices (removable flash drive, storage array, hard drive, optical drive, SAN, or their associated controller).
  • output devices e.g., auditory, tactile, or visual
  • network interface devices e.g., to a local or wide-area network
  • sensor devices e.g., camera, ultrasonic sensor, GPS, radar, LiDAR, inertial measurement device, or the like
  • storage devices removable flash drive, storage array, hard drive, optical drive, SAN, or their associated controller.
  • computing system 100 is communicating with a network via a network interface device (e.g., configured to communicate over Wi-Fi, Bluetooth, Ethernet, or the like). In some embodiments, computing system 100 is directly or wired to the network. In some embodiments, computing system 100 is connected to VO device 140 through a network connection (e.g., wired and/or wirelessly).
  • a network interface device e.g., configured to communicate over Wi-Fi, Bluetooth, Ethernet, or the like.
  • computing system 100 is directly or wired to the network.
  • computing system 100 is connected to VO device 140 through a network connection (e.g., wired and/or wirelessly).
  • computing system 100 includes an operating system to manage resources and hardware capabilities.
  • Computing system 100 is compatible with, but not limited to, the following types of operating systems: distributed operating systems (e.g., Advanced Interactive executive (AIX), batch operating systems (e.g., Multiple Virtual Storage (MVS)), time-sharing operating systems (e.g., Unix), network operating systems (e.g., Microsoft Windows Server), and real-time operating systems (e.g., QNX).
  • the operating system provides additional capabilities to computing system 100 such as various procedures, sets of instructions, software components, and/or drivers for controlling and managing general system tasks (e.g., memory management, storage device control, power management, or the like) and for facilitating communication between hardware and software components.
  • the operating system controls the order and timing of the tasks to be executed by processor subsystem 110 through a priority- based scheduler.
  • the priority assigned to a task is used to identify a next task to execute.
  • the highest priority task runs to completion unless another higher priority task is made ready.
  • the priority-based scheduler identifies a next task to execute when a previous task finishes executing.
  • computing system 100 includes a middleware system to provides one or more services and/or capabilities to applications (e.g., the one or more applications running on processor subsystem 110) outside of what the operating system offers (e.g., authentication, API management, data management, application services, messaging, or the like).
  • the middleware system can be configured to provide for implementation of commonly used functionality, message-passing between processes, package management, a heterogeneous computer cluster to provide hardware abstraction, low-level device control, or any combination thereof.
  • middleware systems include, but are not limited to, Robot Operating System (ROS), Lightweight Communications and Marshalling (LCM), PX4, and ZeroMQ.
  • the middleware system represents processes and/or operations using a graph architecture.
  • processing takes place in nodes that can receive, post, and multiplex state messages, planning messages, actuator messages, sensor data messages, control messages, and other messages.
  • the graph architecture can define an application (e.g., an application executing on processor subsystem 110 as described above) such that different operations of the application are included with different nodes in the graph architecture.
  • a publish-subscribe model is used to provide communication between a first node in a graph architecture to a second node in the graph architecture.
  • the first node publishes data on a channel in which the second node can subscribe.
  • the first node can store data in memory (e.g., memory 120 or some local memory of processor subsystem 110) and send an acknowledgement to the second node that the data has been stored in memory.
  • the first node provides a pointer (e.g., a memory pointer, such as an identification of a memory location) to the second node so that the second node can directly access the memory location where the first node stored the data.
  • FIG. 2 illustrates a block diagram of electronic device 200 with interconnected subsystems.
  • electronic device 200 includes three different subsystems (i.e., first subsystem 210, second subsystem 220, and third subsystem 230).
  • the subsystems of electronic device 200 are in communication with (e.g., wired or wirelessly) each other, and create a network (e.g., a storage area network, an enterprise internal private network, a campus area network, a personal area network, a local area network, a virtual private network, a wireless local area network, a metropolitan area network, a wide area network, a system area network, and/or a controller area network).
  • a network e.g., a storage area network, an enterprise internal private network, a campus area network, a personal area network, a local area network, a virtual private network, a wireless local area network, a metropolitan area network, a wide area network, a system area network, and/or a controller area network.
  • Each subsystem of electronic device 200 can be configured or designed with the computer architecture as described in FIG. 1 (i.e., computing system 100). Additionally, while in the illustrated embodiment electronic device 200 contains three subsystems, electronic device 200 can be configured with additional or fewer subsystems.
  • electronic device 200 includes alternative layouts or connectivity of electronic device 200’ s included subsystems. For example, first subsystem 210 connected to second subsystem 220 but not third subsystem 230, or second subsystem 220 connected to third subsystem 230 but not first subsystem 210.
  • electronic device 200’ s subsystems are electrically connected while additional subsystems are wireless connected to electronic device 200.
  • subsystems of electronic device 200 are configured to send messages between and receive messages from other subsystems of electronic device 200.
  • the subsystems can be configured to communicate wirelessly to the one or more computer systems outside of device 200.
  • one or more subsystems are wirelessly connected to one or more computer systems outside of device 200, such as a server system.
  • one or more subsystems of electronic device 200 are used to control, manage, and/or receive data from one or more other subsystems of electronic device 200 and/or one or more additional computer systems (e.g., electrically connected or remote from electronic device 200).
  • first subsystem 210 and second subsystem 220 can each be a camera that captures images
  • third subsystem 230 can use the captured images for decision making.
  • at least a portion of electronic device 200 functions as a distributed computer system. For example, a first portion of a task is executed by first subsystem 210 and a second portion of the task is executed by second subsystem 220.
  • electronic device 200 includes an enclosure that fully or partially houses electronic device 200’s subsystems (e.g., subsystems 210-230).
  • Potential enclosures include, but are not limited to, a head-mounted-display device, a smart display, a home-appliance device (e.g., a refrigerator or an air conditioning system), an accessory device, a smart phone, a smart watch, a robot (e.g., a robotic arm or a robotic vacuum), and a vehicle.
  • electronic device 200 is capable of navigating a physical environment with or without user input.
  • FIGS. 3A-3C illustrate exemplary components of an electronic device for implementing a coordinated trajectory control scheme, in accordance with some embodiments.
  • the components illustrated in FIGS. 3A-3C can be implemented in hardware, software, or a combination of both.
  • the components illustrated in FIGS. 3A-3C can be implemented via an electronic device (e.g., such as compute system 100, device 200, and/or an electronic device including one or more of the features described above with respect to compute system 100 and/or device 200).
  • the electronic device is one or more of (and/or includes one or more features of): a watch, a phone, a tablet, a fitness tracking device, a processor, a headmounted display (HMD) device, a home automation device (e.g., controller and/or hub), a communal device (e.g., a multi-user device), a media device, a motor electronic device, a wearable electronic device, an autonomous and/or semi -autonomous electronic device, a speaker, a television, a self-propelled device, and/or a personal computing device.
  • HMD headmounted display
  • a communal device e.g., a multi-user device
  • a media device e.g., a motor electronic device, a wearable electronic device, an autonomous and/or semi -autonomous electronic device, a speaker, a television, a self-propelled device, and/or a personal computing device.
  • the electronic device is in communication with one or more input devices (e.g., a communications receiving component, a camera, a depth sensor, a microphone, a hardware input mechanism, a rotatable input mechanism, a heart monitor, a temperature sensor, and/or a touch-sensitive surface) and/or one or more output devices (e.g., a communications transmission component, a light output component, a movement component, a display generation component, an audio generation component, a speaker, a haptic output device, a display screen, a projector, and/or a touch-sensitive display).
  • input devices e.g., a communications receiving component, a camera, a depth sensor, a microphone, a hardware input mechanism, a rotatable input mechanism, a heart monitor, a temperature sensor, and/or a touch-sensitive surface
  • output devices e.g., a communications transmission component, a light output component, a movement component, a display generation component, an audio generation component, a speaker, a
  • FIG. 3A illustrates block diagram 300 of an exemplary component architecture (e.g., of a device and/or system) for implementing a coordinated trajectory control scheme.
  • a coordinated trajectory control scheme enables a central component (e.g., trajectory coordination component 320) to coordinate output trajectories of multiple different output components (e.g., output component 350).
  • the multiple different output components are controlled by multiple different output controllers (e.g., including and/or similar to output component controller 340).
  • each of these output component controllers can operate independent of each other and/or the central component.
  • an output component controller can receive look-ahead trajectories for an output component and cause output to be performed according to the look- ahead trajectories, even if communication is lost between the central component and/or other output component controllers.
  • the output component controller can make decisions regarding output trajectories without (and/or while in) communication with the central component.
  • Providing look-ahead trajectories e.g., trajectories that can be performed without additional communications
  • enabling an output component controller to perform a trajectory without requiring further communications can (1) reduce the burden on communication resources by reducing demand on centralized resources to stream control signals to output components and/or (2) reduce the burden on communication resources by reducing traffic and/or bandwidth usage of communication infrastructure (e.g., communication mediums, buses, lines, networks, and/or cables).
  • communication infrastructure e.g., communication mediums, buses, lines, networks, and/or cables.
  • components of the network can be “animated” (e.g., perceived by a user, such as visually) and/or “coordinated” (e.g., performed in a synchronized, matching, and/or relative manner) based on trajectories.
  • components of a network include one or more “smart home” accessories for causing outputs, such as lighting and/or lighting controllers, windows, opacity controllers, hinged doors, sliding doors, garage doors, door locks, window panels, window shades, standing desks, reclining chairs, projectors, air conditioning, air vents, sprinklers, vacuums, lawnmowers, seasonal decorations, indoor lighting, and/or outdoor lighting.
  • the techniques described herein can be implemented by a smartphone coordinating and sending a trajectory to a home automation controller (e.g., a home hub, smart speaker, and/or or other multi-user device) that is paired with specific home accessories that can be controlled by the home automation controller (and/or the smartphone sending trajectories directly to such home accessories).
  • a home automation controller e.g., a home hub, smart speaker, and/or or other multi-user device
  • Block diagram 300 of FIG. 3A includes other components 310, which represents one or more additional functional components of the electronic device outside of the functional components illustrated in FIG. 3 A.
  • other components can include user interface components (e.g., display generation components, touchscreen displays, physical and/or virtual controls, input devices, and/or output devices), processors, memory, VO components, communications components, and/or other logical and/or architectural components.
  • other components 310 communicates with trajectory coordination component 320 (and/or other components described herein) via connection 312 (e.g., for exchanging input and/or output data).
  • input can be received via and/or provided by one or more components of other components 310 to trajectory coordination component 320 via connection 312.
  • trajectory coordination component 320 can determine, update, and/or otherwise perform an operation for a set of coordinated trajectories.
  • trajectory coordination component 320 provides data to other components (e.g., for updating a display generation component) via connection 312.
  • Block diagram 300 of FIG. 3A illustrates trajectory coordination component 320, which is also referred to herein as a “coordinated trajectory planning component.”
  • trajectory coordination component 320 is a component that determines trajectories for one or more output components of and/or in communication with the electronic device.
  • trajectory coordination component 320 determines output trajectories that are coordinated between different output components (e.g., of the same and/or different type).
  • An output trajectory is also referred to herein as a “trajectory,” a “physical trajectory,” a “physical output trajectory,” an “animation trajectory,” and/or an “animation output.”
  • an output trajectory is coordinated in time, position, speed, amplitude, mode, and/or output level with one or more other output trajectories (e.g., where the trajectories are subject to execution times that are configured to create the appearance of coordination between output components to an observer).
  • an output trajectory includes (and/or corresponds to) one or more target execution times.
  • the one or more target execution times indicate timing of one or more portions of the output trajectory. For example, the timing can specify when the output trajectory should begin being performed, when it should finish being performed, and/or when any intermediate operations within the trajectory should be performed (e.g., a transition point when light output should change color output).
  • trajectory coordination component 320 is implemented via one or more hardware components and/or one or more software components. In some embodiments, trajectory coordination component 320 is implemented as part of one or more other components (and/or includes one or more other components), such as: a user interface compute component and/or a scene controller (e.g., for processing and/or enforcing one or more scene definitions (e.g., a trigger, a condition, and/or timing) (e.g., a scene being a set of one or more trajectories (e.g., a predetermined set and/or procedurally generated set)).
  • scene definitions e.g., a trigger, a condition, and/or timing
  • a scene being a set of one or more trajectories (e.g., a predetermined set and/or procedurally generated set)).
  • trajectory coordination component 320 determines a set one or more trajectories (e.g., output and/or motion modes) for an output component (e.g., an object and/or a device (such as an actuator)) in response to user input, object input, and/or scene definition.
  • trajectory coordination component 320 determines a state of an object from a reported status (e.g., actuator is active and/or window is open).
  • trajectory coordination component 320 invokes a coordinated trajectory planning operation for an output component in communication with the electronic device.
  • trajectory coordination component 320 coordinates one or more animations across different objects and/or one or more output components in communication with the electronic device.
  • trajectory coordination component 320 replans one or more trajectories in response to feedback (e.g., from the output component and/or one or more other output components and/or from other components 310) using a coordinated trajectory planning operation (e.g., using scene definitions and/or coordinated trajectory policies to determine coordinated trajectories).
  • trajectory coordination component 320 provides trajectories (e.g., encoded trajectories) to system controller 330 via connection 322.
  • Block diagram 300 of FIG. 3 A illustrates system controller 330.
  • system controller 330 manages and/or provides data flow between components of the electronic device (e.g., between trajectory coordination component 320 and output component controller 340).
  • system controller 330 includes decoder component 330A (also referred to herein as a “trajectory decoding component”), which is a component for decoding output trajectories.
  • decoder component 330A can decode an encoded output trajectory received from trajectory coordination component 320 and then a decoded output trajectory 332 is provided (e.g., streamed and/or sent) to output component controller 340.
  • decoder component is implemented via one or more hardware components and/or one or more software components.
  • system controller 330 provides status information (e.g., data, feedback, and/or state information) to trajectory coordination component 320 (e.g., for use updating states and/or trajectories corresponding to one or more output components) via connection 324.
  • system controller 330 provides trajectories (e.g., encoded and/or decoded trajectories) to output component controller 340 via connection 332.
  • Block diagram 300 of FIG. 3 A illustrates output component controller 340 (also referred to herein as a “physical output component controller”).
  • output component controller 340 is a component (e.g., that controls a set of one or more physical output components) (e.g., implemented via one or more hardware components and/or one or more software components) of the electronic device.
  • output component controller 340 includes logic to control one or more output components (e.g., a mechanism, such as a collection of joints), arbitrate requests to trajectory coordination component 320, monitor safety conditions, and/or plan trajectories itself such as when trajectory coordination component 320 is offline (e.g., not responding and/or not reachable).
  • output component controller 340 is (and/or is part of and/or includes) a body controller.
  • output component controller 340 provides status information (e.g., data, feedback, and/or state information) to system controller 330 (e.g., and/or to trajectory coordination component 320) (e.g., for use updating states and/or trajectories corresponding to one or more output components) via connection 334.
  • output component controller 340 provides control signals (e.g., portions of trajectories (e.g., decoded trajectories)) to output component 350 via connection 342.
  • Block diagram 300 of FIG. 3A illustrates output component 350 (also referred to herein as a “physical output component”).
  • output component 350 is a component that is operable to and/or used to cause a physical output (e.g., physical movement, light output, sound output, haptic output, and/or opacity change).
  • output component 350 includes (or excludes) one or more controllers (e.g., an output component controller and/or a body controller).
  • output component controller 340 and output component 350 can be different functional components of the same physical component or of different physical components (e.g., that is in communication with (e.g., part of, connected to, coupled to, and/or controlled by) the electronic device)).
  • output component 350 includes (and/or is) a movement component. In some embodiments, output component 350 includes (and/or is) a non-movement component (e.g., a light and/or an opacity controller and/or device). In some embodiments, output component 350 provides status information (e.g., data, feedback, and/or state information) to output component controller 340 (e.g., and/or to trajectory coordination component 320) (e.g., for use updating states and/or trajectories corresponding to one or more output components) via connection 344.
  • status information e.g., data, feedback, and/or state information
  • output component controller 340 e.g., and/or to trajectory coordination component 320
  • connection 344 e.g., for use updating states and/or trajectories corresponding to one or more output components
  • block diagram 300 is embodied as (e.g., represents a portion and/or all of) an electronic device (e.g., 100 and/or 200).
  • output component 350 is a component of the electronic device.
  • output component 350 is external to the electronic device.
  • output component 350 is (and/or includes) one or more of a motor, a mechanical joint, a physical linkage, a light, and/or an opacity adjustment component (e.g., that controls opacity of a surface that transmits and/or passes light).
  • the electronic device includes a plurality of output component controllers as described above with respect to output component controller 340 (e.g., each connected to system controller 330 and one or more other output components as described herein with respect to output component 350).
  • block diagram 300 can include multiple output component controllers (e.g., 340).
  • the electronic device causes movement of a plurality of movement components (e.g., including the movement component) according to a plurality of movement characteristics of one or more output trajectories (e.g., including the output trajectory).
  • block diagram 300 can include multiple output components (e.g., 350).
  • FIG. 3B illustrates a detailed view of trajectory coordination component 320.
  • FIG. 3B illustrates functional components representing capabilities and/or features of trajectory coordination component 320.
  • trajectory coordination component 320 includes scene management component 320A that performs operations for implemented scenes.
  • a scene is (and/or includes, defines, and/or provides rules for) a set of one or more output trajectories.
  • a scene can be associated with an event representing when a user arrives back home daily from work, and include predetermined trajectories for a garage door (e.g., move from closed to open when the user pulls into a driveway), for an entry door (e.g., unlock and/or actuate to open the door), a set of indoor lights (e.g., linearly increase light brightness from 0% to 100% as the user walks through the entry door), and a smart speaker (e.g., begin playing back music and linearly increase volume from 0% to 30%).
  • a scene corresponds to a context, event, and/or other trigger.
  • the scene can automatically be triggered by a detected context (e.g., detecting that a user is arriving home), an event (e.g., user presses a control to announce they are arriving home), and/or another trigger such as user input.
  • trajectory coordination component 320 includes policy component 320B (also referred to herein as a “policy management component”) that performs operations for managing policies (also referred to herein as “trajectory policies,” “motion policies,” “animation policies,” and/or “output trajectory policies”).
  • policy management component also referred to herein as a “policy management component” that performs operations for managing policies (also referred to herein as “trajectory policies,” “motion policies,” “animation policies,” and/or “output trajectory policies”).
  • determining a set of output trajectories includes using a set of one or more motion policies that specify coordination (e.g., synchronization and/or relative timing of output) between output trajectories of the two or more output components.
  • trajectory coordination component 320 includes trajectory planner 320C (also referred to herein as an “animation planner”) for generating and/or coordinating output trajectories (e.g., to comply with a scene definition and/or an applicable policy), for example, as described above (and/or elsewhere herein).
  • trajectory planner 320C also referred to herein as an “animation planner” for generating and/or coordinating output trajectories (e.g., to comply with a scene definition and/or an applicable policy), for example, as described above (and/or elsewhere herein).
  • trajectory coordination component 320 While depicted as functional subcomponents of trajectory coordination component 320, scene management component 320A, policy component 320B, and/or trajectory planner 320C can be implemented as separate components and/or combined in any arbitrary way that enables the functionality described herein to be performed.
  • FIG. 3C illustrates a detailed view of output component controller 340.
  • FIG. 3C illustrates functional components representing capabilities and/or features of output component controller 340.
  • output component controller 340 includes main logic component 340A that performs operations for performing (and/or causing performance of, by one or more output components) output trajectories. For example, returning to the example of the scene associated with when a user arrives back home daily from work, output component controller 340 can control an output component for actuating to open (and/or close) an entry door.
  • output component controller 340 can apply control signals (e.g., via connection 342) to an output component that actuates a motor and mechanical linkage to physically move the entry door open.
  • output component controller 340 includes one or more subcomponent controller(s) 340B.
  • output component controller 340 can manage an output component that includes subcomponents that each have an associated trajectory and/or that require separate controller components for applying control signals (e.g., an output component that includes a movement component and a lighting component that are separately controllable).
  • subcomponents can be considered (and/or referenced herein) as a combined output component (e.g., controlled by output component controller 340 and subcomponent controlled s) 340B) and/or different output components (e.g., each controlled by a separate controller), however, either of such conceptions used should not be construed as limiting the actual physical implementation of such components.
  • output component controller 340 includes decoder component 340C.
  • decoder component 340C includes one or more of the features described above with respect to decoder component 330A.
  • output component controller 340 can receive encoded versions of trajectories and perform decoding (e.g., rather than system controller 330 performing decoding and streaming the decoded trajectory to output component controller 340).
  • an output trajectory is encoded and/or decoded in a form that can be ingested, interpreted, understood, used, executed, and/or applied by an output component and/or a controller in communication with the output component.
  • FIGS. 4A-4C illustrate exemplary functional component architectures for implementing trajectory control of output components, in accordance with some embodiments.
  • FIGS. 4A-4C are included to illustrate the flow of data between functional components and to illustrate exemplary groupings of functional components on different hardware components (e.g., each grouping on a hardware component) (and/or the same hardware component) (e.g., of one or more electronic devices).
  • FIG. 4A illustrates block diagram 400 of functional blocks for implementing control of output trajectories, in accordance with some embodiments.
  • functional architecture 400 includes user interface component 410 (e.g., including one or more other components 310 as described with respect to FIG. 3 A).
  • functional architecture 400 includes scene controller 420 (e.g., for performing the functions of scene management component 320A and/or policy component 320B of FIG. 3B).
  • functional architecture 400 includes trajectory planner 430 (e.g., for performing the functions of trajectory planner component 320C of FIG. 3B).
  • functional architecture 400 includes trajectory decoder 440 (e.g., for performing the functions of decoder component 330A of FIG.
  • FIG. 4A illustrates the flow of data between functional components.
  • scene controller 420 can provide visual and audio output 412 to user interface component 410 (e.g., for display and or output as audio, for example, to represent the state of the device and/or one or more output components).
  • scene controller 420 can receive feedback 424 from output component controller 450 (e.g., for managing scenes).
  • output component controller 450 e.g., for managing scenes.
  • trajectory planner 430 can receive animation definitions 422 from scene controller 420 (e.g., for use in generating and/or coordinating trajectories). As illustrated in FIG. 4 A, trajectory planner 430 can receive feedback 424 from output component controller 450 (e.g., for use in updating state data and/or generating trajectories). As illustrated in FIG. 4A, trajectory decoder 440 can receive encoded trajectory 432 from trajectory planner 430 (e.g., for decoding). As illustrated in FIG. 4A, output component controller 450 can receive trajectory points 442 from trajectory decoder 440 (e.g., as a stream).
  • FIG. 4B illustrates a first exemplary architecture for implementing the functional blocks of block diagram 400 of FIG. 4A, in accordance with some embodiments.
  • the functions of user interface component 410, scene controller 420, and trajectory planner 430 are implemented by the same component: user interface (UI) compute component 460.
  • UI compute component 460 performs one or more operations for managing user interfaces and/or user experiences with respect to an electronic device.
  • the functions of trajectory decoder 440 are implemented on system controller 470 (e.g., that includes one or more features as described above with respect to system controller 330 of FIG. 3A). In the example illustrated in FIG.
  • system controller 470 performs decoding of encoded trajectories, and streams trajectory points to body controller 480.
  • the functions of output component controller 450 are implemented on body controller 480 (e.g., that includes one or more features as described above with respect to output component controller 340 of FIG. 3 A and/or 3B).
  • body controller 470 receives decoded points (e.g., which are translated to control signals for controlling an output component).
  • decoded points e.g., which are translated to control signals for controlling an output component.
  • implementing the decoding functions at system controller 470 can reduce processing demand on the body controller (e.g., which otherwise might need to perform resource-intensive trajectory decoding that necessitates more complicated hardware and/or software resources).
  • FIG. 4C illustrates a second exemplary architecture for implementing the functional blocks of block diagram 400 of FIG. 4A, in accordance with some embodiments. Similar to FIG. 4B, FIG. 4C illustrates the functions of user interface component 410, scene controller 420, and trajectory planner 430 as implemented by UI compute component 460. As illustrated in FIG. 4C, system controller 470 functions as a gateway (e.g., intermediary, switch, and/or router) between UI compute component 460 and body controller 480, however, does not perform decoding functionality. As illustrated in FIG. 4C, the functions of trajectory decoder 440 are implemented on body controller 480. Similar to FIG. 4B, in FIG.
  • a gateway e.g., intermediary, switch, and/or router
  • the functions of output component controller 450 are implemented on body controller 480 (e.g., that includes one or more features as described above with respect to output component controller 340 of FIG. 3 A and/or 3B).
  • body controller 480 receives the trajectories in encoded form points, which are then decoded by body controller 480.
  • the encoded trajectories are provided by system controller 470 in a non-streamed manner (e.g., as a look-ahead trajectory that is in encoded form).
  • implementing the decoding functions at body controller 480 can reduce (and/or efficiently group) demand on a communication link between body controller 480 and system controller 470 (e.g., which would not need to provide real time streaming of trajectory points).
  • implementing the decoding functions at body controller 480 can reduce processing demand on a system controller (e.g., which otherwise might need to perform resource-intensive trajectory decoding for multiple output components within a short period (e.g., if a complicated scene is involved)).
  • FIGS. 5A-5C illustrate exemplary trajectories in accordance with some embodiments.
  • FIG. 5 A illustrates the form that an output trajectory can take as it makes moves between components of the architecture as described herein.
  • FIG. 5A illustrates encoded trajectory 510.
  • a trajectory is encoded by being represented as a parameterized curve (e.g., a parametric curve such as a Bezier curve).
  • trajectory coordination component 320 provides encoded trajectory 510 to decoder component 330A, which decodes it into decoded trajectory 520.
  • decoder component 330A As illustrated in FIG.
  • decoded trajectory 520 is a series of points (e.g., positions) that approximates (e.g., represents) a sampling of the parameterized curve (e.g., encoded trajectory 510).
  • decoded trajectory 520 is provided to output component controller 340 (e.g., as a stream of points). After receiving decoded trajectory 520, output component controller 340 can transform (e.g., transcode and/or translate) the trajectory into control signals for causing output at an output component.
  • output component controller 340 provides motor drive signals 530, for implementing the trajectory represented by encoded trajectory 510 and decoded trajectory 520. For example, as illustrated by motor drive signals 530 in FIG.
  • output component controller 340 can be connected to (e.g., and a controller of) a set of one or more output components (e.g., 350A, 350B, .... to 350/z).
  • FIGS. 5B-5C illustrate example trajectories in accordance with some embodiments.
  • FIG. 5B illustrates plot 550, which represents a jerk-limited output trajectory (e.g., a trajectory for a movement component that limits jerking movement).
  • jerking movement is movement that includes sudden changes in direction and/or acceleration that create “jerk” (e.g., high amplitude of acceleration).
  • a jerk-limited output trajectory is used where a path from current position to a target position is unknown (e.g., an electronic device is causing movement that relies on environmental feedback to reach a goal location). As illustrated in FIG.
  • a jerk limit (jmax) of a jerk function j(t), an acceleration limit (a ma x) of an acceleration function a(t), and a velocity limit (v ma x) of a velocity function v(t) can be used to determine a position trajectory (e.g., indicated by x(t)) in a manner that satisfies the corresponding limits. Reducing jerking motion can increase lifespan and/or reliability of output components and/or provide a better user experience.
  • FIG. 5C illustrates plot 560, which represents a Bezier curve output trajectory.
  • a Bezier curve output trajectory is a trajectory based on and/or created using one or more Bezier curve (e.g., a type of parametric curve) (e.g., a curve defined by a set of control points to create a smooth curve using a formula).
  • the Bezier curve output trajectory is created from four curves (Curve l, Curve_2, Curve_3, and Curve_4) that are arranged contiguously to form a trajectory.
  • each of the four curves is defined by control points (e.g., Po, Pi, P2, P3, P4, P5, Pe, P7, and/or Pg).
  • Bezier curve output trajectory is used as a trajectory for controlling light output of a lighting component.
  • output trajectories can include one or more of: a preset output trajectory (e.g., a predefined output trajectory), a manual motion output trajectory (e.g., an output trajectory created by user input (e.g., drawn and/or specified by user input)), and/or an acceleration limited output trajectory (e.g., a trajectory for a movement component that limits a characteristic of acceleration (e.g., rate of change of acceleration, maximum and/or minimum acceleration, and/or a fixed rate of acceleration)).
  • a preset output trajectory e.g., a predefined output trajectory
  • a manual motion output trajectory e.g., an output trajectory created by user input (e.g., drawn and/or specified by user input)
  • an acceleration limited output trajectory e.g., a trajectory for a movement component that limits a characteristic of acceleration (e.g., rate of change of acceleration, maximum and/or minimum acceleration, and/or a fixed rate of acceleration)).
  • FIG. 6 illustrates communication flow diagram 600 for controlling output trajectories, in accordance with some embodiments.
  • FIG. 7 is a flow diagram illustrating methods for controlling output components in accordance with some embodiments.
  • FIG. 8 is a flow diagram illustrating methods for controlling output components in accordance with some embodiments. The operations in FIG. 6 are used to illustrate the processes described below, including the processes in FIGS. 7 and 8.
  • the operations described with respect to communication flow diagram 600 can be performed by one or more components of an electronic device (e.g., compute system 100 and/or device 200).
  • the operations are performed by trajectory coordination component 320 (e.g., 320 of FIG. 3A), first output component controller 604A (e.g., 340 of FIG. 3A), and second output component controller 604B (e.g., 340 of FIG. 3 A).
  • trajectory coordination component 320 e.g., 320 of FIG. 3A
  • first output component controller 604A e.g., 340 of FIG. 3A
  • second output component controller 604B e.g., 340 of FIG. 3 A
  • the example illustrated by the operations in communication flow diagram 600 are presented in temporal progression from top to bottom (e.g., operations near top happen before operations near bottom in FIG. 6). It should be understood that some operations can occur in a different order than that which is illustrated in FIG. 6.
  • trajectory coordination component 320 receives input.
  • the input includes user input.
  • the input includes state data from one or more other components.
  • output component 606A provides state data to first output component controller 604 A at 612B
  • first output component controller 604A provides state data (e.g., the same and/or different than received at 612B) to trajectory coordination component 320 at 612A.
  • second output component controller 604B and output component 606B also provide state data to trajectory coordination component 320.
  • output component 606B provides state data to second output component controller 604B at 614B
  • second output component controller 604B provides state data (e.g., the same and/or different than received at 612B) to trajectory coordination component 320 at 614A.
  • user input includes one or more of: a tap input and/or a non-tap input.
  • user input includes one or more of: verbal input, an audible request, an audible command, an audible statement, a swipe input, a hold-and-drag input, a gaze input, an air gesture, rotation of a steering mechanism, and/or a mouse click.
  • user input includes one or more of: non-user input (e.g., data input received from another component, electronic device, and/or process that is not triggered by user input) (e.g., sensor, weather, user proximity, and/or user trip information (e.g., arriving at home or departing from home)).
  • non-user input e.g., data input received from another component, electronic device, and/or process that is not triggered by user input
  • user trip information e.g., arriving at home or departing from home
  • input includes data input (e.g., received data such as media, audio, video, policies, preferences, and/or environmental data), event data (e.g., an event generated by a processor, component, logic, and/or software of the electronic device), feedback data (e.g., a context, such as an environmental context, a subject context of a subject in an environment, and/or an operational context of a component) (e.g., data regarding an operational state of a component in communication with the electronic device, such as location, position, velocity, acceleration, and/or other status (e.g., open, closed, moving, obstructed, error, and/or communication status)), sensor data (e.g., data received from a sensor) (e.g., position, velocity, acceleration, force, visual, and/or audio) (e.g., of the electronic device, of a subject, and/or of a different electronic device (e.g., a wearable device, a companion device of the electronic device, an
  • data input includes weather data input (e.g., input regarding the current and/or forecasted weather at the current location, at another location, and/or along a route), proximity data input (e.g., proximity to a subject (e.g., user, person, and/or object)), and/or electronic device data input (e.g., data representing operations, settings, instructions, states, and/or communications from, and/or of, the electronic device and/or one or more other electronic devices).
  • weather data input e.g., input regarding the current and/or forecasted weather at the current location, at another location, and/or along a route
  • proximity data input e.g., proximity to a subject (e.g., user, person, and/or object)
  • electronic device data input e.g., data representing operations, settings, instructions, states, and/or communications from, and/or of, the electronic device and/or one or more other electronic devices.
  • input includes (and/or is detected in conjunction with) an indication (e.g., a command, a request, an instruction, an event, a trigger, and/or a condition occurring) that a coordinated set of output trajectories should be executed, generated, and/or output.
  • an indication e.g., a command, a request, an instruction, an event, a trigger, and/or a condition occurring
  • trajectory coordination component 320 determines a set of (e.g., one or more) coordinated output trajectories in response to detecting the input (e.g., one or more inputs). In some embodiments, trajectory coordination component 320 detects (and/or retrieves) one or more other inputs, in response to detecting a first input (e.g., user input). For example, the first input causes trajectory coordination component 320 to detect (and/or otherwise read, determine, and/or receive) input from one or more components (e.g., a sensor, a device, memory, and/or a controller). In some embodiments, trajectory coordination component 320 determines the set of coordinated output trajectories in conjunction with (e.g., after and/or in response to) receiving (e.g., detecting) the input at 610.
  • a first input e.g., user input
  • the first input causes trajectory coordination component 320 to detect (and/or otherwise read, determine, and/or receive) input from one or more components (e.g
  • trajectory coordination component 320 determines (e.g., calculates, retrieves, generates, and/or derives) a set of one or more trajectories and a set of one or more target execution times for output component 606A and output component 606B. For example, trajectory coordination component 320 determines a first output trajectory for first output component controller 604 A and a second output trajectory for second output component controller 604B. In some embodiments, the set of one or more target execution times are coordinated (e.g., generated so that output of separate output components occurs simultaneously, serially, and/or with respect a common clock).
  • determining the set of one or more trajectories includes determining (e.g., selecting and/or using) an applicable trajectory policy.
  • the first and second output trajectories can be generated to satisfy and/or based on rules in a trajectory policy that applies to the current operating states of the first and second output components (e.g., and/or other data relevant to determining a trajectory policy).
  • trajectory coordination component 320 determines a respective output trajectory (e.g., forming the set of two or more coordinated output trajectories) for output components (e.g., a trajectory for each output component) in a set of two or more output components. For example, trajectory coordination component 320 can generate additional output trajectories for other output components that are part of the same scene as the example in FIG. 6.
  • generating an output trajectory includes blending and/or merging predefined animations (e.g., jerk-limited, Bezier curves, preset, manual motion, and/or acceleration limited) to form a blended output trajectory (e.g., the first output trajectory for first output component controller 604 A, the second output trajectory for second output component controller 604B, and/or a different output trajectory).
  • predefined animations e.g., jerk-limited, Bezier curves, preset, manual motion, and/or acceleration limited
  • output trajectories coordinate output of one or more output components of the following: one or more display generation components (e.g., displays, screens, and/or projectors), one or more audio output components (e.g., speakers and/or amplifiers), one or more movement components (e.g., motors, linkages, and/or movable components that resist and/or absorb applied energy), one or more light output components (e.g., light controllers, light-emitting diodes (LEDs) and/or lightbulbs), and/or one or more opacity control components (e.g., for reducing and/or increasing light transmissivity of a medium).
  • display generation components e.g., displays, screens, and/or projectors
  • audio output components e.g., speakers and/or amplifiers
  • movement components e.g., motors, linkages, and/or movable components that resist and/or absorb applied energy
  • one or more light output components e.g., light controllers, light-emitting
  • trajectory coordination component 320 provides (e.g., transmits, passes, and/or sends) the first output trajectory to (and/or for) first output component controller 604A (e.g., via a system controller of the electronic device).
  • trajectory coordination component 320 provides the second output trajectory to second output component controller 604B.
  • transmitting an output trajectory includes transmitting the output trajectory via one or more communication paths (e.g., one or more dedicated and/or non-dedicated data buses) (e.g., wireless and/or wired).
  • an output trajectory and a corresponding target execution time are provided (e.g., via 622 A) to system controller 330, which then provides (e.g., via 622 A) the first output trajectory and the first target execution time to the first physical output component (e.g., output component 606A).
  • trajectory coordination component 320 provides one or more other trajectories to one or more other output components in the set of one or more output components that have output trajectories coordinated with the first and/or second output trajectories.
  • trajectory coordination component 320 e.g., and/or a UI component that includes trajectory coordination component 320
  • the output component controllers e.g., first output component controller 604 A and second output component controller 604B
  • body controller e.g., and/or a body controller that includes each or both
  • time coordinated e.g., via 802. IAS.
  • trajectory coordination component 320 can perform one or more time coordination operations directed to (e.g., for the purpose of, that results in, and/or that enables the other devices to perform) coordinating output trajectory execution (e.g., performance of and/or output of output trajectories by physical output components) (e.g., coordination between one or more output components (e.g., the first output component and/or the second output component) and/or between an output component and trajectory coordination component 320).
  • the one or more time coordination operations include operations as specified in, supported by, comporting to, compatible with, and/or for implementing the protocols in accordance with IEEE 802.
  • trajectory coordination component 320 provides a second output trajectory and a second target execution time via (e.g., 622B) a second network (e.g., the same or different from a first network used to provide (e.g., via 622 A) a first output trajectory) that includes one or more of ethernet-based communication and controller area network (CAN)-based communication.
  • ethernet-based communication is performed using operations as specified in, supported by, comporting to, compatible with, and/or for implementing the Ethernet protocols in accordance with IEEE 802.3.
  • CAN-based communication is performed using operations as specified in, supported by, comporting to, compatible with, and/or for implementing the CAN protocols in accordance with ISO 11898.
  • first output component controller 604 A optionally decodes the first output trajectory.
  • second output component controller 604B optionally decodes the second output trajectory.
  • a system controller e.g., 330 of FIG. 3A decodes (using decoder component 330A of FIG. 3A) one or more of the trajectories for the set of one or more output components.
  • the one or more trajectories are decoded before being received by first output component controller 604A and/or second output component controller 604B.
  • 622A and/or 622B can include an intermediate operation of decoding the respective first and second output trajectories so that first output component controller 604A and second output component controller 604B receive respective decoded versions of these trajectories.
  • decoding the output trajectory includes converting the output trajectory into data that can be used by (e.g., read by, parsed by, understood by and/or applied by) the physical output component controller and/or the movement component.
  • a decoded output trajectory includes a set of one or more positions, settings, values, locations, states, locations, and/or target execution times (e.g., that together define a path over time of an output according to the output trajectory).
  • first output component controller 604A checks state data and/or a set of one or more criteria to determine whether output according to the received first output trajectory can be performed. For example, first output component controller 604 A can determine that the first output trajectory is within the capabilities of output component 606 A and/or whether an error condition is occurring and/or is expected to occur (e.g., where an obstruction is present in a path of the first output trajectory).
  • second output component controller 604B checks state data and/or a set of one or more criteria (e.g., the same or different than criteria used by first output component controller 604A) to determine whether output according to the received second output trajectory can be performed.
  • second output component controller 604B can determine that the second output trajectory is within the capabilities of output component 606B and/or whether an error condition is occurring and/or is expected to occur (e.g., where an obstruction is present in a path of the second output trajectory).
  • first output component controller 604A in response to detecting an error condition (and/or another reason for not being able to cause output according to the respective output trajectory), transmits an indication of the error condition to trajectory coordination component 320 (e.g., as described below with respect to 662A).
  • first output component controller 604A in response to detecting an error condition (and/or another reason for not being able to cause output according to the respective output trajectory), transmits an indication of the error condition to trajectory coordination component 320 (e.g., as described below with respect to 662B).
  • an output trajectory includes one or more movement characteristics (e.g., velocity, acceleration, position, position goal (e.g., intermediate and/or end location), range of motion, and/or movement mode) for a set of one or more movement components.
  • movement characteristics e.g., velocity, acceleration, position, position goal (e.g., intermediate and/or end location), range of motion, and/or movement mode
  • first output component controller 604A and/or second output component controller 604B can check to determine that movement according to the movement characteristics is allowable (e.g., given operating windows and/or capability constraints).
  • an output component controller e.g., first output component controller 604A and/or second output component controller 604B causes movement of a movement component (e.g., output component 606A and/or output component 606B) according to (e.g., that matches, attempts to match, and/or is a best effort attempt to match)
  • a second set of one or more criteria is satisfied (e.g., with respect to and/or by the output trajectory and/or a portion thereof) (e.g., criteria indicating that movement according to the output trajectory cannot be performed in a manner that satisfies first set of one or more criteria) (e.g., different from the first set of one or more criteria)
  • an output controller e.g., first output component controller 604A and/or second output component controller 604B
  • the second set of one or more criteria is satisfied when the first set of one or more criteria is not satisfied.
  • the first set of one or more criteria includes a criterion that is satisfied in accordance with a determination that movement of the movement component according to the plurality of movement characteristics can be performed in a in a manner that satisfies a set of conditions and/or in a manner that will not (and/or is not expected to) cause an error condition.
  • movement in a manner that will not cause an error condition includes one or more of: movement that will not cause a collision (e.g., no obstructions are currently detected and/or expected), movement that is within an operating window of a movement component (e.g., is within a supported range of motion, is at a supported velocity, and/or uses (and/or is expected to use) a supported amount of force and/or power to move) and/or movement that is compatible with a current context (e.g., environmental context of the environment and/or operation context of the movement component).
  • a current context e.g., environmental context of the environment and/or operation context of the movement component.
  • the first set of one or more criteria includes a criterion that is satisfied in accordance with a determination that the movement component is capable (e.g., mechanically capable and/or electronically capable) of performing movement according to the plurality of movement characteristics (e.g., movement according to the plurality of movement characteristics requires one or more movements that are supported by and/or able to be performed by the movement component).
  • the movement component is capable of performing movement according to the plurality of movement characteristics if such movement that is within an operating window of a movement component (e.g., is within a supported range of motion, is at a supported velocity, and/or uses (and/or is expected to use) a supported amount of force and/or power to move).
  • first output component controller 604A optionally determines whether any updates (e.g., modifications, alternatives, changes, and/or ignoring) to the first output trajectory are needed.
  • the first output trajectory can be changed if first output component controller 604A determines that updates are needed based on one or more determinations (e.g., application of one or more criteria) (e.g., at 640A) with respect to state data (e.g., 654A) corresponding to output component 606A.
  • second output component controller 604B determines whether any updates (e.g., modifications, alternatives, changes, and/or ignoring) to the second output trajectory are needed.
  • the second output trajectory can be changed if second output component controller 604B determines that updates are needed based on one or more determinations (e.g., application of one or more criteria) (e.g., at 640B) with respect to state data (e.g., 654B) corresponding to output component 606B.
  • the operations at 650A and/or 650B are performed in response to detecting an error condition (e.g., after receiving state data and/or monitoring output (e.g., at 660A and/or 66B)).
  • an output component controller modifies the output trajectory to create a modified output trajectory (e.g., different from the output trajectory).
  • the modified output trajectory includes a modified plurality of movement characteristics different from the plurality of movement characteristics of the output trajectory (e.g., output component 606A and/or output component 606B).
  • the modified output trajectory is a new trajectory (e.g., not based on the trajectory received at 622A).
  • the output component controller modifies the output trajectory to create the modified output trajectory after beginning, while performing, and/or while pausing performing movement according to the output trajectory (e.g., modify the output trajectory after and/or while causing movement along the output trajectory).
  • the modified output trajectory can satisfy an applicable trajectory policy, and be used instead of the output trajectory (received from trajectory coordination component 320) to cause movement of the output component.
  • trajectory coordination component 320 after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria is satisfied, trajectory coordination component 320 causes movement of the movement component (e.g., output component 606A and/or 606B) according to a different timing (e.g., execution time) than a timing that corresponds to the output trajectory (e.g., moves slower or faster, begins at a different time, and/or ends at a different time) (e.g., the modified trajectory includes, is accompanied by, and/or is defined by modified target execution times).
  • trajectory coordination component 320 after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria is satisfied, trajectory coordination component 320 causes no movement of the movement component (e.g., forgoes causing movement of the movement component).
  • an output component controller (e.g., first output component controller 604A and/or second output component controller 604B) performs output according to a corresponding output trajectory when a trajectory coordination component is not reachable (e.g., is offline, is not responding (e.g., unintentionally and/or intentionally) (e.g., due to network issues, high bandwidth usage, network congestion and/or collision, high processor usage, physical connectivity issues, interference), and/or is no longer connected (e.g., connection lost and/or terminated) by the output component controller.
  • first output component controller 604 A can proceed with performing the first output trajectory (e.g., received via 622A) (and/or a modified output trajectory) in response to detecting an error condition.
  • an output component controller detects a safety condition (e.g., a collision and/or a pinch) and performs a responsive maneuver without (e.g., or before) communicating with trajectory coordination component 320.
  • a safety condition e.g., a collision and/or a pinch
  • a responsive maneuver without (e.g., or before) communicating with trajectory coordination component 320.
  • the second set of one or more criteria includes a criterion that is satisfied in accordance with a determination that an error condition (e.g., condition (e.g., state, flag, event, and/or warning) that indicates that a potentially unsafe condition has occurred, is occurring, will occur, and/or is likely to occur) exists (e.g., is currently detected and/or is expected to occur based on performing a current and/or prospective output trajectory).
  • condition e.g., state, flag, event, and/or warning
  • the output component controller determines a responsive output trajectory (e.g., responsive to the error condition) (e.g., a modified output trajectory) different from the output trajectory without communicating with (e.g., without exchanging (e.g., receiving and/or transmitting) a message, an instruction, and/or other data) trajectory coordination component 320.
  • a responsive output trajectory e.g., responsive to the error condition
  • a modified output trajectory e.g., a modified output trajectory
  • the responsive output trajectory causes (and/or otherwise allows) the first set of one or more criteria to be satisfied (e.g., the responsive output trajectory satisfies the first set of one or more criteria).
  • the output component controller causes the movement of the movement component according to movement characteristics of the responsive output trajectory.
  • first output component controller 604A provides control signals to output component 606 A to cause output according to the first output trajectory (e.g., if the first output trajectory satisfied applicable checks and/or criteria). For example, first output component controller 604A can apply motor control signals to output component 606A to cause movement according to the first output trajectory and/or apply light level controls to a circuit of a light output component to cause light output in accordance with the first output trajectory.
  • second output component controller 604B provides control signals to output component 606B to cause output according to the second output trajectory (e.g., if the second output trajectory satisfied applicable checks and/or criteria).
  • second output component controller 604B can apply motor control signals to output component 606B to cause movement according to the second output trajectory and/or apply light level controls to a circuit of a light output component to cause light output in accordance with the second output trajectory.
  • first output component controller 604A and/or second output component controller 604B perform their respective trajectories at a time offset (e.g., future time based on a target execution time).
  • first output component controller 604A receives state data from output component 606A.
  • the state data includes status information corresponding to output component 606 A (and/or one or more corresponding components, such as sensor monitoring output component 606A).
  • second output component controller 604B receives state data from output component 606B.
  • the state data includes status information corresponding to output component 606B (and/or one or more corresponding components, such as sensor monitoring output component 606B).
  • first output component controller 604A monitors output of output component 606A (e.g., using state data received at 654A). In some embodiments, first output component controller 604A (and/or trajectory coordination component 320) can use the state data to track trajectory, detect errors, and/or allocate resources (e.g., based on knowing when a component is busy and/or free).
  • second output component controller 604B monitors output of output component 606B (e.g., using state data received at 654B. In some embodiments, second output component controller 604B (and/or trajectory coordination component 320) can use the state data to track trajectory, detect errors, and/or allocate resources (e.g., based on knowing when a component is busy and/or free).
  • tracking trajectory includes tracking progress of an output component with respect to an output trajectory (e.g., comparing actual position to intended position at a particular time according to a movement trajectory being performed by a movement component).
  • detecting an error condition includes detecting that the progress of the output component does not match (e.g., satisfy and/or follow) (e.g., within a threshold tolerance) the output trajectory.
  • the tracking is performed while output according to the corresponding output trajectory is occurring.
  • the tracking is performed over time (e.g., at regular intervals, irregular intervals, and/or on demand (e.g., in response to an ad hoc request)).
  • first output component controller 604A e.g., at 660A
  • second output component controller 604B detect one or more error condition (e.g., corresponding to the respective output components controlled by each) and provide an indication of the error condition to trajectory coordination component 320.
  • first output component controller 604 A provides, to trajectory coordination component 320, an indication of an error condition (e.g., detected at 660A) corresponding to the output component 606A.
  • second output component controller 604B provides, to trajectory coordination component 320, an indication of an error condition (e.g., detected at 660B) corresponding to the output component 606B.
  • trajectory coordination component 320 determines that an update to the set of one or more trajectories is needed (e.g., including generating one or more modified trajectories). In some embodiments, a determination that an update is needed is based on state data received from one or more output components (e.g., at 662A and/or 662B). For example, trajectory coordination component 320 determines (at 670) updates to the first and second output trajectories in response to determining that an error condition exists at output component 606 A (e.g., and that output component 606 A needs a new output trajectory to compensate for the error and output component 606B needs a new output trajectory to maintain coordination with output component 606A).
  • trajectory coordination component 320 determines a modified trajectory for output component 606A (e.g., and output component 606B) based on feedback (e.g., an error or status) of output component 606B. In some embodiments, trajectory coordination component 320 determines a modified trajectory for output component 606B (e.g., and/or output component 606A) based on feedback (e.g., an error or status) of output component 606 A.
  • trajectory coordination component 320 can update the trajectory of output component 606B to slow down movement of output component 606B to match the movement speed of output component 606A (e.g., so that output component 606A and output component 606B appear to move in coordination).
  • trajectory coordination component 320 provides (e.g., transmits, passes, and/or sends) a modified first output trajectory to (and/or for) first output component controller 604A (e.g., via a system controller of the electronic device) (e.g., similar to as described with respect to 622A).
  • trajectory coordination component 320 provides a modified second output trajectory to second output component controller 604B (e.g., similar to as described with respect to 622B).
  • an output component controller receives a modified trajectory and begins to perform output based on the updated trajectory.
  • the modified trajectory is received while a prior output trajectory is still being performed.
  • second output component controller 604B receives a modified trajectory configured to cause output component 606B to slow down to match output component 606A.
  • the output component controller changes output based on (e.g., to match) the modified trajectory.
  • changing the output includes overriding current trajectory (e.g., replacing in whole).
  • changing the output includes or blending the modified trajectory with the current trajectory (e.g., to smoothly transition between them).
  • FIG. 7 is a flow diagram illustrating a method for controlling output components in accordance with some embodiments.
  • Method 700 is performed at an electronic device (e.g., 100 and/or 200). Some operations in method 700 are, optionally, combined, the orders of some operations are, optionally, changed, and some operations are, optionally, omitted.
  • method 700 provides an intuitive way for coordinating and controlling output components.
  • the method reduces the cognitive burden on a user for coordinating and controlling output components, thereby creating a more efficient humanmachine interface.
  • method 700 is performed at a coordinated trajectory planning component (e.g., 320, 430, and/or 460) (e.g., implemented via one or more hardware components and/or one or more software components) (e.g., a UI compute (e.g., 460) (e.g., including a scene controller (e.g., 320A and/or 420) and/or a coordinated trajectory planning component (e.g., 320 and/or 430)) and/or a scene controller (e.g., 320A and/or 420)) (e.g., to process and enforce one or more scene definitions used in certain contexts (e.g., in response to a trigger, a condition, and/or timing) (e.g., set one or more motion modes for a movement component (e.g., one or more actuator and/or motor) in response to user input, object input, and/or scene definition) (e.g., determine a state of an UI compute (e.g.
  • the coordinated trajectory planning component detects (702) (e.g., 610) (e.g., via the one or more input devices) a set of one or more inputs (e.g., 312, 324, 334, and/or 344).
  • the set of one or more inputs includes user input (e.g., a tap input and/or a non-tap input (e.g., a verbal input, an audible request, an audible command, an audible statement, a swipe input, a hold-and-drag input, a gaze input, an air gesture, rotation of a steering mechanism, and/or a mouse click)) and/or non-user input (e.g., data input received from another component, electronic device (e.g., 100 and/or 200), and/or process that is not triggered by user input).
  • user input e.g., a tap input and/or a non-tap input (e.g., a verbal input, an audible request, an audible command, an audible statement, a swipe input, a hold-and-drag input, a gaze input, an air gesture, rotation of a steering mechanism, and/or a mouse click)
  • non-user input e.g., data input received
  • the set of one or more inputs includes data input (e.g., received data such as media, audio, video, policies, preferences, and/or environmental data), event data (e.g., an event generated by a processor, component, logic, and/or software of the electronic device), feedback data (e.g., a context, such as an environmental context, a subject context of a subject in an environment, and/or an operational context of a component), and/or sensor data (e.g., position, velocity, acceleration, force, visual, and/or audio) (e.g., of the electronic device, of a subject, and/or of a different electronic device (e.g., a wearable device, a companion device of the electronic device, an electronic device of the subject, and/or another type of electronic device)).
  • data input e.g., received data such as media, audio, video, policies, preferences, and/or environmental data
  • event data e.g., an event generated by a processor, component, logic, and/or software of the electronic
  • the set of one or more inputs includes (and/or is detected in conjunction with) an indication (e.g., a command, a request, an instruction, an event, a trigger, and/or a condition occurring) that a coordinated set of output trajectories should be executed, generated, and/or output.
  • an indication e.g., a command, a request, an instruction, an event, a trigger, and/or a condition occurring
  • the coordinated trajectory planning component determines (704) (e.g., 620) (e.g., calculates, retrieves, generates, and/or derives), using (and/or in conjunction with (e.g., after and/or in response to) detecting) the set of one or more inputs, a set of two or more coordinated (e.g., having execution times that are generated with respect to each other and/or a common timing component and/or event) output trajectories (e.g., 510) (e.g., movement trajectories (e.g., of a movement component) and/or a trajectory of one or more operational settings (e.g., not necessarily movement) (e.g., a curve defining light output of a light component over time)) that include: (706) a first output trajectory (e.g., 510) for a first physical output component (e.g., 350, 350A, and/or 606A) (e.g., a component that is operable
  • a physical output component (e.g., 350, 350A, 350B, 606A, and/or 606B) includes (and/or is) a movement component.
  • a physical output component includes (and/or is) a non-movement component (e.g., a light and/or an opacity controller and/or device).
  • an output trajectory (e.g., of the two or more output trajectories) is encoded (e.g., coded in a form that can be ingested, interpreted, understood, used, executed, and/or applied by an output component (e.g., 350, 350A, 350B, 606A, and/or 606B) and/or a controller in communication with the output component).
  • an output trajectory is referred to as a physical output trajectory.
  • the second output trajectory is coordinated with the first output trajectory.
  • the second output trajectory is different from the first output trajectory.
  • the second output trajectory is the same as the first output trajectory.
  • the coordinated trajectory planning component provides (710) (e.g., transmits, passes, and/or sends) (e.g., 622A), to (and/or for) the first physical output component (e.g., 350, 350A, and/or 606A) (e.g., via a system controller of the electronic device (e.g., 100 and/or 200)) (e.g., via the one or more output devices), the first output trajectory (e.g., 510) and the first target execution time.
  • the first output trajectory and the first target execution time are provided to the system controller that provides the first output trajectory and the first target execution time to the first physical output component.
  • the coordinated trajectory planning component provides (712) (e.g., transmits, passes, and/or sends) (e.g., 622B), to (and/or for) the second physical output component (e.g., 350, 350B, and/or 606B) (e.g., via the system controller) (e.g., via the one or more output devices), the second output trajectory (e.g., 510) and the second target execution time.
  • transmitting an output trajectory includes transmitting the output trajectory via one or more communication paths (e.g., one or more dedicated and/or non-dedicated data buses) (e.g., wireless and/or wired).
  • transmitting a movement trajectory to a physical output component causes the physical output component to cause physical output to occur and/or change (e.g., at a target execution time).
  • the second output trajectory and the second target execution time are provided to the system controller that provides the second output trajectory and the second target execution time to the second physical output component.
  • the set of one or more inputs includes one or more user inputs (e.g., verbal input, gesture input, contact input, noncontact input, and/or other user input) (e.g., one or more inputs corresponding to a user).
  • the electronic device e.g., 100 and/or 200
  • the coordinated trajectory planning component e.g., 320 and/or 430
  • the electronic device detects one or more other inputs of the set of one or more inputs in response to detecting the one or more user input (e.g., a user input causes electronic device to detect (and/or otherwise read, determine, and/or receive) input from one or more components (e.g., a sensor, a device, memory, and/or a controller)).
  • a user input causes electronic device to detect (and/or otherwise read, determine, and/or receive) input from one or more components (e.g., a sensor, a device, memory, and/or a controller)).
  • the set of one or more inputs includes one or more non-user inputs (e.g., one or more inputs not corresponding to a user).
  • a non-user input (e.g., of the one or more non-user inputs) includes sensor data input (e.g., data received from a sensor), memory data input (e.g., data received and/or retrieved from memory), feedback data input (e.g., data regarding an operational state of a component in communication with the electronic device (e.g., 100 and/or 200), such as location, position, velocity, acceleration, status (e.g., open, closed, moving, obstructed, error, and/or communication status)), weather data input (e.g., input regarding the current and/or forecasted weather at the current location, at another location, and/or along a route), proximity data input (e.g., proximity to a subject (e.g., user, person, and/or object)), and/or electronic device data input (e.g., data representing operations, settings, instructions, states, and/or communications from, and/or of, the electronic device and/or one or more other electronic devices).
  • sensor data input e.
  • the first output trajectory (e.g., 510) is different from the second output trajectory.
  • the electronic device e.g., 100 and/or 200
  • the coordinated trajectory planning component determines respective output trajectories (e.g., the set of two or more coordinated output trajectories) for a set of two or more physical output components (e.g., 350, 350A, 350B, 606A, and/or 606B) (e.g., that includes first physical output component and the second physical output component) (e.g., the electronic device (and/or the coordinated trajectory planning component) generates the first output trajectory for the first physical output component (e.g., 350, 350A, and/or 606A)and generates the second output trajectory for the second physical output component).
  • determining the set of two or more coordinated output trajectories includes blending (e.g., combining, merging, and/or using characteristics of each of) a first predefined output trajectory (e.g., 510) and a second predefined output trajectory (e.g., 510) together to form a blended output trajectory (e.g., 510) (e.g., the first output trajectory, the second output trajectory, and/or a different output trajectory included in the set of two or more coordinated output trajectories).
  • blending e.g., combining, merging, and/or using characteristics of each of
  • a first predefined output trajectory e.g., 510
  • a second predefined output trajectory e.g., 510
  • the set of two or more coordinated output trajectories include one or more of: a jerk-limited output trajectory (e.g., 510 and/or 550) (e.g., a trajectory for a movement component (e.g., 350, 350A, 350B, 606A, and/or 606B) that limits jerking movement (e.g., sudden changes in direction and/or acceleration that create ) (e.g., where a path from current position to a target position is unknown)); a Bezier curve output trajectory (e.g., 510 and/or 560) (e.g., a trajectory for controlling light output of a lighting component) (e.g., a trajectory based on and/or created using one or more Bezier curve (e.g., a type of parametric curve) (e.g., a curve defined by a set of control points to create a smooth curve using a formula)); a preset output trajectory (e.g., 5
  • determining (e.g., 620) the set of two or more coordinated output trajectories includes using a set of one or more motion policies (e.g., 800) that specify coordination (e.g., synchronization) between output trajectories of the set of two or more coordinated output trajectories.
  • a motion policies e.g., 800
  • coordination e.g., synchronization
  • coordination between output trajectories includes one or more of: matching and/or changing one or more characteristics of output trajectories (e.g., components move and/or change output in the same way over the same period of time, such that they appear to move and/or change in unison) and/or coordinating execution times of output trajectories (e.g., when a corresponding output trajectory (e.g., 510) starts, moves, changes, and/or ends).
  • characteristics of output trajectories e.g., components move and/or change output in the same way over the same period of time, such that they appear to move and/or change in unison
  • execution times of output trajectories e.g., when a corresponding output trajectory (e.g., 510) starts, moves, changes, and/or ends).
  • the coordinated trajectory planning component detects a second set of one or more inputs (e.g., 312, 324, 334, and/or 344) corresponding to (e.g., received from, representing and/or including information about and/or directed to) the first physical output component (e.g., 350, 350A, and/or 606A)(e.g., feedback, sensor data, a state of the first physical output device, and/or other data).
  • the first physical output component e.g., 350, 350A, and/or 606A
  • the second set of one or more inputs includes user input (e.g., a tap input and/or a non-tap input (e.g., a verbal input, an audible request, an audible command, an audible statement, a swipe input, a hold- and-drag input, a gaze input, an air gesture, rotation of a steering mechanism, and/or a mouse click)) and/or non-user input (e.g., data input received from another component, electronic device (e.g., 100 and/or 200), and/or process that is not triggered by user input).
  • user input e.g., a tap input and/or a non-tap input (e.g., a verbal input, an audible request, an audible command, an audible statement, a swipe input, a hold- and-drag input, a gaze input, an air gesture, rotation of a steering mechanism, and/or a mouse click)
  • non-user input e.g., data input
  • the second set of one or more inputs includes data input (e.g., received data such as media, audio, video, policies, preferences, and/or environmental data), event data (e.g., an event generated by a processor, component, logic, and/or software of the electronic device), feedback data (e.g., a context, such as an environmental context, a subject context of a subject in an environment, and/or an operational context of a component), and/or sensor data (e.g., position, velocity, acceleration, force, visual, and/or audio) (e.g., of the electronic device, of a subject, and/or of a different electronic device (e.g., a wearable device, a companion device of the electronic device, an electronic device of the subject, and/or another type of electronic device)).
  • data input e.g., received data such as media, audio, video, policies, preferences, and/or environmental data
  • event data e.g., an event generated by a processor, component, logic, and/or software of the
  • the second set of one or more inputs includes (and/or is detected in conjunction with) an indication (e.g., a command, a request, an instruction, an event, a trigger, and/or a condition occurring) that a coordinated set of output trajectories should be executed, generated, and/or output.
  • an indication e.g., a command, a request, an instruction, an event, a trigger, and/or a condition occurring
  • the coordinated trajectory planning component determines (e.g., 670), using the second set of one or more inputs, an updated set of two or more coordinated output trajectories that is different from the set of two or more coordinated output trajectories.
  • the set of one or more coordination criteria is not satisfied when a coordination error occurs (e.g., has occurred, is occurring, and/or will occur) (e.g., the set of two or more coordinated output trajectories falls out of coordination due to, for example, capabilities of one or more physical components (e.g., failure or unexpected performance by the component), environmental factors (e.g., that causes and/or necessitates operation of the one or more physical output component in a different manner than a respective output trajectory (e.g., 510) of the set of one or more coordinated output trajectories), and/or other factors (e.g., any input and/or condition that can affect potential and/or actual performance of an output trajectory by the one or more physical output component)).
  • a coordination error e.g., has occurred, is occurring, and/or will occur
  • the set of two or more coordinated output trajectories falls out of coordination due to, for example, capabilities of one or more physical components (e.g., failure or unexpected performance by the
  • the electronic device detects (e.g., receives and/or determines) information (e.g., data, state, status, and/or message) used to determine whether the set of one or more coordination criteria is satisfied (and/or not satisfied) (e.g., coordination error and/or environmental factors are received from one or more sensors and/or physical output components (e.g., 350, 350A, 350B, 606A, and/or 606B)).
  • the coordinated trajectory planning component in response to (and/or after) determining the updated set of two or more coordinated output trajectories (and/or in response to (and/or after) detecting the second set of one or more inputs corresponding to the first physical output component), the coordinated trajectory planning component provides (e.g., 672 A and/or 627B), to at least one of the first physical output component and the second physical output component, an updated output trajectory (e.g., 510) (e.g., a data, state, status, and/or message) used to determine whether the set of one or
  • the electronic device in response to (and/or after) determining the updated set of two or more coordinated output trajectories (and/or in response to (and/or after) detecting the second set of one or more inputs corresponding to the first physical output component), the electronic device (and/or the coordinated trajectory planning component) provides, to the first physical output component, a first updated output trajectory of the updated set of two or more coordinated output trajectories.
  • the electronic device in response to (and/or after) determining the updated set of two or more coordinated output trajectories (and/or in response to (and/or after) detecting the second set of one or more inputs corresponding to the first physical output component), the electronic device (and/or the coordinated trajectory planning component) provides, to the second physical output component, a second updated output trajectory of the updated set of two or more coordinated output trajectories.
  • the second updated output trajectory is different from the first updated output trajectory.
  • the second updated output trajectory is different from the first updated output trajectory.
  • the first updated output trajectory corresponds to and/or is different from the first output trajectory.
  • the second updated output trajectory corresponds to and/or is different from the second output trajectory.
  • an updated output trajectory for the first physical output component depends on (e.g., has one more output characteristics that are selected, determined, and/or generated based on) the set of one or more inputs corresponding to the first physical output component (e.g., feedback from the first physical output component).
  • an updated output trajectory for the first physical output component depends on (e.g., has one more output characteristics that are selected, determined, and/or generated based on) the set of one or more inputs corresponding to the second physical output component (e.g., feedback from the second physical output component) (and/or one or more inputs corresponding to one or more other physical output components).
  • an updated output trajectory for the second physical output component depends on (e.g., has one more output characteristics that are selected, determined, and/or generated based on) the set of one or more inputs corresponding to the second physical output component (e.g., feedback from the second physical output component).
  • an updated output trajectory for the second physical output component depends on (e.g., has one more output characteristics that are selected, determined, and/or generated based on) the set of one or more inputs corresponding to the first physical output component (e.g., feedback from the first physical output component) (and/or one or more inputs corresponding to one or more other physical output components).
  • determining the updated set of two or more coordinated output trajectories is performed while at least a portion of the set of two or more coordinated output trajectories (e.g., the first output trajectory (e.g., 510) and/or the second output trajectory (e.g., 510)) is performed (e.g., as indicated by target execution times) (e.g., determining new and/or updated trajectories is performed while prior corresponding trajectories are being used by one or more output components (e.g., 350, 350A, 350B, 606A, and/or 606B) to cause output).
  • the first output trajectory e.g., 510
  • the second output trajectory e.g., 510
  • target execution times e.g., determining new and/or updated trajectories is performed while prior corresponding trajectories are being used by one or more output components (e.g., 350, 350A, 350B, 606A, and/or 606B) to cause output).
  • the updated set of two or more coordinated output trajectories includes: a third output trajectory (e.g., 510) (e.g., an update to the first output trajectory and/or a new output trajectory) for the first physical output component (e.g., 350, 350A, and/or 606A) different from the first output trajectory (e.g., 510) (and/or different from the second output trajectory).
  • the updated set of two or more coordinated output trajectories includes: a third target execution time (e.g., the same as or different from the first target execution time) (e.g., different from the first target execution time and/or the second target execution time).
  • providing the updated output trajectory (e.g., 510) of the updated set of two or more coordinated output trajectories includes providing (e.g., 672A), to the first physical output component (e.g., 606A) (e.g., and/or to and/or via the first physical output component controller (e.g., 604A)), at least one (and/or one) (and/or either) (and/or both) of the third output trajectory (e.g., if different from the first output trajectory and/or even if not different from the first output trajectory) and the third target execution time (e.g., if different from the first target execution time and/or even if not different from the first target execution time).
  • the third output trajectory e.g., if different from the first output trajectory and/or even if not different from the first output trajectory
  • the third target execution time e.g., if different from the first target execution time and/or even if not different from the first target execution time
  • the third target execution time replaces (e.g., is used instead of and/or in lieu of) the first target execution time.
  • the third output trajectory replaces (e.g., is used instead of and/or in lieu of) the first output trajectory.
  • the updated set of two or more coordinated output trajectories includes: a fourth output trajectory (e.g., 510) (e.g., an update to the second output trajectory and/or a new output trajectory) for the second physical output component (e.g., 350, 606A, and/or 606B) different from the second output trajectory (e.g., 510) (and/or different from the first output trajectory).
  • the updated set of two or more coordinated output trajectories includes a fourth target execution time (e.g., the same as or different from the second target execution time) (e.g., different from the first target execution time, the second target execution time, and/or the third target execution time).
  • providing the updated output trajectory of the updated set of two or more coordinated output trajectories includes providing (e.g., 672B), to the second physical output component (e.g., and/or to and/or via the second physical output component controller (e.g., 604B)), at least one (and/or one) (and/or either) (and/or both) of the fourth output trajectory (e.g., if different from the second output trajectory and/or even if not different from the second output trajectory) and the fourth target execution time (e.g., if different from the second target execution time and/or even if not different from the second target execution time).
  • the fourth output trajectory e.g., if different from the second output trajectory and/or even if not different from the second output trajectory
  • the fourth target execution time e.g., if different from the second target execution time and/or even if not different from the second target execution time
  • the fourth target execution time replaces (e.g., is used instead of and/or in lieu of) the second target execution time.
  • the fourth output trajectory replaces (e.g., is used instead of and/or in lieu of) the second output trajectory.
  • the coordinated trajectory planning component performs one or more time synchronization operations directed to (e.g., for the purpose of, that results in, and/or that enables the other devices to perform) coordinating output trajectory execution (e.g., performance of and/or output of output trajectories by physical output components (e.g., 350, 350A, 350B, 606A, and/or 606B)) (e.g., coordination between one or more output components (e.g., the first output component and/or the second output component) and/or between an output component and the coordinated trajectory planning component (e.g., 320 and/or 430)).
  • coordinating output trajectory execution e.g., performance of and/or output of output trajectories by physical output components (e.g., 350, 350A, 350B, 606A, and/or 606B)
  • coordinating output trajectory execution e.g., performance of and/or output of output trajectories by physical output components (e.g., 350, 350A, 350
  • the one or more time synchronization operations include operations as specified in, supported by, comporting to, compatible with, and/or for implementing the protocols in accordance with IEEE 802. IAS and/or any protocol for synchronizing timing over a network (e.g., local area network and/or wide area network).
  • the one or more time synchronization operations includes synchronizing with one or more physical output component controller (e.g., 340, 604A, and/or 604B) for respective physical output components (e.g., 350, 350A, 350B, 606A, and/or 606B) that correspond to a respective output trajectory of the set of two or more coordinated output trajectories.
  • one or more physical output component controller e.g., 340, 604A, and/or 604B
  • respective physical output components e.g., 350, 350A, 350B, 606A, and/or 606B
  • the one or more time synchronization operations includes synchronizing with a first physical output component controller for the first physical output component (e.g., 350, 350A, and/or 606A). In some embodiments, the one or more time synchronization operations includes synchronizing with a second physical output component controller (e.g., same as or different from the first physical output component controller) for the second physical output component (e.g., 350, 350B, and/or 606B).
  • a first physical output component controller for the first physical output component
  • the one or more time synchronization operations includes synchronizing with a second physical output component controller (e.g., same as or different from the first physical output component controller) for the second physical output component (e.g., 350, 350B, and/or 606B).
  • the coordinated trajectory planning component (e.g., 320 and/or 430) provides the first output trajectory (e.g., 510) and the first target execution time via a first network that includes one or more of ethernet-based communication and controller area network (CAN)-based communication.
  • the coordinated trajectory planning component provides the second output trajectory and the second target execution time via a second network (e.g., the same or different from the first network) that includes one or more of ethernet-based communication and controller area network (CAN)-based communication.
  • ethernet-based communication is performed using operations as specified in, supported by, comporting to, compatible with, and/or for implementing the Ethernet protocols in accordance with IEEE 802.3.
  • CAN-based communication is performed using operations as specified in, supported by, comporting to, compatible with, and/or for implementing the CAN protocols in accordance with ISO 11898.
  • the coordinated trajectory planning component (e.g., 320 and/or 430) provides the first output trajectory as a parameterized curve (e.g., 510, 550, and/or 560) (e.g., a first parameterized curve).
  • the coordinated trajectory planning component provides the second output trajectory as a second parameterized curve (e.g., different from the first parameterized curve).
  • the set of two or more coordinated output trajectories include output trajectories for one or more physical output components (e.g., 350, 350A, 350B, 606A, and/or 606B) of the following: one or more display generation components (e.g., displays, screens, and/or projectors); one or more audio output components (e.g., speakers and/or amplifiers); one or more movement components (e.g., motors, linkages, and/or movable components that resist and/or absorb applied energy); one or more light output components (e.g., light controllers, light-emitting diodes (LEDs) and/or lightbulbs); and one or more opacity control components (e.g., for reducing and/or increasing light transmissivity of a medium).
  • display generation components e.g., displays, screens, and/or projectors
  • audio output components e.g., speakers and/or amplifiers
  • movement components e.g., motors, linkages, and/
  • method 800 optionally includes one or more of the characteristics of the various methods described above with reference to method 700.
  • providing an output trajectory, by the coordinated trajectory planning component of process 700 can be to an output component of process 800.
  • FIG. 8 is a flow diagram illustrating a method for controlling output components in accordance with some embodiments.
  • Method 800 is performed at an electronic device (e.g., 100 and/or 200). Some operations in method 800 are, optionally, combined, the orders of some operations are, optionally, changed, and some operations are, optionally, omitted.
  • method 800 provides an intuitive way for coordinating and controlling output components.
  • the method reduces the cognitive burden on a user for coordinating and controlling output components, thereby creating a more efficient humanmachine interface.
  • method 800 is performed at a physical output component controller (e.g., 340, 604A, and/or 604B) (e.g., that controls a set of one or more physical output components (e.g., 350, 350A, 350B, 606A, and/or 606B)) (e.g., implemented via one or more hardware components and/or one or more software components) of an electronic device (e.g., 100 and/or 200) (e.g., a watch, a phone, a tablet, a fitness tracking device, a processor, a head-mounted display (HMD) device, a communal device, a media device, a motorized electronic device, a wearable electronic device, an autonomous and/or semi- autonomous electronic device, a speaker, a television, and/or a personal computing device).
  • a physical output component controller e.g., 340, 604A, and/or 604B
  • a set of one or more physical output components e.g., 350, 350A
  • the electronic device is in communication with one or more input devices (e.g., a communications receiving component, a camera, a depth sensor, a microphone, a hardware input mechanism, a rotatable input mechanism, a heart monitor, a temperature sensor, and/or a touch-sensitive surface) and/or one or more output devices (e.g., a communications transmission component, a light output component, a movement component, a display generation component, an audio generation component, a speaker, a haptic output device, a display screen, a projector, and/or a touch-sensitive display).
  • input devices e.g., a communications receiving component, a camera, a depth sensor, a microphone, a hardware input mechanism, a rotatable input mechanism, a heart monitor, a temperature sensor, and/or a touch-sensitive surface
  • output devices e.g., a communications transmission component, a light output component, a movement component, a display generation component, an audio generation component, a speaker, a
  • the physical output component controller includes logic to control one or more output components (e.g., a mechanism, such as a collection of joints), arbitrates requests to the coordinated trajectory planning component (e.g., 320 and/or 430), monitors safety conditions, and/or has the ability to plan own trajectories when the coordinated trajectory planning component is offline (e.g., not responding and/or not reachable).
  • the physical output component controller is (and/or is part of and/or includes) a body controller (e.g., 480 of FIG. 4B and/or 4C).
  • the physical output component controller receives (802) (e.g., via the one or more input devices) (e.g., 622A and/or 622B) an output trajectory (e.g., 510) (e.g., as described above with respect to method 700) (e.g., an output animation, an encoded animation, and/or a decoded animation) that includes a plurality of movement characteristics (e.g., velocity, acceleration, position, position goal (e.g., end point), range of motion, and/or movement mode) for a set of one or more movement components (e.g., 350, 606A, and/or 606B) (e.g., as described above with respect to method 700), wherein the output trajectory is generated by a coordinated trajectory planning component (e.g., 320 and/or 430) (e.g., as described above with respect to method 700) (e.g., UI compute component) (e.g., in communication with (e.g., part of, internal to
  • the physical output component controller causes (806) (e.g., via the one or more output devices) (e.g., 652A and/or 652B) movement of a movement component (e.g., 350, 606A, and/or
  • the movement component is a component of the electronic device. In some embodiments, the movement component is external to the electronic device. In some embodiments, the electronic device causes movement of a plurality of movement components (e.g., including the movement component) according to plurality of movement characteristics of one or more output trajectories (e.g., including the output trajectory).
  • the physical output component controller forgoes (808) causing movement of the movement component (e.g., 350, 606A, and/or 606B) according to the plurality of movement characteristics of the output trajectory (e.g., 510).
  • the electronic device after receiving the output trajectory (e.g., in response to and/or in conjunction with) (and/or during performance and/or execution of the output trajectory) and in accordance with a determination that the second set of one or more criteria is satisfied, causes movement of the movement component according to a set of one or more movement characteristics (e.g., not of the output trajectory) (e.g., causes a different movement) different from the plurality of movement characteristics of the output trajectory.
  • a set of one or more movement characteristics e.g., not of the output trajectory
  • the electronic device after receiving the output trajectory (e.g., in response to and/or in conjunction with) (and/or during performance and/or execution of the output trajectory) and in accordance with a determination that the second set of one or more criteria is satisfied, causes movement of the movement component according to a different timing (e.g., execution time) than a timing that corresponds to the output trajectory (e.g., moves slower or faster, begins at a different time, and/or ends at a different time).
  • a different timing e.g., execution time
  • the electronic device after receiving the output trajectory (e.g., in response to and/or in conjunction with) (and/or during performance and/or execution of the output trajectory) and in accordance with a determination that the second set of one or more criteria is satisfied, causes no movement of the movement component (e.g., forgoes causing movement of the movement component).
  • the second set of one or more criteria includes a first criterion (e.g., that is the only criterion or that is one of a plurality of criteria of the second set of one or more criteria) that is satisfied when the first set of one or more criteria is not satisfied.
  • a first criterion e.g., that is the only criterion or that is one of a plurality of criteria of the second set of one or more criteria
  • the first set of one or more criteria includes a second criterion that is satisfied in accordance with a determination that movement of the movement component (e.g., 350, 606A, and/or 606B) according to the plurality of movement characteristics can be performed in a manner that satisfies a set of conditions (e.g., a manner that will not (and/or is not expected to) cause an error condition).
  • a second criterion that is satisfied in accordance with a determination that movement of the movement component (e.g., 350, 606A, and/or 606B) according to the plurality of movement characteristics can be performed in a manner that satisfies a set of conditions (e.g., a manner that will not (and/or is not expected to) cause an error condition).
  • movement in a manner that satisfies the set of conditions includes one or more of: movement that will not cause a collision (e.g., no obstructions are currently detected and/or expected), movement that is within an operating window of a movement component (e.g., is within a supported range of motion, is at a supported velocity, and/or uses (and/or is expected to use) a supported amount of force and/or power to move) and/or movement that is compatible with a current context (e.g., environmental context of the environment and/or operation context of the movement component).
  • a current context e.g., environmental context of the environment and/or operation context of the movement component.
  • the first set of one or more criteria includes a third criterion (e.g., different from or the same as the first criterion and/or the second criterion) that is satisfied in accordance with a determination that the movement component (e.g., 350, 606A, and/or 606B) is capable (e.g., mechanically capable and/or electronically capable) of performing movement according to the plurality of movement characteristics (e.g., movement according to the plurality of movement characteristics requires one or more movements that are supported by and/or able to be performed by the movement component).
  • a third criterion e.g., different from or the same as the first criterion and/or the second criterion
  • the movement component is capable of performing movement according to the plurality of movement characteristics if such movement that is within an operating window of a movement component (e.g., is within a supported range of motion, is at a supported velocity, and/or uses (and/or is expected to use) a supported amount of force and/or power to move).
  • the physical output component controller modifies the output trajectory to create a modified output trajectory (e.g., 510) different from the output trajectory, wherein the modified output trajectory includes a modified plurality of movement characteristics different from the plurality of movement characteristics.
  • the physical output component controller e.g., 340, 604 A, and/or 604B modifies the output trajectory to create the modified output trajectory after beginning, while performing, and/or while pausing performing movement according to the output trajectory (e.g., modify the output trajectory after and/or while causing movement along the output trajectory).
  • the physical output component controller after receiving the output trajectory and in accordance with the determination that the second set of one or more criteria is satisfied, causes movement (e.g., after receiving the output trajectory and in accordance with the determination that the second set of one or more criteria is satisfied) of the movement component (e.g., 350, 606A, and/or 606B) according to the modified plurality of movement characteristics of the modified output trajectory.
  • the modified output trajectory causes (and/or otherwise allows) the first set of one or more criteria to be satisfied (e.g., the modified output trajectory satisfies the first set of one or more criteria).
  • the electronic device (e.g., 100 and/or 200) (and/or the physical output component controller) causes the movement of the movement component according to the modified plurality of movement characteristics of the modified output trajectory, in accordance with a determination that the first set of one or more criteria is satisfied (e.g., by the modified output trajectory and/or after determining the modified output trajectory).
  • the physical output component controller receives (e.g., directly and/or via one or more intermediary components) the output trajectory from the coordinated trajectory planning component (e.g., 320 and/or 430).
  • causing movement of the movement component e.g., 350, 606A, and/or 606B according to the plurality of movement characteristics of the output trajectory (and/or according to a plurality of movement characteristics of a modified output trajectory) is performed (e.g., is caused) while the coordinated trajectory planning component is not reachable (e.g., is offline, is not responding (e.g., unintentionally and/or intentionally) (e.g., due to network issues, high bandwidth usage, network congestion and/or collision, high processor usage, physical connectivity issues, interference), and/or is no longer connected (e.g., connection lost and/or terminated) to the physical output component controller).
  • the coordinated trajectory planning component e.g., is offline, is not responding (e.g., unintentionally and/or intentionally) (e.g., due to network issues, high bandwidth usage, network congestion and/or collision, high processor usage, physical connectivity issues, interference), and/or is no longer connected (e.g., connection lost and/or terminated) to the
  • the second set of one or more criteria includes a fourth criterion (e.g., different from or the same as the first criterion, the second criterion and/or the third criterion) that is satisfied in accordance with a determination that an error condition (e.g., a safety condition and/or condition (e.g., state, flag, event, and/or warning) that indicates that an unsafe condition has occurred, is occurring, will occur, and/or is likely to occur) exists (e.g., is currently detected and/or is expected to occur based on performing a current and/or prospective output trajectory).
  • a safety condition and/or condition e.g., state, flag, event, and/or warning
  • the physical output component controller determines a responsive output trajectory (e.g., responsive to the error condition) different from the output trajectory without communicating with (e.g., without exchanging (e.g., receiving and/or transmitting) a message, an instruction, and/or other data) the coordinated trajectory planning component (e.g., 320 and/or 430), wherein the responsive output trajectory includes a second plurality of movement characteristics different from the plurality of movement characteristics.
  • a responsive output trajectory e.g., responsive to the error condition
  • the coordinated trajectory planning component e.g., 320 and/or 430
  • the physical output component controller after receiving the output trajectory and in accordance with the determination that the second set of one or more criteria is satisfied, causes movement (e.g., after receiving the output trajectory and in accordance with the determination that the second set of one or more criteria is satisfied) (e.g., and without communicating with (and/or while continuing to not communicate with) the coordinated trajectory planning component) (e.g., while the second set of one or more criteria is and/or continues to be satisfied) of the movement component (e.g., 350, 606A, and/or 606B) according to the second plurality of movement characteristics of the responsive output trajectory.
  • the movement component e.g., 350, 606A, and/or 606B
  • the responsive output trajectory causes (and/or otherwise allows) the first set of one or more criteria to be satisfied (e.g., the responsive output trajectory satisfies the first set of one or more criteria).
  • the electronic device and/or the physical output component controller (e.g., 340, 604A, and/or 604B)) causes the movement of the movement component according to the second plurality of movement characteristics of the responsive output trajectory, in accordance with a determination that the first set of one or more criteria is satisfied (e.g., by the responsive output trajectory and/or after determining the responsive output trajectory).
  • the electronic device after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria ceases to be satisfied (e.g., a determination that the error condition ceases to be detected, has passed, and/or has been mitigated), the electronic device (and/or the physical output component controller) completes movement of the movement component according to the second plurality of movement characteristics of the responsive output trajectory. In some embodiments, after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria ceases to be satisfied, the electronic device (and/or the physical output component controller) ceases movement of the movement component according to the second plurality of movement characteristics of the responsive output trajectory.
  • the electronic device after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria ceases to be satisfied, determines a new output trajectory (e.g., based on a current context of the electronic device). In some embodiments, after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria ceases to be satisfied, the electronic device (and/or the physical output component controller) causes movement of a movement component according to the plurality of movement characteristics of the output trajectory (e.g., restarts, returns to, and/or begins the received output trajectory from the coordinated trajectory planning component).
  • the electronic device after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria ceases to be satisfied, determines a modified output trajectory (e.g., modified version of the responsive output trajectory, modified version of the output trajectory, a blended trajectory of two or more trajectories, and/or a modified version of another output trajectory).
  • a modified output trajectory e.g., modified version of the responsive output trajectory, modified version of the output trajectory, a blended trajectory of two or more trajectories, and/or a modified version of another output trajectory.
  • the output trajectory received (e.g., 612A and/or 612B) from the coordinated trajectory planning component (e.g., 320 and/or 430) is encoded.
  • the physical output component controller decodes (e.g., 630A and/or 630B) the output trajectory (e.g., into a decoded output trajectory (e.g., 332 and/or 520)).
  • the electronic device (e.g., 100 and/or 200) (and/or the physical output component controller (e.g., 340, 604A, and/or 604B)) causes movement of a movement component (e.g., 350, 606A, and/or 606B) according to the plurality of movement characteristics of the output trajectory after decoding the output trajectory.
  • decoding the output trajectory (e.g., into a decoded output trajectory (e.g., 332 and/or 520)) includes converting the output trajectory into data that can be used by (e.g., read by, parsed by, understood by and/or applied by) the physical output component controller and/or the movement component.
  • a decoded output trajectory includes a set of one or more positions, settings, values, locations, states, locations, and/or target execution times (e.g., that together define a path over time of an output according to the output trajectory).
  • the output trajectory is a first output trajectory.
  • the physical output component controller receives a second output trajectory (e.g., the same as or different from the first output trajectory) (e.g., 672A and/or 672B) that includes a third plurality of movement characteristics (e.g., the same as or different from the first and/or second plurality of movement characteristics) for the set of one or more movement components (e.g., 350, 606A, and/or 606B), wherein the second output trajectory is generated by the coordinated trajectory planning component (e.g., 320 and/or 430).
  • the physical output component controller receives the second output trajectory after receiving the output trajectory (e.g., and after causing movement according to the plurality of movement characteristics of the output trajectory) (e.g., and after forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory).
  • the physical output component controller after receiving the second output trajectory, in accordance with a determination that the first set of one or more criteria is satisfied (e.g., with respect to and/or by the second output trajectory), the physical output component controller causes movement of the movement component according to the third plurality of movement characteristics of the second output trajectory.
  • the physical output component controller after receiving the second output trajectory, in accordance with a determination that the second set of one or more criteria is satisfied (e.g., with respect to and/or by the second output trajectory), the physical output component controller forgoes causing movement of the movement component according to the third plurality of movement characteristics of the second output trajectory.
  • the second output trajectory is received while causing ongoing movement (e.g., is presently causing movement) of the movement component (e.g., 350, 606A, and/or 606B) (e.g., according to a movement trajectory) (e.g., according to the output trajectory, a responsive output trajectory, and/or another output trajectory).
  • the second output trajectory is an update to the output trajectory.
  • the second output trajectory is a new trajectory (e.g., different from the output trajectory).
  • causing movement of the movement component according to the third plurality of movement characteristics of the second output trajectory includes transitioning (e.g., overriding, changing over to, and/or blending together) (e.g., continuing movement without stopping or stopping for a moment (e.g., to change direction)) the ongoing movement of the movement component into movement of the movement component according to the third plurality of movement characteristics of the second output trajectory.
  • the physical output component controller before causing movement of the movement component (e.g., 350, 606A, and/or 606B) according to the plurality of movement characteristics of the output trajectory, receives a target execution time (e.g., a time offset from a particular time (e.g., according to a clock of the electronic device (e.g., 100 and/or 200) and/or another device) and/or a future time) for the output trajectory, wherein the first set of one or more criteria includes a fifth criterion (e.g., different from or the same as the first criterion, the second criterion, the third criterion, and/or the fourth criterion) that is satisfied in accordance with a determination that the target execution time occurs (e.g., is occurring, is about to occur, and/or has just occurred).
  • a target execution time e.g., a time offset from a particular time (e.g., according to a clock of the electronic device (e.g.,
  • the movement component (e.g., 350, 606A, and/or 606B) is a first movement component (e.g., 606A).
  • causing movement of the movement component according to the plurality of movement characteristics of the output trajectory includes coordinating the movement of the first movement component with a second movement component (e.g., 606B) different from the first movement component.
  • the physical output component controller e.g., 340, 604A, and/or 604B) coordinates the movement of the first movement component with the second movement component while causing (e.g., continuing to cause and/or after beginning to cause) the movement of the first movement component.
  • coordinating the movement of the first movement component includes providing (e.g., sending, transmitting, sharing, and/or communicating) state data (e.g., current state data) (e.g., data representing one or more of position, velocity, acceleration, output level, and/or opacity) corresponding to (e.g., during, describing, related to, and/or about) the movement of the first movement component.
  • state data e.g., current state data
  • opacity e.g., data representing one or more of position, velocity, acceleration, output level, and/or opacity
  • coordinating the movement of the first movement component includes receiving state data (e.g., current state data) (e.g., data representing one or more of position, velocity, acceleration, output level, and/or opacity) corresponding to (e.g., during, describing, related to, and/or about) the second movement component (e.g., and/or corresponding to movement of the second movement component).
  • state data e.g., current state data
  • coordinating the movement of the first movement component includes coordinating a beginning execution time, an intermediate execution time, and/or an ending execution time (e.g., of the output trajectory and/or any portion of the output trajectory).
  • coordinating the movement of the first movement component includes modifying a movement characteristic of the output trajectory based on (e.g., due to, in response to, and/or to match) the second movement component.
  • the physical output component controller (e.g., 340, 604A, and/or 604B) is a first physical output component controller (e.g., 604A).
  • the second movement component (e.g., 606B) is controlled by a second physical output component controller (e.g., 604B) different from the first physical output component controller (e.g., 604A).
  • coordinating the movement of the first movement component (e.g., 350, 606A, and/or 606B) with the second movement component (e.g., 350, 606A, and/or 606B) includes delaying (e.g., delaying a start of and/or pausing and delaying for a time) at least a portion of the movement of the first movement component according to the plurality of movement characteristics of the output trajectory based on a state corresponding to (e.g., received from and/or required to be received from (e.g., before continuing movement)) the second movement component.
  • method 700 optionally includes one or more of the characteristics of the various methods described above with reference to method 800.
  • receiving an output trajectory, by the output component of process 800 can be provided by the coordinated trajectory planning component of process 700. For brevity, these details are not repeated below.
  • this data can include personal data (e.g., demographic data, location-based data, telephone numbers, email addresses, home addresses, or any other identifying information) that uniquely identifies or can be used to contact or locate a specific person.
  • personal data e.g., demographic data, location-based data, telephone numbers, email addresses, home addresses, or any other identifying information
  • the present disclosure recognizes that the use of personal information data can enhance a user’s experience while using a computer system. For example, personal information data can be used for the benefit of users by changing how a computer system interacts with a user. Thus, enabling better user interactions. Additionally, other uses for personal information data that benefit the user are also contemplated by the present disclosure. [0165] The present disclosure further contemplates that the use of a user’s personal information data, in the present technology, impacts the user’s privacy. As well, that the entities responsible for the collection, analysis, disclosure, transfer, storage, or other use of such personal information data will comply with well-established privacy policies and/or privacy practices.
  • entities should only collect personal information data for reasonable and legitimate uses within the entity and should not be shared or sold to outside entities. Additionally, the collection of personal information data should only occur after receiving information consent from the target users. Further, once such personal information data has been obtained, entities should take necessary steps to secure the collected personal information data from improper access or use. Therefore, entities should ensure their practices follow their established privacy policies and procedures, either internally or through third party evaluations to certify their practices.
  • the present disclosure also ensures that the functionality of the disclosed embodiments is not rendered inoperable due to the lack of all or a portion of such personal information data.
  • the present disclosure considers embodiments that allow users to selectively block the use of, or access to, personal information data. Such inability to access personal information data can be provided through hardware components and/or software elements.
  • the present technology can be configured to allow users to select to “opt in” or “opt out” of participation in the collection of personal information data during registration for services.
  • the present disclosure is broadly directed to the use of personal information data in one or more various disclosed embodiments, the present disclosure also contemplates that the various embodiments can also be implemented without the use of such personal information data.
  • content can be displayed to users by inferring location based on non-personal information data or a bare minimum amount of personal information, such as the content being requested by the device associated with a user or other non-personal information.

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

The present disclosure generally relates to controlling output components. In some embodiments, the present disclosure is directed to techniques for controlling output components performed by a coordinated trajectory planning component and/or an output component controller.

Description

TECHNIQUES FOR CONTROLLING OUTPUT COMPONENTS
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application claims priority to U.S. Non-provisional Patent Application Serial No. 18/619,651, entitled “TECHNIQUES FOR CONTROLLING OUTPUT COMPONENTS," filed March 28, 2024, and to U.S. Provisional Patent Application Serial No. 63/541,763, entitled “TECHNIQUES FOR CONTROLLING OUTPUT COMPONENTS,” filed September 29, 2023, which are hereby incorporated by reference in their entireties for all purposes.
BACKGROUND
[0002] Electronic devices are becoming increasingly interconnected. For example, electronic devices (e.g., user devices and/or computer systems) are often connected to output components (e.g., a home accessory, a garage door, a speaker, a fan, and/or a thermostat) in the home or office. Carrying out operations via the output components sometimes involves performing output at multiple different output components simultaneously and/or with respect to the same trigger event. Controlling output of these different output components has become more difficult as the capabilities and operations of such output components have become more complicated. Accordingly, there is a need to improve techniques for controlling output components.
SUMMARY
[0003] Current techniques for controlling output components are generally ineffective and/or inefficient. For example, some techniques require users to manually configure output devices to coordinate outputs (e.g., which may not allow real-time feedback to dynamically adjust such outputs). This disclosure provides more effective and/or efficient techniques for controlling output components using an architecture for supporting coordinated trajectory planning with accessory devices in the home. It should be recognized that other architectures and/or computer systems can be used with techniques described herein. For example, controlling different output components of a smartphone can use techniques described herein. In addition, techniques optionally complement or replace other techniques for connecting electronic devices. [0004] In some embodiments, a method that is performed at a coordinated trajectory planning component of an electronic device is described. In some embodiments, the method comprises: detecting a set of one or more inputs; determining, using the set of one or more inputs, a set of two or more coordinated output trajectories that include: a first output trajectory for a first physical output component and a first target execution time for the first output trajectory; and a second output trajectory for a second physical output component and a second target execution time for the second output trajectory, wherein the second physical output component is different from the first physical output component; providing, to the first physical output component, the first output trajectory and the first target execution time; and providing, to the second physical output component, the second output trajectory and the second target execution time.
[0005] In some embodiments, a non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of an electronic device is described. In some embodiments, the one or more programs includes instructions for, by a coordinated trajectory planning component: detecting a set of one or more inputs; determining, using the set of one or more inputs, a set of two or more coordinated output trajectories that include: a first output trajectory for a first physical output component and a first target execution time for the first output trajectory; and a second output trajectory for a second physical output component and a second target execution time for the second output trajectory, wherein the second physical output component is different from the first physical output component; providing, to the first physical output component, the first output trajectory and the first target execution time; and providing, to the second physical output component, the second output trajectory and the second target execution time.
[0006] In some embodiments, a transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of an electronic device is described. In some embodiments, the one or more programs includes instructions for, by a coordinated trajectory planning component: detecting a set of one or more inputs; determining, using the set of one or more inputs, a set of two or more coordinated output trajectories that include: a first output trajectory for a first physical output component and a first target execution time for the first output trajectory; and a second output trajectory for a second physical output component and a second target execution time for the second output trajectory, wherein the second physical output component is different from the first physical output component; providing, to the first physical output component, the first output trajectory and the first target execution time; and providing, to the second physical output component, the second output trajectory and the second target execution time.
[0007] In some embodiments, an electronic device is described. In some embodiments, the electronic device comprises one or more processors and memory storing one or more programs configured to be executed by the one or more processors. In some embodiments, the one or more programs includes instructions for, by a coordinated trajectory planning component: detecting a set of one or more inputs; determining, using the set of one or more inputs, a set of two or more coordinated output trajectories that include: a first output trajectory for a first physical output component and a first target execution time for the first output trajectory; and a second output trajectory for a second physical output component and a second target execution time for the second output trajectory, wherein the second physical output component is different from the first physical output component; providing, to the first physical output component, the first output trajectory and the first target execution time; and providing, to the second physical output component, the second output trajectory and the second target execution time.
[0008] In some embodiments, an electronic device is described. In some embodiments, the electronic device comprises means for performing, by a coordinated trajectory planning component, each of the following steps: detecting a set of one or more inputs; determining, using the set of one or more inputs, a set of two or more coordinated output trajectories that include: a first output trajectory for a first physical output component and a first target execution time for the first output trajectory; and a second output trajectory for a second physical output component and a second target execution time for the second output trajectory, wherein the second physical output component is different from the first physical output component; providing, to the first physical output component, the first output trajectory and the first target execution time; and providing, to the second physical output component, the second output trajectory and the second target execution time.
[0009] In some embodiments, a computer program product is described. In some embodiments, the computer program product comprises one or more programs configured to be executed by one or more processors of an electronic device. In some embodiments, the one or more programs include instructions for, by a coordinated trajectory planning component: detecting a set of one or more inputs; determining, using the set of one or more inputs, a set of two or more coordinated output trajectories that include: a first output trajectory for a first physical output component and a first target execution time for the first output trajectory; and a second output trajectory for a second physical output component and a second target execution time for the second output trajectory, wherein the second physical output component is different from the first physical output component; providing, to the first physical output component, the first output trajectory and the first target execution time; and providing, to the second physical output component, the second output trajectory and the second target execution time.
[0010] In some embodiments, a method that is performed at a physical output component controller of an electronic device is described. In some embodiments, the method comprises: receiving an output trajectory that includes a plurality of movement characteristics for a set of one or more movement components, wherein the output trajectory is generated by a coordinated trajectory planning component different from the physical output component controller; and after receiving the output trajectory: in accordance with a determination that a first set of one or more criteria is satisfied, causing movement of a movement component according to the plurality of movement characteristics of the output trajectory; and in accordance with a determination that a second set of one or more criteria is satisfied, wherein the second set of one or more criteria is different from the first set of one or more criteria, forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory.
[0011] In some embodiments, a non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of an electronic device is described. In some embodiments, the one or more programs includes instructions for, by a physical output component controller: receiving an output trajectory that includes a plurality of movement characteristics for a set of one or more movement components, wherein the output trajectory is generated by a coordinated trajectory planning component different from the physical output component controller; and after receiving the output trajectory: in accordance with a determination that a first set of one or more criteria is satisfied, causing movement of a movement component according to the plurality of movement characteristics of the output trajectory; and in accordance with a determination that a second set of one or more criteria is satisfied, wherein the second set of one or more criteria is different from the first set of one or more criteria, forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory.
[0012] In some embodiments, a transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of an electronic device is described. In some embodiments, the one or more programs includes instructions for, by a physical output component controller: receiving an output trajectory that includes a plurality of movement characteristics for a set of one or more movement components, wherein the output trajectory is generated by a coordinated trajectory planning component different from the physical output component controller; and after receiving the output trajectory: in accordance with a determination that a first set of one or more criteria is satisfied, causing movement of a movement component according to the plurality of movement characteristics of the output trajectory; and in accordance with a determination that a second set of one or more criteria is satisfied, wherein the second set of one or more criteria is different from the first set of one or more criteria, forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory.
[0013] In some embodiments, an electronic device is described. In some embodiments, the electronic device comprises one or more processors and memory storing one or more programs configured to be executed by the one or more processors. In some embodiments, the one or more programs includes instructions for, by a physical output component controller: receiving an output trajectory that includes a plurality of movement characteristics for a set of one or more movement components, wherein the output trajectory is generated by a coordinated trajectory planning component different from the physical output component controller; and after receiving the output trajectory: in accordance with a determination that a first set of one or more criteria is satisfied, causing movement of a movement component according to the plurality of movement characteristics of the output trajectory; and in accordance with a determination that a second set of one or more criteria is satisfied, wherein the second set of one or more criteria is different from the first set of one or more criteria, forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory.
[0014] In some embodiments, an electronic device is described. In some embodiments, the physical output component controller of an electronic device comprises means for performing, by a physical output component controller, each of the following steps: receiving an output trajectory that includes a plurality of movement characteristics for a set of one or more movement components, wherein the output trajectory is generated by a coordinated trajectory planning component different from the physical output component controller; and after receiving the output trajectory: in accordance with a determination that a first set of one or more criteria is satisfied, causing movement of a movement component according to the plurality of movement characteristics of the output trajectory; and in accordance with a determination that a second set of one or more criteria is satisfied, wherein the second set of one or more criteria is different from the first set of one or more criteria, forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory.
[0015] In some embodiments, a computer program product is described. In some embodiments, the computer program product comprises one or more programs configured to be executed by one or more processors of an electronic device. In some embodiments, the one or more programs include instructions for, by a physical output component controller: receiving an output trajectory that includes a plurality of movement characteristics for a set of one or more movement components, wherein the output trajectory is generated by a coordinated trajectory planning component different from the physical output component controller; and after receiving the output trajectory: in accordance with a determination that a first set of one or more criteria is satisfied, causing movement of a movement component according to the plurality of movement characteristics of the output trajectory; and in accordance with a determination that a second set of one or more criteria is satisfied, wherein the second set of one or more criteria is different from the first set of one or more criteria, forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory.
[0016] Executable instructions for performing these functions are, optionally, included in a non-transitory computer-readable storage medium or other computer program product configured for execution by one or more processors. Executable instructions for performing these functions are, optionally, included in a transitory computer-readable storage medium or other computer program product configured for execution by one or more processors. DESCRIPTION OF THE FIGURES
[0017] For a better understanding of the various described embodiments, reference should be made to the Detailed Description below, in conjunction with the following drawings in which like reference numerals refer to corresponding parts throughout the figures.
[0018] FIG. l is a block diagram illustrating a compute system in accordance with some embodiments.
[0019] FIG. 2 is a block diagram illustrating a device with interconnected subsystems in accordance with some embodiments.
[0020] FIG. 3A-3C are block diagrams illustrating exemplary components of an electronic device for implementing a coordinated trajectory control scheme, in accordance with some embodiments.
[0021] FIG. 4A-4C are block diagrams illustrating exemplary functional component architectures for implementing trajectory control of output components, in accordance with some embodiments.
[0022] FIG. 5A-5C are diagrams illustrating exemplary trajectories in accordance with some embodiments.
[0023] FIG. 6 is a communication flow diagram for controlling output trajectories, in accordance with some embodiments.
[0024] FIG. 7 is a flow diagram illustrating a method for controlling output components in accordance with some embodiments.
[0025] FIG. 8 is a flow diagram illustrating a method for controlling output components in accordance with some embodiments.
DETAILED DESCRIPTION
[0026] The examples, descriptions, and elements disclosed within are laid out as potential embodiments to describe and expand on the claimed subject matter. It should be recognized that such examples and embodiments are not intended as limiting on the scope of the disclosure but instead are provided as a description of the claimed subject matter.
[0027] The methods disclosed herein can include one or more steps that are contingent upon one or more conditions being satisfied. It should be understood that a method can occur over multiple iterations of the same process with different steps of the method being satisfied in different iterations. A person having ordinary skill in the art would also understand that similar to a method with contingent steps, a system or computer readable storage medium can repeat the steps of a method as many times as needed to ensure that all of the contingent steps have been performed. For example, if a method requires performing a first step upon a determination that a set of one or more criteria is met and a second step upon a determination that the set of one or more criteria is not met, a person of ordinary skill in the art would appreciate that the steps of the method are repeated until both conditions, in no particular order, are satisfied.
[0028] Additionally, the methods described can be rewritten as repeating until each of the conditions described in the method are satisfied. This, however, is not required of system or computer readable medium claims where the system or computer readable medium claims include instructions for performing one or more steps that are contingent upon one or more conditions being satisfied. Because the instructions for the system or computer readable medium claims are stored in one or more processors and/or at one or more memory locations, the system or computer readable medium claims include logic that can determine whether the one or more conditions have been satisfied without explicitly repeating steps of a method until all of the conditions upon which steps in the method are contingent have been satisfied.
[0029] The present disclosure utilizes numerical descriptors to organize elements without introducing numerous unique identifiers. For example, the terms “first,” “second,” “third,” etc. are utilized to differentiate between like elements. However, such numbering techniques are not used to be limiting, neither denote quantity nor order. For example, a first computing system could be termed a second computing system, and, without departing from the scope of the disclosure, the first computing system could be termed a computing system. Additionally, in some embodiments, the first computing system and the second computing system are two separate references to the same computing system. Alternatively, in some embodiments, the first computing system and the second computing system can be distinct computing system of the same type of computing system or different type of computing systems. [0030] When describing particular embodiments within the present disclosure, the descriptions are enclosed for the purpose of providing clear examples and not for limiting purposes. The description of various embodiments and appended claims include the following singular terminology “a,” “an,” and “the.” However, such terminology is intended to include the plural forms as well, unless clearly stated otherwise. Additionally, the use of “and/or” should be understood as including any and all combinations of the associated listed elements. For example, “A and/or B” includes “A,” “B,” and “A and B.” The use of the terms “includes,” “including,” “comprises,” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
[0031] The present disclosure can include conditional language. When using the term “if,” it should be, optionally, construed to mean “when,” “upon,” “in response to determining,” “in response to detecting,” or “in accordance with a determination that” depending on the context. Additionally, when using the phrase “if it is determined” or “if [a stated condition or event] is detected” it should be, optionally, construed to mean “upon determining,” “in response to determining,” “upon detecting [the stated condition or event],” “in response to detecting [the stated condition or event],” or “in accordance with a determination that [the stated condition or event]” depending on the context.
[0032] At FIG. 1, computing system 100 is illustrated through a block diagram, including a set of components. In the present disclosure, computing system 100 is used for exemplary purposes and should not be construed as limiting to one type of computing system or to one computer architecture of a computing system. The methods herein can be performed by other computer architectures and other computing systems. Computing system 100 can be any of various types of devices, including, but not limited to, a system on a chip, a server system, a personal computer system (e.g., a smartphone, a smartwatch, a wearable device, a tablet, a laptop computer, and/or a desktop computer), a sensor, or the like. Although a single computing system is shown in FIG. 1, computing system 100 can also be implemented as two or more computing systems operating together.
[0033] In some embodiments, computing system 100 is included, connected to, or in communication with a physical component for the purpose of modifying the physical component in response to an instruction. Alternatively, in some embodiments, an instruction is received by computing system 100, and in response to the instruction, computing system 100 modifies the physical component. Computing system 100 can, but is not limited to, modify the following physical components: an acceleration control, a break, a gear box, a vacuum system, a motor, a pump, a refrigeration system, a steering control, a pump, a spring, a suspension system, a hinge, and/or a valve. In some embodiments, the physical component is modified via an algorithm, another computing system, an electric signal, and/or actuator.
[0034] In some embodiments, computing system 100 includes one or more sensors. In some embodiments, computing system 100 is a sensor. In some embodiments, a sensor includes one or more components designed to obtain information about an environment. In some embodiments, a sensor can be configured to obtain information within its proximity, to obtain information through contact with the environment or an object within the environment, or to obtain information from a specified direction originating from the sensor. Some exemplary sensor components include: a flow sensor, a force sensor, a temperature sensor, a time-of-flight sensor, a leak sensor, a level sensor, a light detection and ranging system, a gas sensor, a humidity sensor, an image sensor (e.g., a radar sensor, a camera sensor, and/or a LiDAR sensor), an angle sensor, a chemical sensor, a brake pressure sensor, a contact sensor, a non-contact sensor, an electrical sensor, an inertial measurement unit, a particle sensor, a photoelectric sensor, a position sensor (e.g., a global positioning system), a precipitation sensor, a pressure sensor, a proximity sensor, a radio detection and ranging system, a radiation sensor, a speed sensor (e.g., measures the speed of an object), a metal sensor, a motion sensor, a torque sensor, and an ultrasonic sensor. In some examples, a sensor includes a combination of multiple sensors. In some embodiments, sensor data is captured by fusing data from one sensor with data from one or more other sensors. In some embodiments, a sensor can include one or more components such as a sensing component (e.g., an image sensor or temperature sensor), a transmitting component (e.g., a laser or radio transmitter), a receiving component (e.g., a laser or radio receiver), or any combination thereof.
[0035] In the current embodiment, computing system 100 includes multiple subsystems that are connected to and in communication with each other. Through interconnect 150 (e.g., a system bus, one or more memory locations, or other communication channel for connecting multiple components of computing system 100), processor subsystem 110 can communicate with (e.g., wired and/or wirelessly) memory 120 (e.g., system memory, dynamic memory, and/or virtual memory) and I/O interface 130. In some examples, multiple instances of processor subsystem 110 can be communicating via interconnect 150. Additionally, computing system 110 can communicate with additional components (e.g., I/O device 140) through I/O interface 130. In some embodiments, I/O interface 130 is included with I/O device 140 such that the two are a single component. It should be recognized that there can be one or more I/O interfaces, with each I/O interface communicating with one or more I/O devices.
[0036] Processor subsystem 110 enables computing system 100 to execute instructions to perform the exemplary disclosure laid out herein. For example, processor subsystem 110 can execute an operating system, a middleware system, one or more applications, or any combination thereof. In some embodiments, processor subsystem 110 includes one or more processors or processing units.
[0037] In some embodiments, the instructions required to perform the operations described herein are stored in memory 120 (e.g., through a connected non-transitory or transitory computer readable medium). Computing system 100 can use memory 120 to store (e.g., configured to store, assigned to store, and/or that stores) program instructions executable by processor subsystem 110. For example, memory 120 can store program instructions to implement the functionality associated with methods 800, 900, 1000, 11000, 12000, 1300, 1400, and 1500 described below.
[0038] Computing system 100 can utilize a variety of types of memory for storing instructions. In some embodiments, memory 120 can be implemented using different physical, non-transitory memory media, such as flash memory, random access memory (RAM-SRAM, EDO RAM, SDRAM, DDR SDRAM, RAMBUS RAM, or the like), hard disk storage, floppy disk storage, removable disk storage, read only memory (PROM, EEPROM, or the like), or the like.
[0039] In some embodiments, computing system 100 is not limited to memory 120 for storage. Computing system 100 can also include other forms of storage such as cache memory in processor subsystem 110 and non-processor storage through I/O interface 130 on VO device 140 (e.g., a hard drive, storage array, etc.). In some embodiments, instructions to be executed by processor subsystem 110 to perform operations described herein can be stored on these other forms of storage. In some examples, processor subsystem 110 (or each processor within processor subsystem 110) contains a cache or other form of on-board memory.
[0040] Computing system 100 utilizes I/O interface 130 to communicate with other devices. In some embodiments, interface 130 includes various types of interfaces configured to effectively communicate with other devices. In some examples, I/O interface 130 includes a bridge chip (e.g., Southbridge) from a front-side bus to one or more back-side buses. In some embodiments, computing system 100 includes one or more I/O interfaces. In some embodiments, I/O interface 130 is capable of communicating with one or more I/O devices (e.g., I/O device 140) via one or more corresponding buses or other interfaces.
[0041] I/O devices provide additional functionality to computing system 100 through the associate hardware components included in the I/O device. Some examples of possible I/O devices include: output devices (e.g., auditory, tactile, or visual) (e.g., speaker, light, screen, projector, or the like); network interface devices (e.g., to a local or wide-area network), sensor devices (e.g., camera, ultrasonic sensor, GPS, radar, LiDAR, inertial measurement device, or the like); and storage devices (removable flash drive, storage array, hard drive, optical drive, SAN, or their associated controller). In some embodiments, computing system 100 is communicating with a network via a network interface device (e.g., configured to communicate over Wi-Fi, Bluetooth, Ethernet, or the like). In some embodiments, computing system 100 is directly or wired to the network. In some embodiments, computing system 100 is connected to VO device 140 through a network connection (e.g., wired and/or wirelessly).
[0042] In some embodiments, computing system 100 includes an operating system to manage resources and hardware capabilities. Computing system 100 is compatible with, but not limited to, the following types of operating systems: distributed operating systems (e.g., Advanced Interactive executive (AIX), batch operating systems (e.g., Multiple Virtual Storage (MVS)), time-sharing operating systems (e.g., Unix), network operating systems (e.g., Microsoft Windows Server), and real-time operating systems (e.g., QNX). In some embodiments, the operating system provides additional capabilities to computing system 100 such as various procedures, sets of instructions, software components, and/or drivers for controlling and managing general system tasks (e.g., memory management, storage device control, power management, or the like) and for facilitating communication between hardware and software components. In some embodiments, the operating system controls the order and timing of the tasks to be executed by processor subsystem 110 through a priority- based scheduler. In such embodiments, the priority assigned to a task is used to identify a next task to execute. In some embodiments, the highest priority task runs to completion unless another higher priority task is made ready. In some embodiments, the priority-based scheduler identifies a next task to execute when a previous task finishes executing.
[0043] In some embodiments, computing system 100 includes a middleware system to provides one or more services and/or capabilities to applications (e.g., the one or more applications running on processor subsystem 110) outside of what the operating system offers (e.g., authentication, API management, data management, application services, messaging, or the like). In such embodiments, the middleware system can be configured to provide for implementation of commonly used functionality, message-passing between processes, package management, a heterogeneous computer cluster to provide hardware abstraction, low-level device control, or any combination thereof. Examples of middleware systems include, but are not limited to, Robot Operating System (ROS), Lightweight Communications and Marshalling (LCM), PX4, and ZeroMQ.
[0044] In some embodiments, the middleware system represents processes and/or operations using a graph architecture. In such embodiments, processing takes place in nodes that can receive, post, and multiplex state messages, planning messages, actuator messages, sensor data messages, control messages, and other messages. In such examples, the graph architecture can define an application (e.g., an application executing on processor subsystem 110 as described above) such that different operations of the application are included with different nodes in the graph architecture.
[0045] In some embodiments, a publish-subscribe model is used to provide communication between a first node in a graph architecture to a second node in the graph architecture. In such embodiments, the first node publishes data on a channel in which the second node can subscribe. In some embodiments, the first node can store data in memory (e.g., memory 120 or some local memory of processor subsystem 110) and send an acknowledgement to the second node that the data has been stored in memory. In some embodiments, the first node provides a pointer (e.g., a memory pointer, such as an identification of a memory location) to the second node so that the second node can directly access the memory location where the first node stored the data. In some embodiments, the first node does not need to store the data in memory and provides the second node the data directly, as to not require memory access (e.g., by the first node or the second node). [0046] FIG. 2 illustrates a block diagram of electronic device 200 with interconnected subsystems. In the illustrated embodiment, electronic device 200 includes three different subsystems (i.e., first subsystem 210, second subsystem 220, and third subsystem 230). The subsystems of electronic device 200 are in communication with (e.g., wired or wirelessly) each other, and create a network (e.g., a storage area network, an enterprise internal private network, a campus area network, a personal area network, a local area network, a virtual private network, a wireless local area network, a metropolitan area network, a wide area network, a system area network, and/or a controller area network). Each subsystem of electronic device 200 can be configured or designed with the computer architecture as described in FIG. 1 (i.e., computing system 100). Additionally, while in the illustrated embodiment electronic device 200 contains three subsystems, electronic device 200 can be configured with additional or fewer subsystems.
[0047] In some embodiments, electronic device 200 includes alternative layouts or connectivity of electronic device 200’ s included subsystems. For example, first subsystem 210 connected to second subsystem 220 but not third subsystem 230, or second subsystem 220 connected to third subsystem 230 but not first subsystem 210. In some embodiments, electronic device 200’ s subsystems are electrically connected while additional subsystems are wireless connected to electronic device 200. In some embodiments, subsystems of electronic device 200 are configured to send messages between and receive messages from other subsystems of electronic device 200. In some embodiments, the subsystems can be configured to communicate wirelessly to the one or more computer systems outside of device 200. In such embodiments, one or more subsystems are wirelessly connected to one or more computer systems outside of device 200, such as a server system.
[0048] In some embodiments, one or more subsystems of electronic device 200 are used to control, manage, and/or receive data from one or more other subsystems of electronic device 200 and/or one or more additional computer systems (e.g., electrically connected or remote from electronic device 200). For example, first subsystem 210 and second subsystem 220 can each be a camera that captures images, and third subsystem 230 can use the captured images for decision making. In some embodiments, at least a portion of electronic device 200 functions as a distributed computer system. For example, a first portion of a task is executed by first subsystem 210 and a second portion of the task is executed by second subsystem 220. [0049] In some embodiments, electronic device 200 includes an enclosure that fully or partially houses electronic device 200’s subsystems (e.g., subsystems 210-230). Potential enclosures include, but are not limited to, a head-mounted-display device, a smart display, a home-appliance device (e.g., a refrigerator or an air conditioning system), an accessory device, a smart phone, a smart watch, a robot (e.g., a robotic arm or a robotic vacuum), and a vehicle. In some embodiments, electronic device 200 is capable of navigating a physical environment with or without user input.
[0050] Attention is now directed towards techniques for controlling output components. Such techniques are described in the context of components of an electronic device (e.g., and/or system). It should be recognized that other types of components, electronic devices, and/or systems can be used with techniques described herein. For example, an accessory can connect with a smartphone using techniques described herein. For another example, a vehicle can control different components of the vehicle using techniques described herein. In addition, techniques optionally complement or replace other techniques for controlling output components.
[0051] FIGS. 3A-3C illustrate exemplary components of an electronic device for implementing a coordinated trajectory control scheme, in accordance with some embodiments. The components illustrated in FIGS. 3A-3C can be implemented in hardware, software, or a combination of both. The components illustrated in FIGS. 3A-3C can be implemented via an electronic device (e.g., such as compute system 100, device 200, and/or an electronic device including one or more of the features described above with respect to compute system 100 and/or device 200).
[0052] In some embodiments, the electronic device is one or more of (and/or includes one or more features of): a watch, a phone, a tablet, a fitness tracking device, a processor, a headmounted display (HMD) device, a home automation device (e.g., controller and/or hub), a communal device (e.g., a multi-user device), a media device, a motor electronic device, a wearable electronic device, an autonomous and/or semi -autonomous electronic device, a speaker, a television, a self-propelled device, and/or a personal computing device. In some embodiments, the electronic device is in communication with one or more input devices (e.g., a communications receiving component, a camera, a depth sensor, a microphone, a hardware input mechanism, a rotatable input mechanism, a heart monitor, a temperature sensor, and/or a touch-sensitive surface) and/or one or more output devices (e.g., a communications transmission component, a light output component, a movement component, a display generation component, an audio generation component, a speaker, a haptic output device, a display screen, a projector, and/or a touch-sensitive display).
[0053] FIG. 3A illustrates block diagram 300 of an exemplary component architecture (e.g., of a device and/or system) for implementing a coordinated trajectory control scheme. In some embodiments, a coordinated trajectory control scheme enables a central component (e.g., trajectory coordination component 320) to coordinate output trajectories of multiple different output components (e.g., output component 350). In some embodiments, the multiple different output components are controlled by multiple different output controllers (e.g., including and/or similar to output component controller 340). In some embodiments, each of these output component controllers can operate independent of each other and/or the central component. For example, an output component controller can receive look-ahead trajectories for an output component and cause output to be performed according to the look- ahead trajectories, even if communication is lost between the central component and/or other output component controllers. As another example, the output component controller can make decisions regarding output trajectories without (and/or while in) communication with the central component.
[0054] Providing look-ahead trajectories (e.g., trajectories that can be performed without additional communications) and/or enabling an output component controller to perform a trajectory without requiring further communications can (1) reduce the burden on communication resources by reducing demand on centralized resources to stream control signals to output components and/or (2) reduce the burden on communication resources by reducing traffic and/or bandwidth usage of communication infrastructure (e.g., communication mediums, buses, lines, networks, and/or cables). These reductions in burden on communication resources and/or infrastructure can be important in scenarios where many output components share centralized coordination resources and/or communication infrastructure. Examples of such scenarios can include home and/or building automation networks with many output components. In such networks, output of components of the network can be “animated” (e.g., perceived by a user, such as visually) and/or “coordinated” (e.g., performed in a synchronized, matching, and/or relative manner) based on trajectories. In some embodiments, components of a network include one or more “smart home” accessories for causing outputs, such as lighting and/or lighting controllers, windows, opacity controllers, hinged doors, sliding doors, garage doors, door locks, window panels, window shades, standing desks, reclining chairs, projectors, air conditioning, air vents, sprinklers, vacuums, lawnmowers, seasonal decorations, indoor lighting, and/or outdoor lighting. In some embodiments, the techniques described herein can be implemented by a smartphone coordinating and sending a trajectory to a home automation controller (e.g., a home hub, smart speaker, and/or or other multi-user device) that is paired with specific home accessories that can be controlled by the home automation controller (and/or the smartphone sending trajectories directly to such home accessories).
[0055] With the number of home automation accessories growing, the resources needed to coordinate output between such accessories can be more demanding, which can in turn put a tax on shared network resources. While the examples provided immediately above with respect to a home automation network relate to a distributed network of components that are separate devices (e.g., coordination controller is a smartphone but a component is a garage door opener), one of ordinary skill in the art can and should understand that the same issues can arise in the scenario in which the components are each part of a single electronic device (and/or a single network of two or more electronic devices) (e.g., a single computer system that includes components for causing movement and/or lighting output that is configured with a centralized coordination component).
[0056] Block diagram 300 of FIG. 3A includes other components 310, which represents one or more additional functional components of the electronic device outside of the functional components illustrated in FIG. 3 A. For example, other components can include user interface components (e.g., display generation components, touchscreen displays, physical and/or virtual controls, input devices, and/or output devices), processors, memory, VO components, communications components, and/or other logical and/or architectural components. In some embodiments, other components 310 communicates with trajectory coordination component 320 (and/or other components described herein) via connection 312 (e.g., for exchanging input and/or output data). For example, input can be received via and/or provided by one or more components of other components 310 to trajectory coordination component 320 via connection 312. In response to receiving the input from other components 310, trajectory coordination component 320 can determine, update, and/or otherwise perform an operation for a set of coordinated trajectories. In some embodiments, trajectory coordination component 320 provides data to other components (e.g., for updating a display generation component) via connection 312.
[0057] Block diagram 300 of FIG. 3A illustrates trajectory coordination component 320, which is also referred to herein as a “coordinated trajectory planning component.” In some embodiments, trajectory coordination component 320 is a component that determines trajectories for one or more output components of and/or in communication with the electronic device. In some embodiments, trajectory coordination component 320 determines output trajectories that are coordinated between different output components (e.g., of the same and/or different type). An output trajectory is also referred to herein as a “trajectory,” a “physical trajectory,” a “physical output trajectory,” an “animation trajectory,” and/or an “animation output.” In some embodiments, an output trajectory is coordinated in time, position, speed, amplitude, mode, and/or output level with one or more other output trajectories (e.g., where the trajectories are subject to execution times that are configured to create the appearance of coordination between output components to an observer). In some embodiments, an output trajectory includes (and/or corresponds to) one or more target execution times. In some embodiments, the one or more target execution times indicate timing of one or more portions of the output trajectory. For example, the timing can specify when the output trajectory should begin being performed, when it should finish being performed, and/or when any intermediate operations within the trajectory should be performed (e.g., a transition point when light output should change color output).
[0058] In some embodiments, trajectory coordination component 320 is implemented via one or more hardware components and/or one or more software components. In some embodiments, trajectory coordination component 320 is implemented as part of one or more other components (and/or includes one or more other components), such as: a user interface compute component and/or a scene controller (e.g., for processing and/or enforcing one or more scene definitions (e.g., a trigger, a condition, and/or timing) (e.g., a scene being a set of one or more trajectories (e.g., a predetermined set and/or procedurally generated set)).
[0059] In some embodiments, trajectory coordination component 320 determines a set one or more trajectories (e.g., output and/or motion modes) for an output component (e.g., an object and/or a device (such as an actuator)) in response to user input, object input, and/or scene definition. In some embodiments, trajectory coordination component 320 determines a state of an object from a reported status (e.g., actuator is active and/or window is open). In some embodiments, trajectory coordination component 320 invokes a coordinated trajectory planning operation for an output component in communication with the electronic device. In some embodiments, trajectory coordination component 320 coordinates one or more animations across different objects and/or one or more output components in communication with the electronic device. In some embodiments, trajectory coordination component 320 replans one or more trajectories in response to feedback (e.g., from the output component and/or one or more other output components and/or from other components 310) using a coordinated trajectory planning operation (e.g., using scene definitions and/or coordinated trajectory policies to determine coordinated trajectories). In some embodiments, trajectory coordination component 320 provides trajectories (e.g., encoded trajectories) to system controller 330 via connection 322.
[0060] Block diagram 300 of FIG. 3 A illustrates system controller 330. In some embodiments, system controller 330 manages and/or provides data flow between components of the electronic device (e.g., between trajectory coordination component 320 and output component controller 340). In some embodiments, system controller 330 includes decoder component 330A (also referred to herein as a “trajectory decoding component”), which is a component for decoding output trajectories. For example, decoder component 330A can decode an encoded output trajectory received from trajectory coordination component 320 and then a decoded output trajectory 332 is provided (e.g., streamed and/or sent) to output component controller 340. In some embodiments, decoder component is implemented via one or more hardware components and/or one or more software components. In some embodiments, system controller 330 provides status information (e.g., data, feedback, and/or state information) to trajectory coordination component 320 (e.g., for use updating states and/or trajectories corresponding to one or more output components) via connection 324. In some embodiments, system controller 330 provides trajectories (e.g., encoded and/or decoded trajectories) to output component controller 340 via connection 332.
[0061] Block diagram 300 of FIG. 3 A illustrates output component controller 340 (also referred to herein as a “physical output component controller”). In some embodiments, output component controller 340 is a component (e.g., that controls a set of one or more physical output components) (e.g., implemented via one or more hardware components and/or one or more software components) of the electronic device. In some embodiments, output component controller 340includes logic to control one or more output components (e.g., a mechanism, such as a collection of joints), arbitrate requests to trajectory coordination component 320, monitor safety conditions, and/or plan trajectories itself such as when trajectory coordination component 320 is offline (e.g., not responding and/or not reachable). In some embodiments, output component controller 340 is (and/or is part of and/or includes) a body controller. In some embodiments, output component controller 340 provides status information (e.g., data, feedback, and/or state information) to system controller 330 (e.g., and/or to trajectory coordination component 320) (e.g., for use updating states and/or trajectories corresponding to one or more output components) via connection 334. In some embodiments, output component controller 340 provides control signals (e.g., portions of trajectories (e.g., decoded trajectories)) to output component 350 via connection 342.
[0062] Block diagram 300 of FIG. 3A illustrates output component 350 (also referred to herein as a “physical output component”). In some embodiments, output component 350 is a component that is operable to and/or used to cause a physical output (e.g., physical movement, light output, sound output, haptic output, and/or opacity change). In some embodiments, output component 350 includes (or excludes) one or more controllers (e.g., an output component controller and/or a body controller). For example, output component controller 340 and output component 350 can be different functional components of the same physical component or of different physical components (e.g., that is in communication with (e.g., part of, connected to, coupled to, and/or controlled by) the electronic device)). In some embodiments, output component 350 includes (and/or is) a movement component. In some embodiments, output component 350 includes (and/or is) a non-movement component (e.g., a light and/or an opacity controller and/or device). In some embodiments, output component 350 provides status information (e.g., data, feedback, and/or state information) to output component controller 340 (e.g., and/or to trajectory coordination component 320) (e.g., for use updating states and/or trajectories corresponding to one or more output components) via connection 344.
[0063] In some embodiments, block diagram 300 is embodied as (e.g., represents a portion and/or all of) an electronic device (e.g., 100 and/or 200). In some embodiments, output component 350 is a component of the electronic device. In some embodiments, output component 350 is external to the electronic device. In some embodiments, output component 350 is (and/or includes) one or more of a motor, a mechanical joint, a physical linkage, a light, and/or an opacity adjustment component (e.g., that controls opacity of a surface that transmits and/or passes light).
[0064] In some embodiments, the electronic device includes a plurality of output component controllers as described above with respect to output component controller 340 (e.g., each connected to system controller 330 and one or more other output components as described herein with respect to output component 350). For example, block diagram 300 can include multiple output component controllers (e.g., 340).
[0065] In some embodiments, the electronic device causes movement of a plurality of movement components (e.g., including the movement component) according to a plurality of movement characteristics of one or more output trajectories (e.g., including the output trajectory). For example, block diagram 300 can include multiple output components (e.g., 350).
[0066] FIG. 3B illustrates a detailed view of trajectory coordination component 320. In addition to features already described with respect to FIG. 3 A, FIG. 3B illustrates functional components representing capabilities and/or features of trajectory coordination component 320. In some embodiments, trajectory coordination component 320 includes scene management component 320A that performs operations for implemented scenes. In some embodiments, a scene is (and/or includes, defines, and/or provides rules for) a set of one or more output trajectories. For example, a scene can be associated with an event representing when a user arrives back home daily from work, and include predetermined trajectories for a garage door (e.g., move from closed to open when the user pulls into a driveway), for an entry door (e.g., unlock and/or actuate to open the door), a set of indoor lights (e.g., linearly increase light brightness from 0% to 100% as the user walks through the entry door), and a smart speaker (e.g., begin playing back music and linearly increase volume from 0% to 30%). In some embodiments, a scene corresponds to a context, event, and/or other trigger. For example, the scene can automatically be triggered by a detected context (e.g., detecting that a user is arriving home), an event (e.g., user presses a control to announce they are arriving home), and/or another trigger such as user input.
[0067] In some embodiments, trajectory coordination component 320 includes policy component 320B (also referred to herein as a “policy management component”) that performs operations for managing policies (also referred to herein as “trajectory policies,” “motion policies,” “animation policies,” and/or “output trajectory policies”). In some embodiments, determining a set of output trajectories includes using a set of one or more motion policies that specify coordination (e.g., synchronization and/or relative timing of output) between output trajectories of the two or more output components.
[0068] In some embodiments, trajectory coordination component 320 includes trajectory planner 320C (also referred to herein as an “animation planner”) for generating and/or coordinating output trajectories (e.g., to comply with a scene definition and/or an applicable policy), for example, as described above (and/or elsewhere herein).
[0069] While depicted as functional subcomponents of trajectory coordination component 320, scene management component 320A, policy component 320B, and/or trajectory planner 320C can be implemented as separate components and/or combined in any arbitrary way that enables the functionality described herein to be performed.
[0070] FIG. 3C illustrates a detailed view of output component controller 340. In addition to features already described with respect to FIG. 3A, FIG. 3C illustrates functional components representing capabilities and/or features of output component controller 340. In some embodiments, output component controller 340 includes main logic component 340A that performs operations for performing (and/or causing performance of, by one or more output components) output trajectories. For example, returning to the example of the scene associated with when a user arrives back home daily from work, output component controller 340 can control an output component for actuating to open (and/or close) an entry door. In this example, output component controller 340 can apply control signals (e.g., via connection 342) to an output component that actuates a motor and mechanical linkage to physically move the entry door open. In some embodiments, output component controller 340 includes one or more subcomponent controller(s) 340B. For example, output component controller 340 can manage an output component that includes subcomponents that each have an associated trajectory and/or that require separate controller components for applying control signals (e.g., an output component that includes a movement component and a lighting component that are separately controllable). For simplicity, subcomponents can be considered (and/or referenced herein) as a combined output component (e.g., controlled by output component controller 340 and subcomponent controlled s) 340B) and/or different output components (e.g., each controlled by a separate controller), however, either of such conceptions used should not be construed as limiting the actual physical implementation of such components.
[0071] In some embodiments, output component controller 340 includes decoder component 340C. In some embodiments, decoder component 340C includes one or more of the features described above with respect to decoder component 330A. For example, in the scenario in which output component controller 340 includes decoder component 340C, output component controller 340 can receive encoded versions of trajectories and perform decoding (e.g., rather than system controller 330 performing decoding and streaming the decoded trajectory to output component controller 340). In some embodiments, an output trajectory is encoded and/or decoded in a form that can be ingested, interpreted, understood, used, executed, and/or applied by an output component and/or a controller in communication with the output component.
[0072] FIGS. 4A-4C illustrate exemplary functional component architectures for implementing trajectory control of output components, in accordance with some embodiments. FIGS. 4A-4C are included to illustrate the flow of data between functional components and to illustrate exemplary groupings of functional components on different hardware components (e.g., each grouping on a hardware component) (and/or the same hardware component) (e.g., of one or more electronic devices).
[0073] FIG. 4A illustrates block diagram 400 of functional blocks for implementing control of output trajectories, in accordance with some embodiments. In some embodiments, functional architecture 400 includes user interface component 410 (e.g., including one or more other components 310 as described with respect to FIG. 3 A). In some embodiments, functional architecture 400 includes scene controller 420 (e.g., for performing the functions of scene management component 320A and/or policy component 320B of FIG. 3B). In some embodiments, functional architecture 400 includes trajectory planner 430 (e.g., for performing the functions of trajectory planner component 320C of FIG. 3B). In some embodiments, functional architecture 400 includes trajectory decoder 440 (e.g., for performing the functions of decoder component 330A of FIG. 3A). In some embodiments, functional architecture 400 includes output component controller 450 (e.g., for performing the functions of output component controller 350 of FIG. 3 A). [0074] FIG. 4A illustrates the flow of data between functional components. As illustrated in FIG. 4A, scene controller 420 can provide visual and audio output 412 to user interface component 410 (e.g., for display and or output as audio, for example, to represent the state of the device and/or one or more output components). As illustrated in FIG. 4A, scene controller 420 can receive feedback 424 from output component controller 450 (e.g., for managing scenes). As illustrated in FIG. 4A, trajectory planner 430 can receive animation definitions 422 from scene controller 420 (e.g., for use in generating and/or coordinating trajectories). As illustrated in FIG. 4 A, trajectory planner 430 can receive feedback 424 from output component controller 450 (e.g., for use in updating state data and/or generating trajectories). As illustrated in FIG. 4A, trajectory decoder 440 can receive encoded trajectory 432 from trajectory planner 430 (e.g., for decoding). As illustrated in FIG. 4A, output component controller 450 can receive trajectory points 442 from trajectory decoder 440 (e.g., as a stream).
[0075] FIG. 4B illustrates a first exemplary architecture for implementing the functional blocks of block diagram 400 of FIG. 4A, in accordance with some embodiments. As illustrated in FIG. 4B, the functions of user interface component 410, scene controller 420, and trajectory planner 430 are implemented by the same component: user interface (UI) compute component 460. In some embodiments, UI compute component 460 performs one or more operations for managing user interfaces and/or user experiences with respect to an electronic device. As illustrated in FIG. 4B, the functions of trajectory decoder 440 are implemented on system controller 470 (e.g., that includes one or more features as described above with respect to system controller 330 of FIG. 3A). In the example illustrated in FIG. 4B, system controller 470 performs decoding of encoded trajectories, and streams trajectory points to body controller 480. As illustrated in FIG. 4B, the functions of output component controller 450 are implemented on body controller 480 (e.g., that includes one or more features as described above with respect to output component controller 340 of FIG. 3 A and/or 3B). In the example illustrated in FIG. 4B, body controller 470 receives decoded points (e.g., which are translated to control signals for controlling an output component). For example, implementing the decoding functions at system controller 470 can reduce processing demand on the body controller (e.g., which otherwise might need to perform resource-intensive trajectory decoding that necessitates more complicated hardware and/or software resources). [0076] FIG. 4C illustrates a second exemplary architecture for implementing the functional blocks of block diagram 400 of FIG. 4A, in accordance with some embodiments. Similar to FIG. 4B, FIG. 4C illustrates the functions of user interface component 410, scene controller 420, and trajectory planner 430 as implemented by UI compute component 460. As illustrated in FIG. 4C, system controller 470 functions as a gateway (e.g., intermediary, switch, and/or router) between UI compute component 460 and body controller 480, however, does not perform decoding functionality. As illustrated in FIG. 4C, the functions of trajectory decoder 440 are implemented on body controller 480. Similar to FIG. 4B, in FIG. 4C, the functions of output component controller 450 are implemented on body controller 480 (e.g., that includes one or more features as described above with respect to output component controller 340 of FIG. 3 A and/or 3B). In the example illustrated in FIG. 4C, body controller 480 receives the trajectories in encoded form points, which are then decoded by body controller 480. In some embodiments, the encoded trajectories are provided by system controller 470 in a non-streamed manner (e.g., as a look-ahead trajectory that is in encoded form). For example, implementing the decoding functions at body controller 480 can reduce (and/or efficiently group) demand on a communication link between body controller 480 and system controller 470 (e.g., which would not need to provide real time streaming of trajectory points). For example, implementing the decoding functions at body controller 480 can reduce processing demand on a system controller (e.g., which otherwise might need to perform resource-intensive trajectory decoding for multiple output components within a short period (e.g., if a complicated scene is involved)).
[0077] FIGS. 5A-5C illustrate exemplary trajectories in accordance with some embodiments. In particular, FIG. 5 A illustrates the form that an output trajectory can take as it makes moves between components of the architecture as described herein. FIG. 5A illustrates encoded trajectory 510. In some embodiments, a trajectory is encoded by being represented as a parameterized curve (e.g., a parametric curve such as a Bezier curve). As illustrated in FIG. 5 A, trajectory coordination component 320 provides encoded trajectory 510 to decoder component 330A, which decodes it into decoded trajectory 520. As illustrated in FIG. 5A, decoded trajectory 520 is a series of points (e.g., positions) that approximates (e.g., represents) a sampling of the parameterized curve (e.g., encoded trajectory 510). In this example, decoded trajectory 520 is provided to output component controller 340 (e.g., as a stream of points). After receiving decoded trajectory 520, output component controller 340 can transform (e.g., transcode and/or translate) the trajectory into control signals for causing output at an output component. As illustrated in FIG. 5A, output component controller 340 provides motor drive signals 530, for implementing the trajectory represented by encoded trajectory 510 and decoded trajectory 520. For example, as illustrated by motor drive signals 530 in FIG. 5A, a large amplitude control signal is initially applied to overcome inertia of a movement component being static, and the controls signals reduce in amplitude as the movement component nears the goal position of the trajectory. While the example of a motor is used with respect to the example in FIG. 5A, control signals can be used to control other output components such as lights or others mentioned herein. As illustrated in FIG. 5A, output component controller 340 can be connected to (e.g., and a controller of) a set of one or more output components (e.g., 350A, 350B, .... to 350/z).
[0078] FIGS. 5B-5C illustrate example trajectories in accordance with some embodiments. FIG. 5B illustrates plot 550, which represents a jerk-limited output trajectory (e.g., a trajectory for a movement component that limits jerking movement). In some embodiments, jerking movement is movement that includes sudden changes in direction and/or acceleration that create “jerk” (e.g., high amplitude of acceleration). In some embodiments, a jerk-limited output trajectory is used where a path from current position to a target position is unknown (e.g., an electronic device is causing movement that relies on environmental feedback to reach a goal location). As illustrated in FIG. 5B, a jerk limit (jmax) of a jerk function j(t), an acceleration limit (amax) of an acceleration function a(t), and a velocity limit (vmax) of a velocity function v(t) can be used to determine a position trajectory (e.g., indicated by x(t)) in a manner that satisfies the corresponding limits. Reducing jerking motion can increase lifespan and/or reliability of output components and/or provide a better user experience.
[0079] FIG. 5C illustrates plot 560, which represents a Bezier curve output trajectory. In some embodiments, a Bezier curve output trajectory is a trajectory based on and/or created using one or more Bezier curve (e.g., a type of parametric curve) (e.g., a curve defined by a set of control points to create a smooth curve using a formula). As illustrated in FIG. 5C, the Bezier curve output trajectory is created from four curves (Curve l, Curve_2, Curve_3, and Curve_4) that are arranged contiguously to form a trajectory. In this example, each of the four curves is defined by control points (e.g., Po, Pi, P2, P3, P4, P5, Pe, P7, and/or Pg). In some embodiments, Bezier curve output trajectory is used as a trajectory for controlling light output of a lighting component. [0080] In some embodiments, output trajectories can include one or more of: a preset output trajectory (e.g., a predefined output trajectory), a manual motion output trajectory (e.g., an output trajectory created by user input (e.g., drawn and/or specified by user input)), and/or an acceleration limited output trajectory (e.g., a trajectory for a movement component that limits a characteristic of acceleration (e.g., rate of change of acceleration, maximum and/or minimum acceleration, and/or a fixed rate of acceleration)).
[0081] FIG. 6 illustrates communication flow diagram 600 for controlling output trajectories, in accordance with some embodiments. FIG. 7 is a flow diagram illustrating methods for controlling output components in accordance with some embodiments. FIG. 8 is a flow diagram illustrating methods for controlling output components in accordance with some embodiments. The operations in FIG. 6 are used to illustrate the processes described below, including the processes in FIGS. 7 and 8.
[0082] In some embodiments, the operations described with respect to communication flow diagram 600 can be performed by one or more components of an electronic device (e.g., compute system 100 and/or device 200). In this example, the operations are performed by trajectory coordination component 320 (e.g., 320 of FIG. 3A), first output component controller 604A (e.g., 340 of FIG. 3A), and second output component controller 604B (e.g., 340 of FIG. 3 A). The example illustrated by the operations in communication flow diagram 600 are presented in temporal progression from top to bottom (e.g., operations near top happen before operations near bottom in FIG. 6). It should be understood that some operations can occur in a different order than that which is illustrated in FIG. 6.
[0083] In the example illustrated in FIG. 6, trajectory coordination component 320 performs trajectory coordination for first output component controller 604A and second output component controller 604B. In this example, first output component controller 604A (e.g., which includes one or more of the features of 340 of FIG. 3 A) controls output component 606A (e.g., which includes one or more of the features of 350 of FIG. 3 A). In this example, second output component controller 604B (e.g., which includes one or more of the features of 340 of FIG. 3 A) controls output component 606B (e.g., which includes one or more of the features of 350 of FIG. 3 A).
[0084] At 610, trajectory coordination component 320 receives input. In some embodiments, the input includes user input. In some embodiments, the input includes state data from one or more other components. For example, in FIG. 6, output component 606A provides state data to first output component controller 604 A at 612B, and first output component controller 604A provides state data (e.g., the same and/or different than received at 612B) to trajectory coordination component 320 at 612A. In this example, second output component controller 604B and output component 606B also provide state data to trajectory coordination component 320. For example, in FIG. 6, output component 606B provides state data to second output component controller 604B at 614B, and second output component controller 604B provides state data (e.g., the same and/or different than received at 612B) to trajectory coordination component 320 at 614A.
[0085] In some embodiments, user input includes one or more of: a tap input and/or a non-tap input. In some embodiments, user input includes one or more of: verbal input, an audible request, an audible command, an audible statement, a swipe input, a hold-and-drag input, a gaze input, an air gesture, rotation of a steering mechanism, and/or a mouse click. In some embodiments, user input includes one or more of: non-user input (e.g., data input received from another component, electronic device, and/or process that is not triggered by user input) (e.g., sensor, weather, user proximity, and/or user trip information (e.g., arriving at home or departing from home)).
[0086] In some embodiments, input includes data input (e.g., received data such as media, audio, video, policies, preferences, and/or environmental data), event data (e.g., an event generated by a processor, component, logic, and/or software of the electronic device), feedback data (e.g., a context, such as an environmental context, a subject context of a subject in an environment, and/or an operational context of a component) (e.g., data regarding an operational state of a component in communication with the electronic device, such as location, position, velocity, acceleration, and/or other status (e.g., open, closed, moving, obstructed, error, and/or communication status)), sensor data (e.g., data received from a sensor) (e.g., position, velocity, acceleration, force, visual, and/or audio) (e.g., of the electronic device, of a subject, and/or of a different electronic device (e.g., a wearable device, a companion device of the electronic device, an electronic device of the subject, and/or another type of electronic device)), and/or memory data input (e.g., data received and/or retrieved from memory). In some embodiments, data input includes weather data input (e.g., input regarding the current and/or forecasted weather at the current location, at another location, and/or along a route), proximity data input (e.g., proximity to a subject (e.g., user, person, and/or object)), and/or electronic device data input (e.g., data representing operations, settings, instructions, states, and/or communications from, and/or of, the electronic device and/or one or more other electronic devices).
[0087] In some embodiments, input includes (and/or is detected in conjunction with) an indication (e.g., a command, a request, an instruction, an event, a trigger, and/or a condition occurring) that a coordinated set of output trajectories should be executed, generated, and/or output.
[0088] In some embodiments, trajectory coordination component 320 determines a set of (e.g., one or more) coordinated output trajectories in response to detecting the input (e.g., one or more inputs). In some embodiments, trajectory coordination component 320 detects (and/or retrieves) one or more other inputs, in response to detecting a first input (e.g., user input). For example, the first input causes trajectory coordination component 320 to detect (and/or otherwise read, determine, and/or receive) input from one or more components (e.g., a sensor, a device, memory, and/or a controller). In some embodiments, trajectory coordination component 320 determines the set of coordinated output trajectories in conjunction with (e.g., after and/or in response to) receiving (e.g., detecting) the input at 610.
[0089] At 620, trajectory coordination component 320 determines (e.g., calculates, retrieves, generates, and/or derives) a set of one or more trajectories and a set of one or more target execution times for output component 606A and output component 606B. For example, trajectory coordination component 320 determines a first output trajectory for first output component controller 604 A and a second output trajectory for second output component controller 604B. In some embodiments, the set of one or more target execution times are coordinated (e.g., generated so that output of separate output components occurs simultaneously, serially, and/or with respect a common clock). In some embodiments, determining the set of one or more trajectories includes determining (e.g., selecting and/or using) an applicable trajectory policy. For example, the first and second output trajectories can be generated to satisfy and/or based on rules in a trajectory policy that applies to the current operating states of the first and second output components (e.g., and/or other data relevant to determining a trajectory policy).
[0090] In some embodiments, trajectory coordination component 320 determines a respective output trajectory (e.g., forming the set of two or more coordinated output trajectories) for output components (e.g., a trajectory for each output component) in a set of two or more output components. For example, trajectory coordination component 320 can generate additional output trajectories for other output components that are part of the same scene as the example in FIG. 6.
[0091] In some embodiments, generating an output trajectory includes blending and/or merging predefined animations (e.g., jerk-limited, Bezier curves, preset, manual motion, and/or acceleration limited) to form a blended output trajectory (e.g., the first output trajectory for first output component controller 604 A, the second output trajectory for second output component controller 604B, and/or a different output trajectory).
[0092] In some embodiments, output trajectories coordinate output of one or more output components of the following: one or more display generation components (e.g., displays, screens, and/or projectors), one or more audio output components (e.g., speakers and/or amplifiers), one or more movement components (e.g., motors, linkages, and/or movable components that resist and/or absorb applied energy), one or more light output components (e.g., light controllers, light-emitting diodes (LEDs) and/or lightbulbs), and/or one or more opacity control components (e.g., for reducing and/or increasing light transmissivity of a medium). For example, first output component controller 604A and second output component controller 604B can both be movement components (e.g., of the same type or different types) that (e.g., appear to) move in coordination with each other. For example, first output component controller 604A can be a lighting component and second output component controller 604B can be a movement component such that lighting changes change in coordination with progress along a movement trajectory of second output component controller 604B.
[0093] In some embodiments, output components are controlled by different controllers. For example, output component 606 A and output component 606B are controlled by separate controllers (e.g., first output component controller 604 A and second output component controller 604B, respectively). In some embodiments, output components are controlled by the same controller (e.g., first output component controller 604A).
[0094] At 622A, trajectory coordination component 320 provides (e.g., transmits, passes, and/or sends) the first output trajectory to (and/or for) first output component controller 604A (e.g., via a system controller of the electronic device). At 622B, trajectory coordination component 320 provides the second output trajectory to second output component controller 604B. In some embodiments, transmitting an output trajectory (e.g., the first and/or the second output trajectory) includes transmitting the output trajectory via one or more communication paths (e.g., one or more dedicated and/or non-dedicated data buses) (e.g., wireless and/or wired). In some embodiments, an output trajectory and a corresponding target execution time are provided (e.g., via 622 A) to system controller 330, which then provides (e.g., via 622 A) the first output trajectory and the first target execution time to the first physical output component (e.g., output component 606A). In some embodiments, trajectory coordination component 320 provides one or more other trajectories to one or more other output components in the set of one or more output components that have output trajectories coordinated with the first and/or second output trajectories.
[0095] In some embodiments, trajectory coordination component 320 (e.g., and/or a UI component that includes trajectory coordination component 320) and the output component controllers (e.g., first output component controller 604 A and second output component controller 604B) (e.g., and/or a body controller that includes each or both) are time coordinated (e.g., via 802. IAS). For example, trajectory coordination component 320 can perform one or more time coordination operations directed to (e.g., for the purpose of, that results in, and/or that enables the other devices to perform) coordinating output trajectory execution (e.g., performance of and/or output of output trajectories by physical output components) (e.g., coordination between one or more output components (e.g., the first output component and/or the second output component) and/or between an output component and trajectory coordination component 320). In some embodiments, the one or more time coordination operations include operations as specified in, supported by, comporting to, compatible with, and/or for implementing the protocols in accordance with IEEE 802. IAS and/or any protocol for coordinating (e.g., synchronizing) timing over a network (e.g., local area network and/or wide area network). In some embodiments, the one or more time coordination operations includes coordinating with one or more physical output component controller for respective physical output components that correspond to a respective output trajectory of the set of two or more coordinated output trajectories. In some embodiments, the one or more time coordination operations includes coordinating with a first physical output component controller for the first physical output component. In some embodiments, the one or more time coordination operations includes coordinating with a second physical output component controller (e.g., same as or different from the first physical output component controller) for the second physical output component.
[0096] In some embodiments, trajectory coordination component 320 (e.g., and/or a UI component that includes trajectory coordination component 320) and the output component controllers (e.g., first output component controller 604 A and second output component controller 604B) (e.g., and/or a body controller that includes each or both) are connected via one or more networks that includes one or more of ethemet-based communication and controller area network (CAN)-based communication. In some embodiments, trajectory coordination component 320 provides a second output trajectory and a second target execution time via (e.g., 622B) a second network (e.g., the same or different from a first network used to provide (e.g., via 622 A) a first output trajectory) that includes one or more of ethernet-based communication and controller area network (CAN)-based communication. In some embodiments, ethernet-based communication is performed using operations as specified in, supported by, comporting to, compatible with, and/or for implementing the Ethernet protocols in accordance with IEEE 802.3. In some embodiments, CAN-based communication is performed using operations as specified in, supported by, comporting to, compatible with, and/or for implementing the CAN protocols in accordance with ISO 11898.
[0097] At 630 A, first output component controller 604 A optionally decodes the first output trajectory. At 630B, second output component controller 604B optionally decodes the second output trajectory. In some embodiments, a system controller (e.g., 330 of FIG. 3A) decodes (using decoder component 330A of FIG. 3A) one or more of the trajectories for the set of one or more output components. In some embodiments, the one or more trajectories are decoded before being received by first output component controller 604A and/or second output component controller 604B. For example, 622A and/or 622B can include an intermediate operation of decoding the respective first and second output trajectories so that first output component controller 604A and second output component controller 604B receive respective decoded versions of these trajectories.
[0098] In some embodiments, decoding the output trajectory (e.g., into a decoded output trajectory) includes converting the output trajectory into data that can be used by (e.g., read by, parsed by, understood by and/or applied by) the physical output component controller and/or the movement component. In some embodiments, a decoded output trajectory includes a set of one or more positions, settings, values, locations, states, locations, and/or target execution times (e.g., that together define a path over time of an output according to the output trajectory).
[0099] At 640A, first output component controller 604A checks state data and/or a set of one or more criteria to determine whether output according to the received first output trajectory can be performed. For example, first output component controller 604 A can determine that the first output trajectory is within the capabilities of output component 606 A and/or whether an error condition is occurring and/or is expected to occur (e.g., where an obstruction is present in a path of the first output trajectory). At 640B, second output component controller 604B checks state data and/or a set of one or more criteria (e.g., the same or different than criteria used by first output component controller 604A) to determine whether output according to the received second output trajectory can be performed. For example, second output component controller 604B can determine that the second output trajectory is within the capabilities of output component 606B and/or whether an error condition is occurring and/or is expected to occur (e.g., where an obstruction is present in a path of the second output trajectory). In some embodiments, in response to detecting an error condition (and/or another reason for not being able to cause output according to the respective output trajectory), first output component controller 604A transmits an indication of the error condition to trajectory coordination component 320 (e.g., as described below with respect to 662A). In some embodiments, in response to detecting an error condition (and/or another reason for not being able to cause output according to the respective output trajectory), first output component controller 604A transmits an indication of the error condition to trajectory coordination component 320 (e.g., as described below with respect to 662B).
[0100] In some embodiments, an output trajectory includes one or more movement characteristics (e.g., velocity, acceleration, position, position goal (e.g., intermediate and/or end location), range of motion, and/or movement mode) for a set of one or more movement components. For example, first output component controller 604A and/or second output component controller 604B can check to determine that movement according to the movement characteristics is allowable (e.g., given operating windows and/or capability constraints).
[0101] In some embodiments, after receiving an output trajectory (e.g., in response to and/or in conjunction with) (and/or during performance and/or execution of the output trajectory): in accordance with a determination (e.g., made by first output component controller 604A and/or second output component controller 604B) that a first set of one or more criteria is satisfied (e.g., with respect to and/or by the output trajectory and/or a portion thereof) (e.g., criteria indicating that movement according to the output trajectory can be performed in a manner that satisfies a set of conditions and/or in a manner that will not (and/or is not expected to) cause an error condition), an output component controller (e.g., first output component controller 604A and/or second output component controller 604B) causes movement of a movement component (e.g., output component 606A and/or output component 606B) according to (e.g., that matches, attempts to match, and/or is a best effort attempt to match) the movement characteristics of the output trajectory.
[0102] In some embodiments, after receiving an output trajectory: in accordance with a determination (e.g., made by first output component controller 604A and/or second output component controller 604B) that a second set of one or more criteria is satisfied (e.g., with respect to and/or by the output trajectory and/or a portion thereof) (e.g., criteria indicating that movement according to the output trajectory cannot be performed in a manner that satisfies first set of one or more criteria) (e.g., different from the first set of one or more criteria), an output controller (e.g., first output component controller 604A and/or second output component controller 604B) forgoes causing movement of the movement component according to the plurality of movement characteristics of the output trajectory. In some embodiments, the second set of one or more criteria is satisfied when the first set of one or more criteria is not satisfied.
[0103] In some embodiments, the first set of one or more criteria includes a criterion that is satisfied in accordance with a determination that movement of the movement component according to the plurality of movement characteristics can be performed in a in a manner that satisfies a set of conditions and/or in a manner that will not (and/or is not expected to) cause an error condition. In some embodiments, movement in a manner that will not cause an error condition includes one or more of: movement that will not cause a collision (e.g., no obstructions are currently detected and/or expected), movement that is within an operating window of a movement component (e.g., is within a supported range of motion, is at a supported velocity, and/or uses (and/or is expected to use) a supported amount of force and/or power to move) and/or movement that is compatible with a current context (e.g., environmental context of the environment and/or operation context of the movement component).
[0104] In some embodiments, the first set of one or more criteria includes a criterion that is satisfied in accordance with a determination that the movement component is capable (e.g., mechanically capable and/or electronically capable) of performing movement according to the plurality of movement characteristics (e.g., movement according to the plurality of movement characteristics requires one or more movements that are supported by and/or able to be performed by the movement component). In some embodiments, the movement component is capable of performing movement according to the plurality of movement characteristics if such movement that is within an operating window of a movement component (e.g., is within a supported range of motion, is at a supported velocity, and/or uses (and/or is expected to use) a supported amount of force and/or power to move).
[0105] At 650A, first output component controller 604A optionally determines whether any updates (e.g., modifications, alternatives, changes, and/or ignoring) to the first output trajectory are needed. For example, the first output trajectory can be changed if first output component controller 604A determines that updates are needed based on one or more determinations (e.g., application of one or more criteria) (e.g., at 640A) with respect to state data (e.g., 654A) corresponding to output component 606A. At 650B, second output component controller 604B determines whether any updates (e.g., modifications, alternatives, changes, and/or ignoring) to the second output trajectory are needed. For example, the second output trajectory can be changed if second output component controller 604B determines that updates are needed based on one or more determinations (e.g., application of one or more criteria) (e.g., at 640B) with respect to state data (e.g., 654B) corresponding to output component 606B. In some embodiments, the operations at 650A and/or 650B are performed in response to detecting an error condition (e.g., after receiving state data and/or monitoring output (e.g., at 660A and/or 66B)).
[0106] In some embodiments, after receiving an output trajectory and in accordance with the determination that the second set of one or more criteria is satisfied: an output component controller (e.g., first output component controller 604A and/or second output component controller 604B) modifies the output trajectory to create a modified output trajectory (e.g., different from the output trajectory). In some embodiments, the modified output trajectory includes a modified plurality of movement characteristics different from the plurality of movement characteristics of the output trajectory (e.g., output component 606A and/or output component 606B). In some embodiments, the modified output trajectory is a new trajectory (e.g., not based on the trajectory received at 622A). In some embodiments, the output component controller modifies the output trajectory to create the modified output trajectory after beginning, while performing, and/or while pausing performing movement according to the output trajectory (e.g., modify the output trajectory after and/or while causing movement along the output trajectory). For example, the modified output trajectory can satisfy an applicable trajectory policy, and be used instead of the output trajectory (received from trajectory coordination component 320) to cause movement of the output component.
[0107] In some embodiments, after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria is satisfied, trajectory coordination component 320 causes movement of the movement component (e.g., output component 606A and/or 606B) according to a different timing (e.g., execution time) than a timing that corresponds to the output trajectory (e.g., moves slower or faster, begins at a different time, and/or ends at a different time) (e.g., the modified trajectory includes, is accompanied by, and/or is defined by modified target execution times). In some embodiments, after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria is satisfied, trajectory coordination component 320 causes no movement of the movement component (e.g., forgoes causing movement of the movement component).
[0108] In some embodiments, an output component controller (e.g., first output component controller 604A and/or second output component controller 604B) performs output according to a corresponding output trajectory when a trajectory coordination component is not reachable (e.g., is offline, is not responding (e.g., unintentionally and/or intentionally) (e.g., due to network issues, high bandwidth usage, network congestion and/or collision, high processor usage, physical connectivity issues, interference), and/or is no longer connected (e.g., connection lost and/or terminated) by the output component controller. For example, first output component controller 604 A can proceed with performing the first output trajectory (e.g., received via 622A) (and/or a modified output trajectory) in response to detecting an error condition.
[0109] In some embodiments, an output component controller (e.g., first output component controller 604A and/or second output component controller 604B) detects a safety condition (e.g., a collision and/or a pinch) and performs a responsive maneuver without (e.g., or before) communicating with trajectory coordination component 320. In some embodiments, the second set of one or more criteria includes a criterion that is satisfied in accordance with a determination that an error condition (e.g., condition (e.g., state, flag, event, and/or warning) that indicates that a potentially unsafe condition has occurred, is occurring, will occur, and/or is likely to occur) exists (e.g., is currently detected and/or is expected to occur based on performing a current and/or prospective output trajectory). In some embodiments, after receiving the output trajectory and in accordance with the determination that the second set of one or more criteria is satisfied: the output component controller determines a responsive output trajectory (e.g., responsive to the error condition) (e.g., a modified output trajectory) different from the output trajectory without communicating with (e.g., without exchanging (e.g., receiving and/or transmitting) a message, an instruction, and/or other data) trajectory coordination component 320.
[0110] In some embodiments, the responsive output trajectory causes (and/or otherwise allows) the first set of one or more criteria to be satisfied (e.g., the responsive output trajectory satisfies the first set of one or more criteria). In some embodiments, the output component controller causes the movement of the movement component according to movement characteristics of the responsive output trajectory.
[OHl] At 652A, first output component controller 604A provides control signals to output component 606 A to cause output according to the first output trajectory (e.g., if the first output trajectory satisfied applicable checks and/or criteria). For example, first output component controller 604A can apply motor control signals to output component 606A to cause movement according to the first output trajectory and/or apply light level controls to a circuit of a light output component to cause light output in accordance with the first output trajectory. At 652B, second output component controller 604B provides control signals to output component 606B to cause output according to the second output trajectory (e.g., if the second output trajectory satisfied applicable checks and/or criteria). For example, second output component controller 604B can apply motor control signals to output component 606B to cause movement according to the second output trajectory and/or apply light level controls to a circuit of a light output component to cause light output in accordance with the second output trajectory. In some embodiments, first output component controller 604A and/or second output component controller 604B perform their respective trajectories at a time offset (e.g., future time based on a target execution time). [0112] At 654A, first output component controller 604A receives state data from output component 606A. In some embodiments, the state data includes status information corresponding to output component 606 A (and/or one or more corresponding components, such as sensor monitoring output component 606A). At 654B, second output component controller 604B receives state data from output component 606B. In some embodiments, the state data includes status information corresponding to output component 606B (and/or one or more corresponding components, such as sensor monitoring output component 606B).
[0113] At 660A, first output component controller 604A monitors output of output component 606A (e.g., using state data received at 654A). In some embodiments, first output component controller 604A (and/or trajectory coordination component 320) can use the state data to track trajectory, detect errors, and/or allocate resources (e.g., based on knowing when a component is busy and/or free). At 660B, second output component controller 604B monitors output of output component 606B (e.g., using state data received at 654B. In some embodiments, second output component controller 604B (and/or trajectory coordination component 320) can use the state data to track trajectory, detect errors, and/or allocate resources (e.g., based on knowing when a component is busy and/or free).
[0114] In some embodiments, tracking trajectory includes tracking progress of an output component with respect to an output trajectory (e.g., comparing actual position to intended position at a particular time according to a movement trajectory being performed by a movement component). In some embodiments, detecting an error condition includes detecting that the progress of the output component does not match (e.g., satisfy and/or follow) (e.g., within a threshold tolerance) the output trajectory. In some embodiments, the tracking is performed while output according to the corresponding output trajectory is occurring. In some embodiments, the tracking is performed over time (e.g., at regular intervals, irregular intervals, and/or on demand (e.g., in response to an ad hoc request)).
[0115] In some embodiments, first output component controller 604A (e.g., at 660A) and/or second output component controller 604B (e.g., at 660B) detect one or more error condition (e.g., corresponding to the respective output components controlled by each) and provide an indication of the error condition to trajectory coordination component 320. At 662 A, first output component controller 604 A provides, to trajectory coordination component 320, an indication of an error condition (e.g., detected at 660A) corresponding to the output component 606A. At 662B, second output component controller 604B provides, to trajectory coordination component 320, an indication of an error condition (e.g., detected at 660B) corresponding to the output component 606B.
[0116] At 670, trajectory coordination component 320 determines that an update to the set of one or more trajectories is needed (e.g., including generating one or more modified trajectories). In some embodiments, a determination that an update is needed is based on state data received from one or more output components (e.g., at 662A and/or 662B). For example, trajectory coordination component 320 determines (at 670) updates to the first and second output trajectories in response to determining that an error condition exists at output component 606 A (e.g., and that output component 606 A needs a new output trajectory to compensate for the error and output component 606B needs a new output trajectory to maintain coordination with output component 606A). In some embodiments, trajectory coordination component 320 determines a modified trajectory for output component 606A (e.g., and output component 606B) based on feedback (e.g., an error or status) of output component 606B. In some embodiments, trajectory coordination component 320 determines a modified trajectory for output component 606B (e.g., and/or output component 606A) based on feedback (e.g., an error or status) of output component 606 A. For example, if output component 606A is performing movement too slowly, trajectory coordination component 320 can update the trajectory of output component 606B to slow down movement of output component 606B to match the movement speed of output component 606A (e.g., so that output component 606A and output component 606B appear to move in coordination).
[0117] At 672A, trajectory coordination component 320 provides (e.g., transmits, passes, and/or sends) a modified first output trajectory to (and/or for) first output component controller 604A (e.g., via a system controller of the electronic device) (e.g., similar to as described with respect to 622A). At 672B, trajectory coordination component 320 provides a modified second output trajectory to second output component controller 604B (e.g., similar to as described with respect to 622B).
[0118] In some embodiments, an output component controller (e.g., first output component controller 604A and/or second output component controller 604B) receives a modified trajectory and begins to perform output based on the updated trajectory. In some embodiments, the modified trajectory is received while a prior output trajectory is still being performed. For example, while output component 606B is performing movement, second output component controller 604B receives a modified trajectory configured to cause output component 606B to slow down to match output component 606A. In some embodiments, subject to the same checks described above (e.g., with respect to 640A and/or 640B) the output component controller changes output based on (e.g., to match) the modified trajectory. In some embodiments, changing the output includes overriding current trajectory (e.g., replacing in whole). In some embodiments, changing the output includes or blending the modified trajectory with the current trajectory (e.g., to smoothly transition between them).
[0119] FIG. 7 is a flow diagram illustrating a method for controlling output components in accordance with some embodiments. Method 700 is performed at an electronic device (e.g., 100 and/or 200). Some operations in method 700 are, optionally, combined, the orders of some operations are, optionally, changed, and some operations are, optionally, omitted.
[0120] As described below, method 700 provides an intuitive way for coordinating and controlling output components. The method reduces the cognitive burden on a user for coordinating and controlling output components, thereby creating a more efficient humanmachine interface. For battery operated computing devices, enabling a user to coordinate and control output components faster and more efficiently conserves power and increases the time between battery charges.
[0121] In some embodiments, method 700 is performed at a coordinated trajectory planning component (e.g., 320, 430, and/or 460) (e.g., implemented via one or more hardware components and/or one or more software components) (e.g., a UI compute (e.g., 460) (e.g., including a scene controller (e.g., 320A and/or 420) and/or a coordinated trajectory planning component (e.g., 320 and/or 430)) and/or a scene controller (e.g., 320A and/or 420)) (e.g., to process and enforce one or more scene definitions used in certain contexts (e.g., in response to a trigger, a condition, and/or timing) (e.g., set one or more motion modes for a movement component (e.g., one or more actuator and/or motor) in response to user input, object input, and/or scene definition) (e.g., determine a state of an object from a reported status (e.g., actuator is active and/or window is open)) (e.g., invoke a coordinated trajectory planning component for an output component (e.g., 350, 350A, 350B, 606A, and/or 606B) (e.g., a device in communication with the electronic device) (e.g., coordinate an animation across different objects and/or one or more output components in communication with the electronic device) (e.g., re-plan one or more trajectories in response to actuator feedback using a coordinated trajectory planning component) of the electronic device)) of an electronic device (e.g., 100, 200, and/or 300) (e.g., a watch, a phone, a tablet, a fitness tracking device, a processor, a head-mounted display (HMD) device, a communal device, a media device, a motorized electronic device, a wearable electronic device, an autonomous and/or semi-autonomous electronic device, a speaker, a television, and/or a personal computing device). In some embodiments, the electronic device is in communication with one or more input devices (e.g., a communications receiving component, a camera, a depth sensor, a microphone, a hardware input mechanism, a rotatable input mechanism, a heart monitor, a temperature sensor, and/or a touch- sensitive surface) and/or one or more output devices (e.g., a communications transmission component, a light output component, a movement component, a display generation component, an audio generation component, a speaker, a haptic output device, a display screen, a projector, and/or a touch-sensitive display). In some embodiments, the coordinated trajectory planning component is a component that determines trajectories for one or more output components of and/or in communication with the electronic device. In some embodiments, the coordinated trajectory planning component determines trajectories that are coordinated between different output components (e.g., of the same and/or different type). In some embodiments, a coordinated trajectory is coordinated in time, position, speed, and/or level with another trajectory (e.g., both trajectories are subject to execution times that creates the appearance of coordination between output components to an observer).
[0122] The coordinated trajectory planning component detects (702) (e.g., 610) (e.g., via the one or more input devices) a set of one or more inputs (e.g., 312, 324, 334, and/or 344). In some embodiments, the set of one or more inputs includes user input (e.g., a tap input and/or a non-tap input (e.g., a verbal input, an audible request, an audible command, an audible statement, a swipe input, a hold-and-drag input, a gaze input, an air gesture, rotation of a steering mechanism, and/or a mouse click)) and/or non-user input (e.g., data input received from another component, electronic device (e.g., 100 and/or 200), and/or process that is not triggered by user input). In some embodiments, the set of one or more inputs includes data input (e.g., received data such as media, audio, video, policies, preferences, and/or environmental data), event data (e.g., an event generated by a processor, component, logic, and/or software of the electronic device), feedback data (e.g., a context, such as an environmental context, a subject context of a subject in an environment, and/or an operational context of a component), and/or sensor data (e.g., position, velocity, acceleration, force, visual, and/or audio) (e.g., of the electronic device, of a subject, and/or of a different electronic device (e.g., a wearable device, a companion device of the electronic device, an electronic device of the subject, and/or another type of electronic device)). In some embodiments, the set of one or more inputs includes (and/or is detected in conjunction with) an indication (e.g., a command, a request, an instruction, an event, a trigger, and/or a condition occurring) that a coordinated set of output trajectories should be executed, generated, and/or output.
[0123] The coordinated trajectory planning component determines (704) (e.g., 620) (e.g., calculates, retrieves, generates, and/or derives), using (and/or in conjunction with (e.g., after and/or in response to) detecting) the set of one or more inputs, a set of two or more coordinated (e.g., having execution times that are generated with respect to each other and/or a common timing component and/or event) output trajectories (e.g., 510) (e.g., movement trajectories (e.g., of a movement component) and/or a trajectory of one or more operational settings (e.g., not necessarily movement) (e.g., a curve defining light output of a light component over time)) that include: (706) a first output trajectory (e.g., 510) for a first physical output component (e.g., 350, 350A, and/or 606A) (e.g., a component that is operable to and/or used to cause a physical output (e.g., physical movement, light output, sound output, haptic output, and/or opacity change), including and/or excluding any controller (e.g., a body controller) of the physical output component) (e.g., that is in communication with (e.g., part of, connected to, coupled to, and/or controlled by) the electronic device (e.g., 100 and/or 200)) (e.g., a first output animation) and a first target execution time for the first output trajectory; and a (708) second output trajectory (e.g., 510) for a second physical output component (e.g., 350, 350B, and/or 606B)(e.g., a component that is operable to and/or used to cause a physical output (e.g., physical movement, light output, sound output, haptic output, and/or opacity change), including and/or excluding any controller (e.g., a body controller) of the physical output component) (e.g., that is in communication with (e.g., part of, connected to, coupled to, and/or controlled by) the electronic device (e.g., 100 and/or 200)) (e.g., a second output animation) and a second target execution time for the second output trajectory, wherein the second physical output component is different from the first physical output component. In some embodiments, a physical output component (e.g., 350, 350A, 350B, 606A, and/or 606B) includes (and/or is) a movement component. In some embodiments, a physical output component includes (and/or is) a non-movement component (e.g., a light and/or an opacity controller and/or device). In some embodiments, an output trajectory (e.g., of the two or more output trajectories) is encoded (e.g., coded in a form that can be ingested, interpreted, understood, used, executed, and/or applied by an output component (e.g., 350, 350A, 350B, 606A, and/or 606B) and/or a controller in communication with the output component). In some embodiments, an output trajectory is referred to as a physical output trajectory. In some embodiments, the second output trajectory is coordinated with the first output trajectory. In some embodiments, the second output trajectory is different from the first output trajectory. In some embodiments, the second output trajectory is the same as the first output trajectory.
[0124] The coordinated trajectory planning component provides (710) (e.g., transmits, passes, and/or sends) (e.g., 622A), to (and/or for) the first physical output component (e.g., 350, 350A, and/or 606A) (e.g., via a system controller of the electronic device (e.g., 100 and/or 200)) (e.g., via the one or more output devices), the first output trajectory (e.g., 510) and the first target execution time. In some embodiments, the first output trajectory and the first target execution time are provided to the system controller that provides the first output trajectory and the first target execution time to the first physical output component.
[0125] The coordinated trajectory planning component provides (712) (e.g., transmits, passes, and/or sends) (e.g., 622B), to (and/or for) the second physical output component (e.g., 350, 350B, and/or 606B) (e.g., via the system controller) (e.g., via the one or more output devices), the second output trajectory (e.g., 510) and the second target execution time. In some embodiments, transmitting an output trajectory (e.g., the first and/or the second output trajectory) includes transmitting the output trajectory via one or more communication paths (e.g., one or more dedicated and/or non-dedicated data buses) (e.g., wireless and/or wired). In some embodiments, transmitting a movement trajectory to a physical output component causes the physical output component to cause physical output to occur and/or change (e.g., at a target execution time). In some embodiments, the second output trajectory and the second target execution time are provided to the system controller that provides the second output trajectory and the second target execution time to the second physical output component.
[0126] In some embodiments, the set of one or more inputs (e.g., 312, 324, 334, and/or 344) includes one or more user inputs (e.g., verbal input, gesture input, contact input, noncontact input, and/or other user input) (e.g., one or more inputs corresponding to a user). In some embodiments, the electronic device (e.g., 100 and/or 200) (and/or the coordinated trajectory planning component (e.g., 320 and/or 430)) determines the set of two or more coordinated output trajectories in response to detecting the set of one or more inputs (e.g., the one or more user inputs). In some embodiments, the electronic device (and/or the coordinated trajectory planning component) detects one or more other inputs of the set of one or more inputs in response to detecting the one or more user input (e.g., a user input causes electronic device to detect (and/or otherwise read, determine, and/or receive) input from one or more components (e.g., a sensor, a device, memory, and/or a controller)).
[0127] In some embodiments, the set of one or more inputs (e.g., 312, 324, 334, and/or 344) includes one or more non-user inputs (e.g., one or more inputs not corresponding to a user). In some embodiments, a non-user input (e.g., of the one or more non-user inputs) includes sensor data input (e.g., data received from a sensor), memory data input (e.g., data received and/or retrieved from memory), feedback data input (e.g., data regarding an operational state of a component in communication with the electronic device (e.g., 100 and/or 200), such as location, position, velocity, acceleration, status (e.g., open, closed, moving, obstructed, error, and/or communication status)), weather data input (e.g., input regarding the current and/or forecasted weather at the current location, at another location, and/or along a route), proximity data input (e.g., proximity to a subject (e.g., user, person, and/or object)), and/or electronic device data input (e.g., data representing operations, settings, instructions, states, and/or communications from, and/or of, the electronic device and/or one or more other electronic devices).
[0128] In some embodiments, the first output trajectory (e.g., 510) is different from the second output trajectory. In some embodiments, the electronic device (e.g., 100 and/or 200) (and/or the coordinated trajectory planning component (e.g., 320 and/or 430)) determines respective output trajectories (e.g., the set of two or more coordinated output trajectories) for a set of two or more physical output components (e.g., 350, 350A, 350B, 606A, and/or 606B) (e.g., that includes first physical output component and the second physical output component) (e.g., the electronic device (and/or the coordinated trajectory planning component) generates the first output trajectory for the first physical output component (e.g., 350, 350A, and/or 606A)and generates the second output trajectory for the second physical output component).
[0129] In some embodiments, determining the set of two or more coordinated output trajectories includes blending (e.g., combining, merging, and/or using characteristics of each of) a first predefined output trajectory (e.g., 510) and a second predefined output trajectory (e.g., 510) together to form a blended output trajectory (e.g., 510) (e.g., the first output trajectory, the second output trajectory, and/or a different output trajectory included in the set of two or more coordinated output trajectories).
[0130] In some embodiments, the set of two or more coordinated output trajectories include one or more of: a jerk-limited output trajectory (e.g., 510 and/or 550) (e.g., a trajectory for a movement component (e.g., 350, 350A, 350B, 606A, and/or 606B) that limits jerking movement (e.g., sudden changes in direction and/or acceleration that create ) (e.g., where a path from current position to a target position is unknown)); a Bezier curve output trajectory (e.g., 510 and/or 560) (e.g., a trajectory for controlling light output of a lighting component) (e.g., a trajectory based on and/or created using one or more Bezier curve (e.g., a type of parametric curve) (e.g., a curve defined by a set of control points to create a smooth curve using a formula)); a preset output trajectory (e.g., 510) (e.g., a predefined output trajectory); a manual motion output trajectory (e.g., 510) (e.g., an output trajectory created by user input (e.g., drawn and/or specified by user input)); and an acceleration limited output trajectory (e.g., 510) (e.g., a trajectory for a movement component that limits a characteristic of acceleration (e.g., rate of change of acceleration, maximum and/or minimum acceleration, and/or a fixed rate of acceleration)).
[0131] In some embodiments, determining (e.g., 620) the set of two or more coordinated output trajectories includes using a set of one or more motion policies (e.g., 800) that specify coordination (e.g., synchronization) between output trajectories of the set of two or more coordinated output trajectories. In some embodiments, coordination between output trajectories includes one or more of: matching and/or changing one or more characteristics of output trajectories (e.g., components move and/or change output in the same way over the same period of time, such that they appear to move and/or change in unison) and/or coordinating execution times of output trajectories (e.g., when a corresponding output trajectory (e.g., 510) starts, moves, changes, and/or ends).
[0132] In some embodiments, the coordinated trajectory planning component detects a second set of one or more inputs (e.g., 312, 324, 334, and/or 344) corresponding to (e.g., received from, representing and/or including information about and/or directed to) the first physical output component (e.g., 350, 350A, and/or 606A)(e.g., feedback, sensor data, a state of the first physical output device, and/or other data). In some embodiments, the second set of one or more inputs includes user input (e.g., a tap input and/or a non-tap input (e.g., a verbal input, an audible request, an audible command, an audible statement, a swipe input, a hold- and-drag input, a gaze input, an air gesture, rotation of a steering mechanism, and/or a mouse click)) and/or non-user input (e.g., data input received from another component, electronic device (e.g., 100 and/or 200), and/or process that is not triggered by user input). In some embodiments, the second set of one or more inputs includes data input (e.g., received data such as media, audio, video, policies, preferences, and/or environmental data), event data (e.g., an event generated by a processor, component, logic, and/or software of the electronic device), feedback data (e.g., a context, such as an environmental context, a subject context of a subject in an environment, and/or an operational context of a component), and/or sensor data (e.g., position, velocity, acceleration, force, visual, and/or audio) (e.g., of the electronic device, of a subject, and/or of a different electronic device (e.g., a wearable device, a companion device of the electronic device, an electronic device of the subject, and/or another type of electronic device)). In some embodiments, the second set of one or more inputs includes (and/or is detected in conjunction with) an indication (e.g., a command, a request, an instruction, an event, a trigger, and/or a condition occurring) that a coordinated set of output trajectories should be executed, generated, and/or output. In some embodiments, in response to (and/or after) detecting the second set of one or more inputs corresponding to the first physical output component (e.g., 350, 350A, and/or 606A)and in accordance with a determination that the second set of one or more inputs indicates that a set of one or more coordination criteria is not satisfied (e.g., indicating that a required coordination criteria will not be, cannot be, and/or is currently not satisfied) by the set of two or more coordinated output trajectories (e.g., by one or more output trajectories of the set of two or more coordinated output trajectories and/or by all of the output trajectories of the set of two or more coordinated output trajectories), the coordinated trajectory planning component determines (e.g., 670), using the second set of one or more inputs, an updated set of two or more coordinated output trajectories that is different from the set of two or more coordinated output trajectories. In some embodiments, the set of one or more coordination criteria is not satisfied when a coordination error occurs (e.g., has occurred, is occurring, and/or will occur) (e.g., the set of two or more coordinated output trajectories falls out of coordination due to, for example, capabilities of one or more physical components (e.g., failure or unexpected performance by the component), environmental factors (e.g., that causes and/or necessitates operation of the one or more physical output component in a different manner than a respective output trajectory (e.g., 510) of the set of one or more coordinated output trajectories), and/or other factors (e.g., any input and/or condition that can affect potential and/or actual performance of an output trajectory by the one or more physical output component)). In some embodiments, the electronic device (and/or the coordinated trajectory planning component (e.g., 320 and/or 430)) detects (e.g., receives and/or determines) information (e.g., data, state, status, and/or message) used to determine whether the set of one or more coordination criteria is satisfied (and/or not satisfied) (e.g., coordination error and/or environmental factors are received from one or more sensors and/or physical output components (e.g., 350, 350A, 350B, 606A, and/or 606B)).In some embodiments, in response to (and/or after) determining the updated set of two or more coordinated output trajectories (and/or in response to (and/or after) detecting the second set of one or more inputs corresponding to the first physical output component), the coordinated trajectory planning component provides (e.g., 672 A and/or 627B), to at least one of the first physical output component and the second physical output component, an updated output trajectory (e.g., 510) (e.g., a new trajectory and/or a modified version of a prior corresponding trajectory) of the updated set of two or more coordinated output trajectories. In some embodiments, in response to (and/or after) determining the updated set of two or more coordinated output trajectories (and/or in response to (and/or after) detecting the second set of one or more inputs corresponding to the first physical output component), the electronic device (and/or the coordinated trajectory planning component) provides, to the first physical output component, a first updated output trajectory of the updated set of two or more coordinated output trajectories. In some embodiments, in response to (and/or after) determining the updated set of two or more coordinated output trajectories (and/or in response to (and/or after) detecting the second set of one or more inputs corresponding to the first physical output component), the electronic device (and/or the coordinated trajectory planning component) provides, to the second physical output component, a second updated output trajectory of the updated set of two or more coordinated output trajectories. In some embodiments, the second updated output trajectory is different from the first updated output trajectory. In some embodiments, the second updated output trajectory is different from the first updated output trajectory. In some embodiments, the first updated output trajectory corresponds to and/or is different from the first output trajectory. In some embodiments, the second updated output trajectory corresponds to and/or is different from the second output trajectory. In some embodiments, an updated output trajectory for the first physical output component depends on (e.g., has one more output characteristics that are selected, determined, and/or generated based on) the set of one or more inputs corresponding to the first physical output component (e.g., feedback from the first physical output component). In some embodiments, an updated output trajectory for the first physical output component depends on (e.g., has one more output characteristics that are selected, determined, and/or generated based on) the set of one or more inputs corresponding to the second physical output component (e.g., feedback from the second physical output component) (and/or one or more inputs corresponding to one or more other physical output components). In some embodiments, an updated output trajectory for the second physical output component depends on (e.g., has one more output characteristics that are selected, determined, and/or generated based on) the set of one or more inputs corresponding to the second physical output component (e.g., feedback from the second physical output component). In some embodiments, an updated output trajectory for the second physical output component depends on (e.g., has one more output characteristics that are selected, determined, and/or generated based on) the set of one or more inputs corresponding to the first physical output component (e.g., feedback from the first physical output component) (and/or one or more inputs corresponding to one or more other physical output components).
[0133] In some embodiments, determining the updated set of two or more coordinated output trajectories is performed while at least a portion of the set of two or more coordinated output trajectories (e.g., the first output trajectory (e.g., 510) and/or the second output trajectory (e.g., 510)) is performed (e.g., as indicated by target execution times) (e.g., determining new and/or updated trajectories is performed while prior corresponding trajectories are being used by one or more output components (e.g., 350, 350A, 350B, 606A, and/or 606B) to cause output).
[0134] In some embodiments, the updated set of two or more coordinated output trajectories includes: a third output trajectory (e.g., 510) (e.g., an update to the first output trajectory and/or a new output trajectory) for the first physical output component (e.g., 350, 350A, and/or 606A) different from the first output trajectory (e.g., 510) (and/or different from the second output trajectory). In some embodiments, the updated set of two or more coordinated output trajectories includes: a third target execution time (e.g., the same as or different from the first target execution time) (e.g., different from the first target execution time and/or the second target execution time). In some embodiments, providing the updated output trajectory (e.g., 510) of the updated set of two or more coordinated output trajectories includes providing (e.g., 672A), to the first physical output component (e.g., 606A) (e.g., and/or to and/or via the first physical output component controller (e.g., 604A)), at least one (and/or one) (and/or either) (and/or both) of the third output trajectory (e.g., if different from the first output trajectory and/or even if not different from the first output trajectory) and the third target execution time (e.g., if different from the first target execution time and/or even if not different from the first target execution time). In some embodiments, in accordance with a determination that the third target execution time is determined and/or provided to the first physical output component, the third target execution time replaces (e.g., is used instead of and/or in lieu of) the first target execution time. In some embodiments, in accordance with a determination that the third output trajectory is determined and/or provided to the first physical output component, the third output trajectory replaces (e.g., is used instead of and/or in lieu of) the first output trajectory.
[0135] In some embodiments, the updated set of two or more coordinated output trajectories includes: a fourth output trajectory (e.g., 510) (e.g., an update to the second output trajectory and/or a new output trajectory) for the second physical output component (e.g., 350, 606A, and/or 606B) different from the second output trajectory (e.g., 510) (and/or different from the first output trajectory). In some embodiments, the updated set of two or more coordinated output trajectories includes a fourth target execution time (e.g., the same as or different from the second target execution time) (e.g., different from the first target execution time, the second target execution time, and/or the third target execution time). In some embodiments, providing the updated output trajectory of the updated set of two or more coordinated output trajectories includes providing (e.g., 672B), to the second physical output component (e.g., and/or to and/or via the second physical output component controller (e.g., 604B)), at least one (and/or one) (and/or either) (and/or both) of the fourth output trajectory (e.g., if different from the second output trajectory and/or even if not different from the second output trajectory) and the fourth target execution time (e.g., if different from the second target execution time and/or even if not different from the second target execution time). In some embodiments, in accordance with a determination that the fourth target execution time is determined and/or provided to the second physical output component, the fourth target execution time replaces (e.g., is used instead of and/or in lieu of) the second target execution time. In some embodiments, in accordance with a determination that the fourth output trajectory is determined and/or provided to the second physical output component, the fourth output trajectory replaces (e.g., is used instead of and/or in lieu of) the second output trajectory. [0136] In some embodiments, the coordinated trajectory planning component performs one or more time synchronization operations directed to (e.g., for the purpose of, that results in, and/or that enables the other devices to perform) coordinating output trajectory execution (e.g., performance of and/or output of output trajectories by physical output components (e.g., 350, 350A, 350B, 606A, and/or 606B)) (e.g., coordination between one or more output components (e.g., the first output component and/or the second output component) and/or between an output component and the coordinated trajectory planning component (e.g., 320 and/or 430)). In some embodiments, the one or more time synchronization operations include operations as specified in, supported by, comporting to, compatible with, and/or for implementing the protocols in accordance with IEEE 802. IAS and/or any protocol for synchronizing timing over a network (e.g., local area network and/or wide area network). In some embodiments, the one or more time synchronization operations includes synchronizing with one or more physical output component controller (e.g., 340, 604A, and/or 604B) for respective physical output components (e.g., 350, 350A, 350B, 606A, and/or 606B) that correspond to a respective output trajectory of the set of two or more coordinated output trajectories. In some embodiments, the one or more time synchronization operations includes synchronizing with a first physical output component controller for the first physical output component (e.g., 350, 350A, and/or 606A). In some embodiments, the one or more time synchronization operations includes synchronizing with a second physical output component controller (e.g., same as or different from the first physical output component controller) for the second physical output component (e.g., 350, 350B, and/or 606B).
[0137] In some embodiments, the coordinated trajectory planning component (e.g., 320 and/or 430) provides the first output trajectory (e.g., 510) and the first target execution time via a first network that includes one or more of ethernet-based communication and controller area network (CAN)-based communication. In some embodiments, the coordinated trajectory planning component provides the second output trajectory and the second target execution time via a second network (e.g., the same or different from the first network) that includes one or more of ethernet-based communication and controller area network (CAN)-based communication. In some embodiments, ethernet-based communication is performed using operations as specified in, supported by, comporting to, compatible with, and/or for implementing the Ethernet protocols in accordance with IEEE 802.3. In some embodiments, CAN-based communication is performed using operations as specified in, supported by, comporting to, compatible with, and/or for implementing the CAN protocols in accordance with ISO 11898.
[0138] In some embodiments, the coordinated trajectory planning component (e.g., 320 and/or 430) provides the first output trajectory as a parameterized curve (e.g., 510, 550, and/or 560) (e.g., a first parameterized curve). In some embodiments, the coordinated trajectory planning component provides the second output trajectory as a second parameterized curve (e.g., different from the first parameterized curve).
[0139] In some embodiments, the set of two or more coordinated output trajectories include output trajectories for one or more physical output components (e.g., 350, 350A, 350B, 606A, and/or 606B) of the following: one or more display generation components (e.g., displays, screens, and/or projectors); one or more audio output components (e.g., speakers and/or amplifiers); one or more movement components (e.g., motors, linkages, and/or movable components that resist and/or absorb applied energy); one or more light output components (e.g., light controllers, light-emitting diodes (LEDs) and/or lightbulbs); and one or more opacity control components (e.g., for reducing and/or increasing light transmissivity of a medium).
[0140] Note that details of the processes described above with respect to method 700 (e.g., FIG. 7) are also applicable in an analogous manner to the methods described below/above. For example, method 800 optionally includes one or more of the characteristics of the various methods described above with reference to method 700. For example, providing an output trajectory, by the coordinated trajectory planning component of process 700, can be to an output component of process 800. For brevity, these details are not repeated below.
[0141] FIG. 8 is a flow diagram illustrating a method for controlling output components in accordance with some embodiments. Method 800 is performed at an electronic device (e.g., 100 and/or 200). Some operations in method 800 are, optionally, combined, the orders of some operations are, optionally, changed, and some operations are, optionally, omitted.
[0142] As described below, method 800 provides an intuitive way for coordinating and controlling output components. The method reduces the cognitive burden on a user for coordinating and controlling output components, thereby creating a more efficient humanmachine interface. For battery operated computing devices, enabling a user to coordinate and control output components faster and more efficiently conserves power and increases the time between battery charges.
[0143] In some embodiments, method 800 is performed at a physical output component controller (e.g., 340, 604A, and/or 604B) (e.g., that controls a set of one or more physical output components (e.g., 350, 350A, 350B, 606A, and/or 606B)) (e.g., implemented via one or more hardware components and/or one or more software components) of an electronic device (e.g., 100 and/or 200) (e.g., a watch, a phone, a tablet, a fitness tracking device, a processor, a head-mounted display (HMD) device, a communal device, a media device, a motorized electronic device, a wearable electronic device, an autonomous and/or semi- autonomous electronic device, a speaker, a television, and/or a personal computing device). In some embodiments, the electronic device is in communication with one or more input devices (e.g., a communications receiving component, a camera, a depth sensor, a microphone, a hardware input mechanism, a rotatable input mechanism, a heart monitor, a temperature sensor, and/or a touch-sensitive surface) and/or one or more output devices (e.g., a communications transmission component, a light output component, a movement component, a display generation component, an audio generation component, a speaker, a haptic output device, a display screen, a projector, and/or a touch-sensitive display). In some embodiments, the physical output component controller includes logic to control one or more output components (e.g., a mechanism, such as a collection of joints), arbitrates requests to the coordinated trajectory planning component (e.g., 320 and/or 430), monitors safety conditions, and/or has the ability to plan own trajectories when the coordinated trajectory planning component is offline (e.g., not responding and/or not reachable). In some embodiments, the physical output component controller is (and/or is part of and/or includes) a body controller (e.g., 480 of FIG. 4B and/or 4C).
[0144] The physical output component controller receives (802) (e.g., via the one or more input devices) (e.g., 622A and/or 622B) an output trajectory (e.g., 510) (e.g., as described above with respect to method 700) (e.g., an output animation, an encoded animation, and/or a decoded animation) that includes a plurality of movement characteristics (e.g., velocity, acceleration, position, position goal (e.g., end point), range of motion, and/or movement mode) for a set of one or more movement components (e.g., 350, 606A, and/or 606B) (e.g., as described above with respect to method 700), wherein the output trajectory is generated by a coordinated trajectory planning component (e.g., 320 and/or 430) (e.g., as described above with respect to method 700) (e.g., UI compute component) (e.g., in communication with (e.g., part of, internal to, external to, a different component than, coupled to, and/or connected to) and/or part of the electronic device (e.g., 100 and/or 200)) different from the physical output component controller (e.g., 340, 604A, and/or 604B).
[0145] After (804) receiving the output trajectory (e.g., 510) (e.g., in response to and/or in conjunction with) (and/or during performance and/or execution of the output trajectory), in accordance with a determination (e.g., made by the electronic device (e.g., 100 and/or 200)) that a first set of one or more criteria is satisfied (e.g., 640A and/or 640B) (e.g., with respect to and/or by the output trajectory and/or a portion thereof) (e.g., criteria indicating that movement according to the output trajectory can be performed in a manner that satisfies a set of conditions (e.g., a manner that will not (and/or is not expected to) cause an error condition)), the physical output component controller causes (806) (e.g., via the one or more output devices) (e.g., 652A and/or 652B) movement of a movement component (e.g., 350, 606A, and/or 606B) (e.g., included in the set of one or more movement components) according to (e.g., that matches, attempts to match, and/or is a best effort attempt to match) the plurality of movement characteristics of the output trajectory (e.g., 510). In some embodiments, the movement component is a component of the electronic device. In some embodiments, the movement component is external to the electronic device. In some embodiments, the electronic device causes movement of a plurality of movement components (e.g., including the movement component) according to plurality of movement characteristics of one or more output trajectories (e.g., including the output trajectory).
[0146] After (804) receiving the output trajectory, in accordance with a determination (e.g., made by the electronic device (e.g., 100 and/or 200)) that a second set of one or more criteria is satisfied (e.g., with respect to and/or by the output trajectory and/or a portion thereof) (e.g., criteria indicating that movement according to the output trajectory cannot be performed in a manner that satisfies a set of conditions (e.g., a manner that will not (and/or is not expected to) cause an error condition)), wherein the second set of one or more criteria is different from the first set of one or more criteria, the physical output component controller forgoes (808) causing movement of the movement component (e.g., 350, 606A, and/or 606B) according to the plurality of movement characteristics of the output trajectory (e.g., 510). In some embodiments, after receiving the output trajectory (e.g., in response to and/or in conjunction with) (and/or during performance and/or execution of the output trajectory) and in accordance with a determination that the second set of one or more criteria is satisfied, the electronic device causes movement of the movement component according to a set of one or more movement characteristics (e.g., not of the output trajectory) (e.g., causes a different movement) different from the plurality of movement characteristics of the output trajectory. In some embodiments, after receiving the output trajectory (e.g., in response to and/or in conjunction with) (and/or during performance and/or execution of the output trajectory) and in accordance with a determination that the second set of one or more criteria is satisfied, the electronic device causes movement of the movement component according to a different timing (e.g., execution time) than a timing that corresponds to the output trajectory (e.g., moves slower or faster, begins at a different time, and/or ends at a different time). In some embodiments, after receiving the output trajectory (e.g., in response to and/or in conjunction with) (and/or during performance and/or execution of the output trajectory) and in accordance with a determination that the second set of one or more criteria is satisfied, the electronic device causes no movement of the movement component (e.g., forgoes causing movement of the movement component).
[0147] In some embodiments, the second set of one or more criteria includes a first criterion (e.g., that is the only criterion or that is one of a plurality of criteria of the second set of one or more criteria) that is satisfied when the first set of one or more criteria is not satisfied.
[0148] In some embodiments, the first set of one or more criteria includes a second criterion that is satisfied in accordance with a determination that movement of the movement component (e.g., 350, 606A, and/or 606B) according to the plurality of movement characteristics can be performed in a manner that satisfies a set of conditions (e.g., a manner that will not (and/or is not expected to) cause an error condition). In some embodiments, movement in a manner that satisfies the set of conditions includes one or more of: movement that will not cause a collision (e.g., no obstructions are currently detected and/or expected), movement that is within an operating window of a movement component (e.g., is within a supported range of motion, is at a supported velocity, and/or uses (and/or is expected to use) a supported amount of force and/or power to move) and/or movement that is compatible with a current context (e.g., environmental context of the environment and/or operation context of the movement component). [0149] In some embodiments, the first set of one or more criteria includes a third criterion (e.g., different from or the same as the first criterion and/or the second criterion) that is satisfied in accordance with a determination that the movement component (e.g., 350, 606A, and/or 606B) is capable (e.g., mechanically capable and/or electronically capable) of performing movement according to the plurality of movement characteristics (e.g., movement according to the plurality of movement characteristics requires one or more movements that are supported by and/or able to be performed by the movement component). In some embodiments, the movement component is capable of performing movement according to the plurality of movement characteristics if such movement that is within an operating window of a movement component (e.g., is within a supported range of motion, is at a supported velocity, and/or uses (and/or is expected to use) a supported amount of force and/or power to move).
[0150] In some embodiments, after receiving the output trajectory (e.g., 510) and in accordance with the determination that the second set of one or more criteria is satisfied, the physical output component controller modifies the output trajectory to create a modified output trajectory (e.g., 510) different from the output trajectory, wherein the modified output trajectory includes a modified plurality of movement characteristics different from the plurality of movement characteristics. In some embodiments, the physical output component controller (e.g., 340, 604 A, and/or 604B) modifies the output trajectory to create the modified output trajectory after beginning, while performing, and/or while pausing performing movement according to the output trajectory (e.g., modify the output trajectory after and/or while causing movement along the output trajectory). In some embodiments, after receiving the output trajectory and in accordance with the determination that the second set of one or more criteria is satisfied, the physical output component controller causes movement (e.g., after receiving the output trajectory and in accordance with the determination that the second set of one or more criteria is satisfied) of the movement component (e.g., 350, 606A, and/or 606B) according to the modified plurality of movement characteristics of the modified output trajectory. In some embodiments, the modified output trajectory causes (and/or otherwise allows) the first set of one or more criteria to be satisfied (e.g., the modified output trajectory satisfies the first set of one or more criteria). In some embodiments, the electronic device (e.g., 100 and/or 200) (and/or the physical output component controller) causes the movement of the movement component according to the modified plurality of movement characteristics of the modified output trajectory, in accordance with a determination that the first set of one or more criteria is satisfied (e.g., by the modified output trajectory and/or after determining the modified output trajectory).
[0151] In some embodiments, the physical output component controller (e.g., 340, 604A, and/or 604B) receives (e.g., directly and/or via one or more intermediary components) the output trajectory from the coordinated trajectory planning component (e.g., 320 and/or 430). In some embodiments, causing movement of the movement component (e.g., 350, 606A, and/or 606B) according to the plurality of movement characteristics of the output trajectory (and/or according to a plurality of movement characteristics of a modified output trajectory) is performed (e.g., is caused) while the coordinated trajectory planning component is not reachable (e.g., is offline, is not responding (e.g., unintentionally and/or intentionally) (e.g., due to network issues, high bandwidth usage, network congestion and/or collision, high processor usage, physical connectivity issues, interference), and/or is no longer connected (e.g., connection lost and/or terminated) to the physical output component controller).
[0152] In some embodiments, the second set of one or more criteria includes a fourth criterion (e.g., different from or the same as the first criterion, the second criterion and/or the third criterion) that is satisfied in accordance with a determination that an error condition (e.g., a safety condition and/or condition (e.g., state, flag, event, and/or warning) that indicates that an unsafe condition has occurred, is occurring, will occur, and/or is likely to occur) exists (e.g., is currently detected and/or is expected to occur based on performing a current and/or prospective output trajectory). In some embodiments, after receiving the output trajectory and in accordance with the determination that the second set of one or more criteria is satisfied (e.g., before or after receiving the output trajectory) (e.g., and in accordance with a determination that the safety condition is urgent), the physical output component controller determines a responsive output trajectory (e.g., responsive to the error condition) different from the output trajectory without communicating with (e.g., without exchanging (e.g., receiving and/or transmitting) a message, an instruction, and/or other data) the coordinated trajectory planning component (e.g., 320 and/or 430), wherein the responsive output trajectory includes a second plurality of movement characteristics different from the plurality of movement characteristics. In some embodiments, after receiving the output trajectory and in accordance with the determination that the second set of one or more criteria is satisfied, the physical output component controller causes movement (e.g., after receiving the output trajectory and in accordance with the determination that the second set of one or more criteria is satisfied) (e.g., and without communicating with (and/or while continuing to not communicate with) the coordinated trajectory planning component) (e.g., while the second set of one or more criteria is and/or continues to be satisfied) of the movement component (e.g., 350, 606A, and/or 606B) according to the second plurality of movement characteristics of the responsive output trajectory. In some embodiments, the responsive output trajectory causes (and/or otherwise allows) the first set of one or more criteria to be satisfied (e.g., the responsive output trajectory satisfies the first set of one or more criteria). In some embodiments, the electronic device (and/or the physical output component controller (e.g., 340, 604A, and/or 604B)) causes the movement of the movement component according to the second plurality of movement characteristics of the responsive output trajectory, in accordance with a determination that the first set of one or more criteria is satisfied (e.g., by the responsive output trajectory and/or after determining the responsive output trajectory). In some embodiments, after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria ceases to be satisfied (e.g., a determination that the error condition ceases to be detected, has passed, and/or has been mitigated), the electronic device (and/or the physical output component controller) completes movement of the movement component according to the second plurality of movement characteristics of the responsive output trajectory. In some embodiments, after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria ceases to be satisfied, the electronic device (and/or the physical output component controller) ceases movement of the movement component according to the second plurality of movement characteristics of the responsive output trajectory. In some embodiments, after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria ceases to be satisfied, the electronic device (and/or the physical output component controller) determines a new output trajectory (e.g., based on a current context of the electronic device). In some embodiments, after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria ceases to be satisfied, the electronic device (and/or the physical output component controller) causes movement of a movement component according to the plurality of movement characteristics of the output trajectory (e.g., restarts, returns to, and/or begins the received output trajectory from the coordinated trajectory planning component). In some embodiments, after receiving the output trajectory and in accordance with a determination that the second set of one or more criteria ceases to be satisfied, the electronic device (and/or the physical output component controller) determines a modified output trajectory (e.g., modified version of the responsive output trajectory, modified version of the output trajectory, a blended trajectory of two or more trajectories, and/or a modified version of another output trajectory).
[0153] In some embodiments, the output trajectory received (e.g., 612A and/or 612B) from the coordinated trajectory planning component (e.g., 320 and/or 430) is encoded. In some embodiments, after receiving the output trajectory, the physical output component controller decodes (e.g., 630A and/or 630B) the output trajectory (e.g., into a decoded output trajectory (e.g., 332 and/or 520)). In some embodiments, the electronic device (e.g., 100 and/or 200) (and/or the physical output component controller (e.g., 340, 604A, and/or 604B)) causes movement of a movement component (e.g., 350, 606A, and/or 606B) according to the plurality of movement characteristics of the output trajectory after decoding the output trajectory. In some embodiments, decoding the output trajectory (e.g., into a decoded output trajectory (e.g., 332 and/or 520)) includes converting the output trajectory into data that can be used by (e.g., read by, parsed by, understood by and/or applied by) the physical output component controller and/or the movement component. In some embodiments, a decoded output trajectory includes a set of one or more positions, settings, values, locations, states, locations, and/or target execution times (e.g., that together define a path over time of an output according to the output trajectory).
[0154] In some embodiments, the output trajectory is a first output trajectory. In some embodiments, the physical output component controller receives a second output trajectory (e.g., the same as or different from the first output trajectory) (e.g., 672A and/or 672B) that includes a third plurality of movement characteristics (e.g., the same as or different from the first and/or second plurality of movement characteristics) for the set of one or more movement components (e.g., 350, 606A, and/or 606B), wherein the second output trajectory is generated by the coordinated trajectory planning component (e.g., 320 and/or 430). In some embodiments, the physical output component controller (e.g., 340, 604A, and/or 604B) receives the second output trajectory after receiving the output trajectory (e.g., and after causing movement according to the plurality of movement characteristics of the output trajectory) (e.g., and after forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory). In some embodiments, after receiving the second output trajectory, in accordance with a determination that the first set of one or more criteria is satisfied (e.g., with respect to and/or by the second output trajectory), the physical output component controller causes movement of the movement component according to the third plurality of movement characteristics of the second output trajectory. In some embodiments, after receiving the second output trajectory, in accordance with a determination that the second set of one or more criteria is satisfied (e.g., with respect to and/or by the second output trajectory), the physical output component controller forgoes causing movement of the movement component according to the third plurality of movement characteristics of the second output trajectory.
[0155] In some embodiments, the second output trajectory is received while causing ongoing movement (e.g., is presently causing movement) of the movement component (e.g., 350, 606A, and/or 606B) (e.g., according to a movement trajectory) (e.g., according to the output trajectory, a responsive output trajectory, and/or another output trajectory). In some embodiments, the second output trajectory is an update to the output trajectory. In some embodiments, the second output trajectory is a new trajectory (e.g., different from the output trajectory). In some embodiments, causing movement of the movement component according to the third plurality of movement characteristics of the second output trajectory includes transitioning (e.g., overriding, changing over to, and/or blending together) (e.g., continuing movement without stopping or stopping for a moment (e.g., to change direction)) the ongoing movement of the movement component into movement of the movement component according to the third plurality of movement characteristics of the second output trajectory.
[0156] In some embodiments, before causing movement of the movement component (e.g., 350, 606A, and/or 606B) according to the plurality of movement characteristics of the output trajectory, the physical output component controller receives a target execution time (e.g., a time offset from a particular time (e.g., according to a clock of the electronic device (e.g., 100 and/or 200) and/or another device) and/or a future time) for the output trajectory, wherein the first set of one or more criteria includes a fifth criterion (e.g., different from or the same as the first criterion, the second criterion, the third criterion, and/or the fourth criterion) that is satisfied in accordance with a determination that the target execution time occurs (e.g., is occurring, is about to occur, and/or has just occurred).
[0157] In some embodiments, the movement component (e.g., 350, 606A, and/or 606B) is a first movement component (e.g., 606A). In some embodiments, causing movement of the movement component according to the plurality of movement characteristics of the output trajectory includes coordinating the movement of the first movement component with a second movement component (e.g., 606B) different from the first movement component. In some embodiments, the physical output component controller (e.g., 340, 604A, and/or 604B) coordinates the movement of the first movement component with the second movement component while causing (e.g., continuing to cause and/or after beginning to cause) the movement of the first movement component. In some embodiments, coordinating the movement of the first movement component includes providing (e.g., sending, transmitting, sharing, and/or communicating) state data (e.g., current state data) (e.g., data representing one or more of position, velocity, acceleration, output level, and/or opacity) corresponding to (e.g., during, describing, related to, and/or about) the movement of the first movement component. In some embodiments, coordinating the movement of the first movement component includes receiving state data (e.g., current state data) (e.g., data representing one or more of position, velocity, acceleration, output level, and/or opacity) corresponding to (e.g., during, describing, related to, and/or about) the second movement component (e.g., and/or corresponding to movement of the second movement component). In some embodiments, coordinating the movement of the first movement component includes coordinating a beginning execution time, an intermediate execution time, and/or an ending execution time (e.g., of the output trajectory and/or any portion of the output trajectory). In some embodiments, coordinating the movement of the first movement component includes modifying a movement characteristic of the output trajectory based on (e.g., due to, in response to, and/or to match) the second movement component.
[0158] In some embodiments, the physical output component controller (e.g., 340, 604A, and/or 604B) is a first physical output component controller (e.g., 604A). In some embodiments, the second movement component (e.g., 606B) is controlled by a second physical output component controller (e.g., 604B) different from the first physical output component controller (e.g., 604A).
[0159] In some embodiments, coordinating the movement of the first movement component (e.g., 350, 606A, and/or 606B) with the second movement component (e.g., 350, 606A, and/or 606B) includes delaying (e.g., delaying a start of and/or pausing and delaying for a time) at least a portion of the movement of the first movement component according to the plurality of movement characteristics of the output trajectory based on a state corresponding to (e.g., received from and/or required to be received from (e.g., before continuing movement)) the second movement component. [0160] Note that details of the processes described above with respect to method 800 (e.g., FIG. 8) are also applicable in an analogous manner to the methods described below/above. For example, method 700 optionally includes one or more of the characteristics of the various methods described above with reference to method 800. For example, receiving an output trajectory, by the output component of process 800, can be provided by the coordinated trajectory planning component of process 700. For brevity, these details are not repeated below.
[0161] The present disclosure has been laid out above referencing specific examples. However, such examples and descriptions are not intended limit the disclosure to those embodiments contained herein and are not intended to be exhaustive. Many modifications and variations are possible in view of the above teachings. The examples were chosen and described in order to best explain the principles of the techniques and their practical applications. An individual skilled in the art would thereby be enabled to utilize the present disclosure as laid out, and enabled to best utilize the techniques and various examples with various modifications as are suited to the particular use contemplated.
[0162] While the present disclosure and examples are accompanied by references to specific drawings, it is to be noted that various changes and modifications will become apparent to those skilled in the art. Such changes and modifications are to be understood as being included within the scope of the disclosure and examples as defined by the claims.
[0163] As described above, the present technology improves how a device interacts with a user by gathering and using data from various available sources. In some embodiments, this data can include personal data (e.g., demographic data, location-based data, telephone numbers, email addresses, home addresses, or any other identifying information) that uniquely identifies or can be used to contact or locate a specific person.
[0164] The present disclosure recognizes that the use of personal information data can enhance a user’s experience while using a computer system. For example, personal information data can be used for the benefit of users by changing how a computer system interacts with a user. Thus, enabling better user interactions. Additionally, other uses for personal information data that benefit the user are also contemplated by the present disclosure. [0165] The present disclosure further contemplates that the use of a user’s personal information data, in the present technology, impacts the user’s privacy. As well, that the entities responsible for the collection, analysis, disclosure, transfer, storage, or other use of such personal information data will comply with well-established privacy policies and/or privacy practices. Particularly, the implementation and maintenance of industry or government standard privacy policies and practice is required for entities to keep personal information data private and secure. For example, entities should only collect personal information data for reasonable and legitimate uses within the entity and should not be shared or sold to outside entities. Additionally, the collection of personal information data should only occur after receiving information consent from the target users. Further, once such personal information data has been obtained, entities should take necessary steps to secure the collected personal information data from improper access or use. Therefore, entities should ensure their practices follow their established privacy policies and procedures, either internally or through third party evaluations to certify their practices.
[0166] Alternatively, the present disclosure also ensures that the functionality of the disclosed embodiments is not rendered inoperable due to the lack of all or a portion of such personal information data. The present disclosure considers embodiments that allow users to selectively block the use of, or access to, personal information data. Such inability to access personal information data can be provided through hardware components and/or software elements. For example, in the case of image capture, the present technology can be configured to allow users to select to “opt in” or “opt out” of participation in the collection of personal information data during registration for services. Thus, while the present disclosure is broadly directed to the use of personal information data in one or more various disclosed embodiments, the present disclosure also contemplates that the various embodiments can also be implemented without the use of such personal information data. For example, content can be displayed to users by inferring location based on non-personal information data or a bare minimum amount of personal information, such as the content being requested by the device associated with a user or other non-personal information.

Claims

CLAIMS What is claimed is:
1. A method, comprising: at a coordinated trajectory planning component of an electronic device: detecting a set of one or more inputs; determining, using the set of one or more inputs, a set of two or more coordinated output trajectories that include: a first output trajectory for a first physical output component and a first target execution time for the first output trajectory; and a second output trajectory for a second physical output component and a second target execution time for the second output trajectory, wherein the second physical output component is different from the first physical output component; providing, to the first physical output component, the first output trajectory and the first target execution time; and providing, to the second physical output component, the second output trajectory and the second target execution time.
2. The method of claim 1, wherein the set of one or more inputs includes one or more user inputs.
3. The method of any one of claims 1-2, wherein the set of one or more inputs includes one or more non-user inputs.
4. The method of any one of claims 1-3, wherein the first output trajectory is different from the second output trajectory.
5. The method of any one of claims 1-4, wherein determining the set of two or more coordinated output trajectories includes blending a first predefined output trajectory and a second predefined output trajectory together to form a blended output trajectory.
6. The method of any one of claims 1-5, wherein the set of two or more coordinated output trajectories include one or more of: a jerk-limited output trajectory; a Bezier curve output trajectory; a preset output trajectory; a manual motion output trajectory; and an acceleration limited output trajectory.
7. The method of any one of claims 1-6, wherein determining the set of two or more coordinated output trajectories includes using a set of one or more motion policies that specify coordination between output trajectories of the set of two or more coordinated output trajectories.
8. The method of any one of claims 1-7, further comprising: detecting a second set of one or more inputs corresponding to the first physical output component; in response to detecting the second set of one or more inputs corresponding to the first physical output component and in accordance with a determination that the second set of one or more inputs indicates that a set of one or more coordination criteria is not satisfied by the set of two or more coordinated output trajectories, determining, using the second set of one or more inputs, an updated set of two or more coordinated output trajectories that is different from the set of two or more coordinated output trajectories; and in response to determining the updated set of two or more coordinated output trajectories, providing, to at least one of the first physical output component and the second physical output component, an updated output trajectory of the updated set of two or more coordinated output trajectories.
9. The method of claim 8, wherein determining the updated set of two or more coordinated output trajectories is performed while at least a portion of the set of two or more coordinated output trajectories is performed.
10. The method of any one of claims 8-9, wherein: the updated set of two or more coordinated output trajectories includes: a third output trajectory for the first physical output component different from the first output trajectory; and a third target execution time; and providing the updated output trajectory of the updated set of two or more coordinated output trajectories includes providing, to the first physical output component, at least one of the third output trajectory and the third target execution time.
11. The method of any one of claims 8-10, wherein: the updated set of two or more coordinated output trajectories includes: a fourth output trajectory for the second physical output component different from the second output trajectory; and a fourth target execution time; and providing the updated output trajectory of the updated set of two or more coordinated output trajectories includes providing, to the second physical output component, at least one of the fourth output trajectory and the fourth target execution time.
12. The method of any one of claims 1-11, further comprising: performing one or more time synchronization operations directed to coordinating output trajectory execution.
13. The method of any one of claims 1-12, wherein the coordinated trajectory planning component provides the first output trajectory and the first target execution time via a first network that includes one or more of ethemet-based communication and controller area network (CAN)-based communication.
14. The method of any one of claims 1-13, wherein the coordinated trajectory planning component provides the first output trajectory as a parameterized curve.
15. The method of any one of claims 1-14, wherein the set of two or more coordinated output trajectories include output trajectories for one or more physical output components of the following: one or more display generation components; one or more audio output components; one or more movement components; one or more light output components; and one or more opacity control components.
16. A non-transitory computer-readable medium storing one or more programs configured to be executed by one or more processors of an electronic device, the one or more programs including instructions for performing, by a coordinated trajectory planning component, the method of any one of claims 1-15.
17. An electronic device, comprising: one or more processors; and memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for performing, by a coordinated trajectory planning component, the method of any one of claims 1-15.
18. An electronic device, comprising: means for performing, by a coordinated trajectory planning component, the method of any one of claims 1-15.
19. A computer program product, comprising one or more programs configured to be executed by one or more processors of an electronic device, the one or more programs including instructions for performing, by a coordinated trajectory planning component, the method of any one of claims 1-15.
20. A non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of an electronic device, the one or more programs including instructions for, by a coordinated trajectory planning component: detecting a set of one or more inputs; determining, using the set of one or more inputs, a set of two or more coordinated output trajectories that include: a first output trajectory for a first physical output component and a first target execution time for the first output trajectory; and a second output trajectory for a second physical output component and a second target execution time for the second output trajectory, wherein the second physical output component is different from the first physical output component; providing, to the first physical output component, the first output trajectory and the first target execution time; and providing, to the second physical output component, the second output trajectory and the second target execution time.
21. An electronic device, comprising: one or more processors; and memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for, by a coordinated trajectory planning component: detecting a set of one or more inputs; determining, using the set of one or more inputs, a set of two or more coordinated output trajectories that include: a first output trajectory for a first physical output component and a first target execution time for the first output trajectory; and a second output trajectory for a second physical output component and a second target execution time for the second output trajectory, wherein the second physical output component is different from the first physical output component; providing, to the first physical output component, the first output trajectory and the first target execution time; and providing, to the second physical output component, the second output trajectory and the second target execution time.
22. An electronic device, comprising: by a coordinated trajectory planning component: means for detecting a set of one or more inputs; means for determining, using the set of one or more inputs, a set of two or more coordinated output trajectories that include: a first output trajectory for a first physical output component and a first target execution time for the first output trajectory; and a second output trajectory for a second physical output component and a second target execution time for the second output trajectory, wherein the second physical output component is different from the first physical output component; means for providing, to the first physical output component, the first output trajectory and the first target execution time; and means for providing, to the second physical output component, the second output trajectory and the second target execution time.
23. A computer program product, comprising one or more programs configured to be executed by one or more processors of an electronic device, the one or more programs including instructions for, by a coordinated trajectory planning component: detecting a set of one or more inputs; determining, using the set of one or more inputs, a set of two or more coordinated output trajectories that include: a first output trajectory for a first physical output component and a first target execution time for the first output trajectory; and a second output trajectory for a second physical output component and a second target execution time for the second output trajectory, wherein the second physical output component is different from the first physical output component; providing, to the first physical output component, the first output trajectory and the first target execution time; and providing, to the second physical output component, the second output trajectory and the second target execution time.
24. A method, comprising: at a physical output component controller of an electronic device: receiving an output trajectory that includes a plurality of movement characteristics for a set of one or more movement components, wherein the output trajectory is generated by a coordinated trajectory planning component different from the physical output component controller; and after receiving the output trajectory: in accordance with a determination that a first set of one or more criteria is satisfied, causing movement of a movement component according to the plurality of movement characteristics of the output trajectory; and in accordance with a determination that a second set of one or more criteria is satisfied, wherein the second set of one or more criteria is different from the first set of one or more criteria, forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory.
25. The method of claim 24, wherein the second set of one or more criteria includes a first criterion that is satisfied when the first set of one or more criteria is not satisfied.
26. The method of any one of claims 24-25, wherein the first set of one or more criteria includes a second criterion that is satisfied in accordance with a determination that movement of the movement component according to the plurality of movement characteristics can be performed in a manner that satisfies a set of conditions.
27. The method of any one of claims 24-26, wherein the first set of one or more criteria includes a third criterion that is satisfied in accordance with a determination that the movement component is capable of performing movement according to the plurality of movement characteristics.
28. The method of any one of claims 24-27, further comprising: after receiving the output trajectory and in accordance with the determination that the second set of one or more criteria is satisfied: modifying the output trajectory to create a modified output trajectory different from the output trajectory, wherein the modified output trajectory includes a modified plurality of movement characteristics different from the plurality of movement characteristics; and causing movement of the movement component according to the modified plurality of movement characteristics of the modified output trajectory.
29. The method of any one of claims 24-28, wherein: the physical output component controller receives the output trajectory from the coordinated trajectory planning component; and causing movement of the movement component according to the plurality of movement characteristics of the output trajectory is performed while the coordinated trajectory planning component is not reachable.
30. The method of any one of claims 24-29, wherein the second set of one or more criteria includes a fourth criterion that is satisfied in accordance with a determination that an error condition exists, the method further comprising: after receiving the output trajectory and in accordance with the determination that the second set of one or more criteria is satisfied: determining a responsive output trajectory different from the output trajectory without communicating with the coordinated trajectory planning component, wherein the responsive output trajectory includes a second plurality of movement characteristics different from the plurality of movement characteristics; and causing movement of the movement component according to the second plurality of movement characteristics of the responsive output trajectory.
31. The method of any one of claims 24-30, wherein the output trajectory received from the coordinated trajectory planning component is encoded, the method further comprising: after receiving the output trajectory, decoding the output trajectory.
32. The method of any one of claims 24-31, wherein the output trajectory is a first output trajectory, the method further comprising: receiving a second output trajectory that includes a third plurality of movement characteristics for the set of one or more movement components, wherein the second output trajectory is generated by the coordinated trajectory planning component; and after receiving the second output trajectory: in accordance with a determination that the first set of one or more criteria is satisfied, causing movement of the movement component according to the third plurality of movement characteristics of the second output trajectory; and in accordance with a determination that the second set of one or more criteria is satisfied, forgoing causing movement of the movement component according to the third plurality of movement characteristics of the second output trajectory.
33. The method of claim 32, wherein: the second output trajectory is received while causing ongoing movement of the movement component; and causing movement of the movement component according to the third plurality of movement characteristics of the second output trajectory includes transitioning the ongoing movement of the movement component into movement of the movement component according to the third plurality of movement characteristics of the second output trajectory.
34. The method of any one of claims 24-33, further comprising: before causing movement of the movement component according to the plurality of movement characteristics of the output trajectory, receiving a target execution time for the output trajectory, wherein the first set of one or more criteria includes a fifth criterion that is satisfied in accordance with a determination that the target execution time occurs; and after receiving the output trajectory and in accordance with a determination that the first set of one or more criteria is satisfied, the movement of the movement component according to the plurality of movement characteristics of the output trajectory is caused according to the target execution time.
35. The method of any one of claims 24-34, wherein the movement component is a first movement component, and wherein causing movement of the movement component according to the plurality of movement characteristics of the output trajectory includes coordinating the movement of the first movement component with a second movement component different from the first movement component.
36. The method of claim 35, wherein the physical output component controller is a first physical output component controller, and wherein the second movement component is controlled by a second physical output component controller different from the first physical output component controller.
37. The method of any one of claims 35-36, wherein coordinating the movement of the first movement component with the second movement component includes delaying at least a portion of the movement of the first movement component according to the plurality of movement characteristics of the output trajectory based on a state corresponding to the second movement component.
38. A non-transitory computer-readable medium storing one or more programs configured to be executed by one or more processors of an electronic device, the one or more programs including instructions for performing, by a physical output component controller, the method of any one of claims 24-37.
39. An electronic device, comprising: one or more processors; and memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for performing, by a physical output component controller, the method of any one of claims 24-37.
40. An electronic device, comprising: means for performing, by a physical output component controller, the method of any one of claims 24-37.
41. A computer program product, comprising one or more programs configured to be executed by one or more processors of an electronic device, the one or more programs including instructions for performing, by a physical output component controller, the method of any one of claims 24-37.
42. A non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of an electronic device, the one or more programs including instructions for, by a physical output component controller: receiving an output trajectory that includes a plurality of movement characteristics for a set of one or more movement components, wherein the output trajectory is generated by a coordinated trajectory planning component different from the physical output component controller; and after receiving the output trajectory: in accordance with a determination that a first set of one or more criteria is satisfied, causing movement of a movement component according to the plurality of movement characteristics of the output trajectory; and in accordance with a determination that a second set of one or more criteria is satisfied, wherein the second set of one or more criteria is different from the first set of one or more criteria, forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory.
43. An electronic device, comprising: one or more processors; and memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for, by a physical output component controller: receiving an output trajectory that includes a plurality of movement characteristics for a set of one or more movement components, wherein the output trajectory is generated by a coordinated trajectory planning component different from the physical output component controller; and after receiving the output trajectory: in accordance with a determination that a first set of one or more criteria is satisfied, causing movement of a movement component according to the plurality of movement characteristics of the output trajectory; and in accordance with a determination that a second set of one or more criteria is satisfied, wherein the second set of one or more criteria is different from the first set of one or more criteria, forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory.
44. An electronic device, comprising: by a physical output component controller: means for receiving an output trajectory that includes a plurality of movement characteristics for a set of one or more movement components, wherein the output trajectory is generated by a coordinated trajectory planning component different from the physical output component controller; and after receiving the output trajectory: means for, in accordance with a determination that a first set of one or more criteria is satisfied, causing movement of a movement component according to the plurality of movement characteristics of the output trajectory; and means for, in accordance with a determination that a second set of one or more criteria is satisfied, wherein the second set of one or more criteria is different from the first set of one or more criteria, forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory.
45. A computer program product, comprising one or more programs configured to be executed by one or more processors of an electronic device, the one or more programs including instructions for, by a physical output component controller: receiving an output trajectory that includes a plurality of movement characteristics for a set of one or more movement components, wherein the output trajectory is generated by a coordinated trajectory planning component different from the physical output component controller; and after receiving the output trajectory: in accordance with a determination that a first set of one or more criteria is satisfied, causing movement of a movement component according to the plurality of movement characteristics of the output trajectory; and in accordance with a determination that a second set of one or more criteria is satisfied, wherein the second set of one or more criteria is different from the first set of one or more criteria, forgoing causing movement of the movement component according to the plurality of movement characteristics of the output trajectory.
PCT/US2024/040128 2023-09-29 2024-07-30 Techniques for controlling output components Pending WO2025071755A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202363541763P 2023-09-29 2023-09-29
US63/541,763 2023-09-29
US18/619,651 2024-03-28
US18/619,651 US20250110458A1 (en) 2023-09-29 2024-03-28 Techniques for controlling output components

Publications (1)

Publication Number Publication Date
WO2025071755A1 true WO2025071755A1 (en) 2025-04-03

Family

ID=92459171

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2024/040128 Pending WO2025071755A1 (en) 2023-09-29 2024-07-30 Techniques for controlling output components

Country Status (1)

Country Link
WO (1) WO2025071755A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160132030A1 (en) * 2013-11-15 2016-05-12 Apple Inc. Aggregating user routines in an automated environment
US20160231718A1 (en) * 2015-02-09 2016-08-11 Twin Harbor Labs, LLC Personal Proximity with Preferences
US20220066405A1 (en) * 2020-08-26 2022-03-03 Troy Aaron Harvey Methods and systems of building automation STATE load and user preference via network systems activity

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160132030A1 (en) * 2013-11-15 2016-05-12 Apple Inc. Aggregating user routines in an automated environment
US20160231718A1 (en) * 2015-02-09 2016-08-11 Twin Harbor Labs, LLC Personal Proximity with Preferences
US20220066405A1 (en) * 2020-08-26 2022-03-03 Troy Aaron Harvey Methods and systems of building automation STATE load and user preference via network systems activity

Similar Documents

Publication Publication Date Title
CN107430679A (en) Computer vision system
CN107290972B (en) Equipment control method and device
KR102623190B1 (en) Artificial intelligence device and artificial intelligence system for caring air state of indoor
US11698614B2 (en) Systems, device and method of managing a building automation environment
US20250110458A1 (en) Techniques for controlling output components
US20250110467A1 (en) Techniques for output component control architectures
US20250110846A1 (en) Techniques for replanning coordination and control of output components
US20250113164A1 (en) Techniques for using a substitute output trajectory
WO2025071755A1 (en) Techniques for controlling output components
US20250110510A1 (en) Techniques for using policies for coordination and control of output components
EP4500306A1 (en) Gesture-based remote control of electronic devices
US12436823B2 (en) Techniques for coordinating device activity
US20250317653A1 (en) Methods for capturing content
US20240134953A1 (en) Subsequent accessory setup
CN114299949A (en) User fuzzy instruction receiving system
US12489805B2 (en) Receiver initiated mirroring session
US12047228B2 (en) Event reporting
US20240244329A1 (en) Automatic reframing
US20240107160A1 (en) Perception modes
WO2024085983A1 (en) Accessory setup using a setup code
US20240370278A1 (en) Techniques for managing interactions with ui elements
US20240406233A1 (en) Delaying live communications
US20250355612A1 (en) Group synchronization with shared content
WO2025212301A1 (en) Methods for capturing content
US20240403074A1 (en) Framework for creating user interfaces

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 24758634

Country of ref document: EP

Kind code of ref document: A1