Communication path seeking
By applying a non-recursive depth-first search algorithm in the vehicle network to determine the optimal communication path with the external computing network, the problem of low communication efficiency in the vehicle network is solved, efficient and low-latency communication path selection is achieved, and the automation and autonomy of vehicle operation are improved.
Patent Information
- Application Number
- CN202510296603.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-03-19
- Filing Date
- 2025-03-13
- Publication Date
- 2025-09-19
AI Technical Summary
Existing technologies have difficulty in efficiently determining the optimal communication path between a vehicle network and an external computing network, especially in complex vehicle network topologies, resulting in low communication efficiency.
A non-recursive depth-first search algorithm is used to identify the connection types of communication nodes in the vehicle network and the external computing network, and to determine the optimal network path with the least number of nodes to achieve efficient communication.
It improves the communication efficiency between vehicles and external computing networks, reduces communication delays and resource consumption, and enhances the automation and autonomy of vehicle operations.
Smart Images

Figure CN120676426A_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to routing a vehicle by communicating via a network. Background Art
[0002] Computers can operate systems including vehicles, robots, drones, and / or object tracking systems. Data can be acquired by sensors, processed by computers, and sent to controllers for operating the systems by communicating over a network. The network can include nodes that communicate with external computing networks (such as the internet) to acquire data and communicate status. Summary of the Invention
[0003] Systems that are mobile and / or have moving parts (including vehicles, robots, drones, mobile phones, etc.) can operate by acquiring sensor data and processing the sensor data to determine data about the environment surrounding the system. For example, a robot can determine the position of the arm of another nearby robot. The robot can use the determined position of the robot arm to determine a path on which to move a gripper to grab a workpiece without encountering the arm of the other robot. In another example, a vehicle can determine the position of another vehicle traveling on a road. The vehicle can use the determined position of the other vehicle to determine a path to operate on while maintaining a predetermined distance from the other vehicle. Vehicle operation will be used as a non-limiting example of system operation in the following description herein.
[0004] A vehicle may include devices such as sensors, computers, and controllers, all of which are communicatively connected via a network. Each device included in the network is referred to herein as a node. The network elements that connect the nodes of the network are referred to herein as edges. A network is composed of nodes connected by edges. A network path is a list of edges and includes nodes that communicatively connect two nodes of the network. A network topology is the arrangement of nodes and edges. A network topology can be cyclic, where two nodes can be connected via more than one path; or acyclic, where the nodes of the network are connected via only one path. An example of a cyclic network is a ring network, and an example of an acyclic network is a tree network. A network may include cyclic portions and acyclic portions.
[0005] The vehicle network may include devices that communicate with external computing networks, such as the Internet, a transportation infrastructure system, or an ad hoc network including nearby vehicles. For example, the external computing network may provide data such as maps to enhance vehicle navigation, data about traffic to enhance vehicle operation, and permit the vehicle to transmit status and location data. The network linking the devices included in the vehicle may include a wired network, and the link to the external computing network may be wireless. Figure 1Wired network connections and wireless network connections are discussed. A wireless network connection may be included in a communication node, which may include a computing device. More than one type of wireless network connection may be included in a communication node.
[0006] The communication pathfinding techniques described herein can enhance communication with external computing networks by identifying nodes of a network that include each type of active communication link available among nodes in the vehicle network. A non-recursive network search algorithm can be utilized to determine a network path connecting a source node initiating a communication request with an active communication link of the type for which communication is being requested. The identified paths can then be compared to identify the path with the highest bandwidth and lowest latency, for example, to provide the most efficient path for communication between the source node and the external computing network.
[0007] A method is disclosed herein, comprising: identifying a communication node included in a first computer network including a network device node, the communication node including a connection to an external computer network; and identifying a source node included in the network device node. A non-recursive algorithm may be performed on a list of network paths in the first computer network connecting the source node to the communication node, and a preferred network path including the fewest nodes between the source node and the communication node may be identified from the list of network paths. The source node may communicate with the external computer network via the preferred network path and the communication node. The first computer network may include a vehicle communication system, which may include one or more of a controller area network and an Ethernet network.
[0008] The list of nodes may include a communication node and a second communication node including a connection to an external computer network. The external computer network may include the Internet. The non-recursive algorithm may include a depth-first search. The communication node may include multiple types of connections to the external computer network. Determining the communication node including a connection to the external computer network may include determining that a specified type of connection is available for communication. The type of connection to the external computer network may include a Wi-Fi connection, a cellular connection, and a wired connection. The non-recursive algorithm may include a first stack including network device nodes. The non-recursive algorithm may include a second stack including a list of network device nodes. The first network may include an acyclic graph and a cyclic graph. The first computer network may be included in a vehicle. The non-recursive algorithm may include a pushback() operation, a back() operation, and a popBack() operation. The non-recursive algorithm may include visiting nodes of the stack.
[0009] Further disclosed is a computer-readable medium storing program instructions for performing some or all of the above-described method steps. Further disclosed is a computer programmed to perform some or all of the above-described method steps, the computer comprising a computer device programmed to: identify a communication node included in a first computer network comprising a network device node, the communication node including a connection to an external computer network; and identify a source node included in the network device node. A non-recursive algorithm may be performed on a list of network paths in the first computer network connecting the source node to the communication node, and a preferred network path including the fewest number of nodes between the source node and the communication node may be identified from the list of network paths. The source node may communicate with the external computing network via the preferred network path and the communication node. The first computer network may comprise a vehicle communication system, which may comprise one or more of a controller area network and an Ethernet network.
[0010] The instructions may include further instructions, wherein the list of nodes may include a communication node and a second communication node including a connection to an external computer network. The external computer network may include the Internet. The non-recursive algorithm may include a depth-first search. The communication node may include multiple types of connections to the external computer network. Determining the communication node including a connection to the external computer network may include determining that a specified type of connection is available for communication. The type of connection to the external computer network may include a Wi-Fi connection, a cellular connection, and a wired connection. The non-recursive algorithm may include a first stack including network device nodes. The non-recursive algorithm may include a second stack including a list of network device nodes. The first network may include an acyclic graph and a cyclic graph. The first computer network may be included in a vehicle. The non-recursive algorithm may include a pushback() operation, a back() operation, and a popBack() operation. The non-recursive algorithm may include visiting nodes of the stack. BRIEF DESCRIPTION OF THE DRAWINGS
[0011] Figure 1 is a block diagram of an example vehicle system.
[0012] Figure 2 is a diagram of an example vehicle network.
[0013] Figure 3 is a diagram of an example network node stack.
[0014] Figure 4 is a flow chart of an example process for identifying network paths.
[0015] Figure 5 is a flow diagram of an example process for identifying network nodes that have connections. DETAILED DESCRIPTION
[0016] Figure 1 FIG1 is a diagram of a vehicle computing system 100. Vehicle computing system 100 includes a vehicle 110, a computing device 115 included in vehicle 110, and a server computer 120 remote from vehicle 110. One or more computing devices 115 of vehicle 110 may receive data regarding the operation of vehicle 110 from sensors 116. Computing device 115 may operate vehicle 110 based on the data received from sensor 116 and data received from remote server computer 120. Server computer 120 may communicate with vehicle 110 via an external computing network 130.
[0017] The computing device 115 includes a processor and memory such as are known. In addition, the memory includes one or more forms of computer-readable media and stores instructions that can be executed by the processor for performing various operations, including the operations disclosed herein. For example, the computing device 115 may include programming to operate one or more of vehicle braking, propulsion (i.e., controlling the acceleration of the vehicle 110 by controlling one or more of the internal combustion engine, electric motor, hybrid engine, etc.), steering, climate control, interior lights, exterior lights, etc., and determine whether and when the computing device 115 (rather than a human operator) controls such operations. The computing device 115 may also control the time alignment of lighting with sensor acquisition to take into account the color effects of vehicle lights or exterior lights.
[0018] The computing device 115 may include more than one computing device (i.e., controllers included in the vehicle 110 for monitoring and controlling various vehicle components, etc. (i.e., propulsion controller 112, brake controller 113, steering controller 114, etc.)), or be communicatively coupled to the more than one computing device via a vehicle network 122 as further described below. The computing device 115 is typically arranged for communication over the vehicle network 122 (i.e., such as a controller area network (CAN)); the vehicle network 122 may additionally or alternatively include, for example, known wired or wireless communication mechanisms, such as Ethernet or other communication protocols.
[0019] The computing device 115 can transmit and receive messages to and from various devices in the vehicle 110 (i.e., controllers, actuators, sensors (including sensor 116), etc.) via the vehicle network 122. Alternatively or in addition, where the computing device 115 actually includes multiple devices, the vehicle network 122 can be used for communication between the devices represented in this disclosure as the computing device 115. In addition, as mentioned below, various controllers or sensing elements (such as sensor 116) can provide data to the computing device 115 via the vehicle network 122.
[0020] Additionally, the computing device 115 may be configured to communicate with a remote server computer 120 (i.e., a cloud server) via an external computing network 130 through a vehicle-to-infrastructure (V2I) interface 111, as described below, which includes hardware, firmware, and software that permits the computing device 115 to communicate with a remote server computer 120 (i.e., a cloud server) via a vehicle-to-infrastructure (V2I) interface 111, such as a wireless Internet connection. The V2X interface 111 may thus include a computer configured to communicate with the remote server computer 120 using various wired and wireless networking technologies (i.e., cellular, The computing device 115 may include a processor, memory, transceiver, and the like, including Bluetooth Low Energy (BLE), Ultra-Wideband (UWB), peer-to-peer communication, UWB-based radar, IEEE 802.11, and other wired and wireless packet networks or technologies. The computing device 115 may be configured to communicate with other vehicles 110 via a V2X (vehicle-to-everything) interface 111 using a vehicle-to-vehicle (V2V) network (i.e., based on cellular communication (C-V2X) wireless communication, dedicated short-range communication (DSRC), and similar communications) formed between adjacent vehicles 110 on a mobile ad hoc basis or via an infrastructure-based network. The computing device 115 may also include non-volatile memory, such as is known in the art. The computing device 115 may record data by storing it in the non-volatile memory for later retrieval and transmission to the server computer 120 or the user's mobile device 160 via the vehicle communication network and the vehicle-to-infrastructure (V2I) interface 111.
[0021] As already mentioned, programming for operating one or more vehicle 110 components (i.e., braking, steering, propulsion, etc.) without human operator intervention is typically included in instructions stored in memory and executable by a processor of the computing device 115. Using data received at the computing device 115 (i.e., sensor data from sensors 116, data from the server computer 120, etc.), the computing device 115 can make various determinations and control various vehicle 110 components and operations. For example, the computing device 115 may include programming to control or manage vehicle 110 operating behavior (i.e., the physical manifestations of vehicle 110 operation), such as speed, acceleration, deceleration, steering, etc., as well as strategic behavior (i.e., controlling operating behavior in a manner generally intended to achieve efficient traversal of a route), such as the distance between vehicles and the amount of time between vehicles, lane changes, minimum gaps between vehicles, minimum left turn crossing paths, arrival times at specific locations, and the minimum time from arrival to crossing an intersection (without a signal).
[0022] A controller (as that term is used herein) comprises a computing device that is typically programmed to monitor and control specific vehicle subsystems. Examples include propulsion controller 112, brake controller 113, and steering controller 114. The controller may be, for example, an electronic control unit (ECU), as is known in the art, and may include additional programming as described herein. The controller may be communicatively connected to computing device 115 and receive instructions from the computing device to actuate the subsystems accordingly. For example, brake controller 113 may receive instructions from computing device 115 to operate the brakes of vehicle 110.
[0023] One or more controllers 112, 113, 114 for the vehicle 110 may include known electronic control units (ECUs) and the like, including, as non-limiting examples, one or more propulsion controllers 112, one or more brake controllers 113, and one or more steering controllers 114. Each of the controllers 112, 113, 114 may include a corresponding processor and memory, as well as one or more actuators. The controllers 112, 113, 114 may be programmed and connected to a vehicle 110 communication bus, such as a controller area network (CAN) bus or a local interconnect network (LIN) bus, to receive instructions from a computing device 115 and control the actuators based on the instructions.
[0024] Sensors 116 may include various devices, such as those known in the art, to provide data via the vehicle communication bus. For example, a radar mounted on the front bumper (not shown) of vehicle 110 may provide the distance from vehicle 110 to the next vehicle in front of vehicle 110, or a global positioning system (GPS) sensor located in vehicle 110 may provide the geographic coordinates of vehicle 110. For example, the distances provided by radar and other sensors 116 and the geographic coordinates provided by the GPS sensor may be used by computing device 115 to operate vehicle 110 autonomously or semi-autonomously.
[0025] Vehicle 110 is typically a ground-based vehicle 110 (i.e., a passenger car, light truck, etc.) capable of autonomous and semi-autonomous operation and having three or more wheels. Vehicle 110 includes one or more sensors 116, a V2I interface 111, a computing device 115, and one or more controllers 112, 113, and 114. Sensors 116 may collect data related to vehicle 110 and the operating environment of vehicle 110. By way of example and not limitation, sensors 116 may include altimeters, cameras, lidars, radars, ultrasonic sensors, infrared sensors, pressure sensors, accelerometers, gyroscopes, temperature sensors, Hall sensors, optical sensors, voltage sensors, current sensors, mechanical sensors (such as switches), and the like. Sensors 116 may be used to sense the operating environment of vehicle 110. That is, sensors 116 may detect phenomena such as weather conditions (rainfall, external ambient temperature, etc.), road grade, road position (i.e., use of roadside curbs, lane markings, etc.), or the location of target objects (such as those adjacent to vehicle 110). The sensors 116 may also be used to collect data, including dynamic vehicle 110 data related to the operation of the vehicle 110 , such as speed, yaw rate, steering angle, engine speed, brake pressure, oil pressure, power levels applied to controllers 112 , 113 , 114 in the vehicle 110 , connectivity between components, and accurate and timely performance of components of the vehicle 110 .
[0026] The server computer 120 generally has features in common with the V2I interface 111 and computing device 115 of the vehicle 110, such as a computer processor and memory and configuration for communicating via the external computing network 130, and therefore these features will not be described further to reduce redundancy. The server computer 120 can be used to develop and train software that can be transferred to the computing device 115 in the vehicle 110.
[0027] Figure 22 is a diagram of an example vehicle network 200. The vehicle network includes nodes 202, 204, 206, 208, 210, 212 (collectively, nodes 226) and edges 214, 216, 218, 220, 222, 224 (collectively, edges 228). Node 226 may include computing device 115, sensor 116, controller 112, 113, 114, V2I interface 111, and other devices such as are known in the art. Edge 228 is a wired or wireless connection that transmits data from one node 226 to another node 226. Node 226 may receive data via edge 228 and input data to a device within node 226. Node 226 may also receive data via a first edge 228 and transmit data to another node 226 via a second edge 228. In this manner, any node 226 in the vehicle network 200 can communicate with any other node 226 in the vehicle network 200 via the plurality of edges 228 and the plurality of nodes 226. The nodes 226 and edges 228 used to communicate from a first node 226 to a second node 226 are referred to herein as a network path.
[0028] Note that because vehicle network 200 is cyclic, more than one path can connect first node 226 to second node 226. For example, node 204 can communicate with node 210 via a first path including edges 216 and 220 and node 206, or a second path including edges 218 and 222 and node 208. Different paths in vehicle network 200 can have correspondingly different efficiencies, as indicated by the length of time required to send data from first node 226 to second node 226 on the network. The length of time required to send data from first node 226 to second node 226 on a path can depend on the number of edges 228 and the number of nodes 226 traversed when sending data on the path. In addition to the number of edges 228 and the number of nodes 226, the length of time required to send data on a path can depend on the processing speed of each node 226 traversed. When transferring data from a first edge 228 to a second edge 228, a node 226 may receive the data from the first edge 228, make a copy of the data in memory, and output the data from memory to the second edge 228. The length of time required to transfer the data may depend on the number and length of edges 228 traversed and the speed and availability of computing resources in the node 226 performing the transfer. These factors can be summarized as bandwidth and latency, which indicate the number of bits of data per unit time that can be transferred over the network and the total amount of time required to transfer the message.
[0029] The vehicle network 200 may include multiple nodes 226 that seek to communicate with the external computing network 130. For example, a computing device 115 included in the vehicle network 200 may seek to download map data from a server computer 120 via the Internet. The vehicle network 200 may have multiple V2I interfaces 111 included in the multiple nodes 226 of the vehicle network 200, not all of which may be actively connected to the Internet at any given time. A given node 226 may have multiple types of interfaces, each connected to a different type of external computing network.
[0030] The techniques described herein can enhance communication with external computing networks for a vehicle network by determining which types of V2I interfaces 111 are available at which nodes 226 in the vehicle network 200, and then determining the most efficient path for communication from a source node 226 to an available V2I interface 111 based on a non-recursive depth-first search (DFS) algorithm. The non-recursive DFS algorithm can enhance communication with external computing networks 130 by searching the vehicle network 200 without requiring recursion. Recursion refers to a programming style that performs repetitive actions, such as graph searches, by creating recursive functions that call themselves. Each time a recursive function calls itself, it keeps track of its current position within the graph by pushing an internal variable indicating the state of the search onto a function call stack. When the search for a portion of the graph is complete, the recursive function can return the results to the previous instance of the recursive function by returning execution to the calling instance of the recursive function and popping the stack variable from the top of the function stack.
[0031] Recursive functions can make it easier and less error-prone for a coder to decode a repetitive function (such as a DFS graph search) because the recursive function can be decoded and debugged only once. For example, once a recursive function is decoded and debugged, the runtime function call stack handling capabilities of the computing device 115 keep track of the data structures used to return and store the results of the repetitive algorithm. Keeping track of the data structures used to return and store the results of the repetitive algorithm requires computing resources, including instructions and memory for storing and retrieving function calls and stack variables. The techniques described herein can use non-recursive function calls and global stack variables that do not require repeated storage and retrieval to perform DFS. The non-recursive DFS algorithm may require more effort and care when decoding to ensure error-free operation, but can produce results equivalent to the recursive algorithm while requiring fewer computing resources to execute.
[0032] Figure 3302 and node stacks 304, 306, and 308 (collectively, node stacks 336). Node stacks 336 are data structures that include node references 320, 322, 324, 326, 328, and 330 (collectively, node references 334). Node references 334 are memory pointers to nodes 226 in the memory of computing device 115. Node stacks 302 are data structures that include stack references 310, 312, and 314 (collectively, stack references 334). Stack references 334 are memory pointers that refer to node stacks 336, respectively.
[0033] A stack is a data structure that supports at least a pushback() operation, a back() operation, and a popback() operation. puback(), back(), and popback() are memory operations that store or recall node references 334 to or from a node stack 336 or to or from a node reference 334 in a stack in stack 302, respectively. The pushback() operation is Figure 3 302 by stack reference 316 and arrow 318. Executing a pushback() operation on stack reference 316 moves stack reference 316 to the top of the stack in stack 302. In a similar manner, a popback() operation removes the top stack reference 334 from the stack in stack 302. A back() operation copies the top stack reference 334 from the stack in stack 302 without removing it. Similarly, node reference 334 is added, copied, or removed from node stacks 304, 306, and 308 by a pushback() operation, a back() operation, and a popback() operation, respectively.
[0034] By limiting access to the stack and node stack 336 in stack 302 to pushback() operations, back() operations, and popback() operations, the order in which stack references 334 and node references 334 are added or removed from the stack and node stack 336 in stack 302 is maintained. Maintaining the order in which stack references 334 and node references 334 are added or removed from the stack and node stack 336 in stack 302 permits a non-recursive DFS algorithm to emulate the operation of a recursive algorithm without requiring computer resource-consuming recursive function calls.
[0035] Figure 44 is a flow chart of a process 400 for a non-recursive DFS for a vehicle network 200 for determining a path connecting a communication-initiating node 226, referred to as a source, to a communication node 226, including a specific connection type, referred to as a destination, on the vehicle network 200, referred to as a graph G. The process 400 may be implemented on a computing device 115 included in a vehicle 110. The process 400 includes multiple blocks that may be executed in the order illustrated. Alternatively or additionally, the process 400 may include fewer blocks or may include blocks executed in a different order.
[0036] Process 400 from below about Figure 5 The communication process 500 described above is called, which can be executed on the computing device 115 included in any node 226 of the vehicle network 200. The communication process 500 can receive a message from a source node 226 requesting communication with the external computing network 120 using a selected type of connection. The process 400 is then called for each destination node 226 that includes an active connection of the selected type to determine a network path connecting the source node 226 to the destination node 226. The process 400 performs a non-recursive DFS on the vehicle network 200 to determine a stack of paths, where each path is a stack reference pointing to a stack that includes a list of nodes 336 connecting the source node 226 to the destination node 226.
[0037] Process 400 begins at block 402, where the computing device 115 enters process 400 with a list of source nodes 336, destination nodes 336, and nodes 336 in graph G based on the vehicle network 200. The visited map stack 332 includes a list of all nodes 336 in the vehicle network 200, and a Boolean variable associated with the corresponding node is initialized to false, indicating whether the node 336 has been visited by process 400.
[0038] The main processing loop of process 400 begins at block 404. The stack of paths in stack 302 is initialized to zero, and current stack node 336 is set equal to current source node 336, and the Boolean value for current stack node 336 included in visit map stack 332 is set to true.
[0039] At block 406, the computing device 115 checks the current stack node 336 to see if the current stack node 336 is equal to the destination node 336. If the current stack node 336 is equal to the destination node 336, then the current path is complete and the process 400 passes to block 408. If the current stack node 336 is not equal to the destination node 336, then the process 400 passes to block 418 to add the node 336 to the nodes to be visited stack 332.
[0040] At block 408 , a node from the node to be visited stack 332 is pushed onto the current node stack 332 .
[0041] At block 410 , a stack reference 334 indicating the current node stack 336 is pushed onto the path stack in the stack 302 .
[0042] At block 412, the computing device 115 checks to see if there are any more nodes 336 to be visited by checking the nodes of the to-be-visited stack 332 by testing the Boolean value included in the nodes of the to-be-visited stack 332. If all nodes 336 have been visited, the process 400 branches to block 428. If all nodes 336 have not been visited, the process 400 branches to block 414.
[0043] At block 414 , the source node is set as the node at the top of the current node stack 336 , and the process 400 returns to block 404 to start the next current node stack 336 .
[0044] At block 418, process 400 begins a for loop including blocks 418, 420, and 422, which sets the value of a neighbor node 336 to the next neighbor of the current source node 336 until all neighbor nodes 336 of the current source node 336 have been examined. If an edge 228 connects a neighbor node 336 to the source node 336, then the node 336 is a neighbor node 336 of the source node 336 in graph G. If the neighbor nodes 336 are non-null, process 400 passes to block 420. When the end of the neighbor nodes 336 of the source node 336 is reached, process 400 passes to block 424.
[0045] At block 420, the computing device 115 checks the Boolean value of the neighboring node 336 in the visited map stack 332 to determine whether the neighbor has been visited by the process 400. If the neighboring node 336 has been visited, the process 400 passes to block 418 to check the next neighboring node 336 of the source node 336. If the neighbor has not been visited, the process 400 passes to block 422 if the value n is not.
[0046] At block 422, the neighboring node 336 has not been visited, and the computing device 115 pushes the neighboring node 336 onto the top of the nodes to be visited stack 332. After block 422, the process 400 passes to block 418 to check the next neighboring node 336 of the source node 336.
[0047] At block 424, the computing device 115 checks the visit map stack 332 to determine whether any nodes 336 remain to be visited. If any nodes 336 in the visit map stack 332 remain to be visited, the process 400 passes to block 426. If no nodes 336 remain to be visited, the process 400 passes to block 428.
[0048] At block 426 , the computing device 115 sets the source node 336 equal to the top of the node to be accessed stack 332 and returns to block 404 to begin processing the next source node 336 .
[0049] At block 428 , computing device 115 has populated the path stack in stack 334 with all paths connecting source node 336 to destination node 336 , and process 400 returns the paths and ends after block 428 .
[0050] Figure 5 1 is a flow chart of a process 500 for determining a path for communication from a source node 336 in a vehicle network 200 to an external computing network 130 via a communication node 336. The process 500 may be implemented, for example, in a computing device 115. The process 500 includes a plurality of blocks that may be executed in the order illustrated. Alternatively or in addition, the process 500 may include fewer blocks and may include blocks executed in a different order.
[0051] Process 500 begins at block 502, where computing device 115 identifies a source node 336. Source node 336 may be identified by determining that a process executing on node 336 is requesting communication with external computing network 130. For example, a navigation program may request map data from the Internet.
[0052] At block 504, the computing device 115 identifies a list of one or more destination nodes 336 that include an active V2I interface 111 for the communication type indicated by the source node 226. For example, if the source node 226 is requesting internet communication, the computing device 115 may determine the destination node 336 to be a node 226 in the vehicle network 200 that includes an active internet connection.
[0053] At block 506, the computing device 115 calls the graph G describing the vehicle network 200 with the source node 226, the next destination node 226 in the destination node list 336, and the graph G describing the vehicle network 200. Figure 4Process 400 is described. Process 400 returns to the stack in stack 302, which includes stack reference 334 indicating a path connecting source node 336 with destination node 336, wherein the destination node includes an active V2I interface 111 of the appropriate communication type. Process 500 can determine which nodes 226 of vehicle network 200 include an active external computing network 120 connection of the type selected by source node 226 by sending a message to each node 226 of vehicle network 200, inquiring whether the node 226 has an active communication link of the requested type with the external computing network 120. As discussed above, the communication link can include WiFi, cellular, Ethernet, etc. Active communication links in vehicle network 200 can be discovered in a manner similar to computers on a WiFi network, where active internet links executing on the network can publish the network address of the active internet link, and computers seeking internet connections can compile a list of networks including internet connections. The computing device 115 may compile a list of nodes 226 of the active external computing network 120 that have connections of the selected type and push the nodes 226 that include the active connections onto the list of destination nodes 336 .
[0054] At block 508, the computing device 115 obtains the next destination node 336 from the list of destination nodes 336. If the destination node 336 is not empty, the process 500 passes to block 506 to determine the next path from the source node 336 to the current destination node 336. If the end of the list of destination nodes 336 is reached, the process 500 passes to block 510.
[0055] At box 510, computing device 115 analyzes each path in the path stack in stack 332 to determine which path has the highest communication bandwidth and shortest communication delay as described above to produce the most efficient communication path between source node 336 and one of destination nodes 336.
[0056] At block 512, the source node 336 communicates with the external communication network 130 via the communication path determined at block 510. After block 512, the process 500 ends.
[0057] Computing devices such as those described herein typically each include commands that can be executed by one or more computing devices such as those identified above and used to perform the blocks or steps of the processes described above. For example, the process blocks described above are embodied as computer-executable commands.
[0058] Computer executable instructions may be compiled or interpreted by a computer program created using a variety of programming languages and techniques, including but not limited to the following, either singly or in combination: Java TM, C, C++, Python, Julia, SCALA, Visual Basic, Java Script, Perl, HTML, etc. Typically, a processor (i.e., a microprocessor) receives commands from a memory, a computer-readable medium, etc., and executes these commands to perform one or more processes, including one or more of the processes described herein. Such commands and other data can be stored in files and transmitted using a variety of computer-readable media. A file in a computing device is typically a collection of data stored on a computer-readable medium, such as a storage medium, random access memory, or the like.
[0059] Computer-readable media (also known as processor-readable media) include any non-transitory (i.e., tangible) medium that participates in providing data (i.e., instructions) that can be read by a computer (i.e., by the processor of a computer). Such media can take many forms, including but not limited to non-volatile media and volatile media. Instructions can be transmitted over one or more transmission media, including optical fiber, wires, wireless communications, including internal components that make up a system bus coupled to the processor of a computer. Common forms of computer-readable media include, for example, RAM, PROM, EPROM, flash EEPROM, any other memory chip or cartridge, or any other medium from which a computer can read.
[0060] Unless otherwise expressly indicated herein, all terms used in the claims are intended to be given their ordinary and customary meanings as understood by those skilled in the art. Specifically, unless a claim recites an explicit limitation to the contrary, use of singular articles such as "a," "the," "said," etc. should be interpreted as reciting one or more of the indicated elements.
[0061] The term "exemplary" is used herein in the sense of referring to an example, ie, references to "exemplary widget" should be interpreted as referring merely to an example of a widget.
[0062] The adverb “approximately” modifying a value or result means that the shape, structure, measurement, value, determination, calculation, etc. may deviate from the exactly described geometry, distance, measurement, value, determination, calculation, etc. due to imperfections in materials, machining, manufacturing, sensor measurement, calculation, processing time, communication time, etc.
[0063] In the accompanying drawings, like reference numerals indicate like elements. With respect to the media, processes, systems, methods, etc. described herein, it should be understood that although the steps or blocks of such processes, etc. have been described as occurring according to a certain ordered sequence, such processes may be practiced by performing the described steps in an order other than that described herein. It should further be understood that certain steps may be performed simultaneously, other steps may be added, or certain steps described herein may be omitted. In other words, the descriptions of the processes herein are provided for the purpose of illustrating certain embodiments and should in no way be construed as limiting the claimed invention.
[0064] According to the present invention, a system is provided, comprising: a computer, the computer including a processor and a memory, the memory including instructions capable of being executed by the processor to: identify a communication node included in a network of a first computer network including a network device node, the communication node including a connection to an external computer network; identify a source node included in the network device node; perform a non-recursive algorithm on a list of network paths in the first computer network that connect the source node to the communication node; identify a preferred network path from the list of network paths that includes a minimum number of nodes between the source node and the communication node; and communicate from the source node to the external computing network via the preferred network path and the communication node.
[0065] According to one embodiment, the first computer network comprises a vehicle communication system, which can include one or more of a controller area network and an Ethernet network.
[0066] According to one embodiment, said list of nodes comprises said communication node and a second communication node comprising a connection to said external computer network.
[0067] According to one embodiment, the external computer network comprises the Internet.
[0068] According to one embodiment, the non-recursive algorithm comprises a depth-first search.
[0069] According to one embodiment, said communication node comprises multiple types of connections to said external computer network.
[0070] According to one embodiment, determining that said communication node comprises a connection to said external computer network comprises determining that a connection of a specified type is available for communication.
[0071] According to one embodiment, the type of connection to the external computer network includes a Wi-Fi connection, a cellular connection, and a wired connection.
[0072] According to one embodiment, the non-recursive algorithm includes a first stack comprising a network device node.
[0073] According to one embodiment, the non-recursive algorithm includes a second stack comprising a list of network device nodes.
[0074] According to one embodiment, the first network includes an acyclic graph and a cyclic graph.
[0075] According to one embodiment, said first computer network is comprised in a vehicle.
[0076] According to the present invention, a method is provided, comprising: identifying a communication node included in a network of a first computer network including a network device node, the communication node including a connection to an external computer network; identifying a source node included in the network device node; performing a non-recursive algorithm on a list of network paths in the first computer network connecting the source node to the communication node; identifying a preferred network path from the list of network paths that includes the least number of nodes between the source node and the communication node; and communicating from the source node to the external computing network via the preferred network path and the communication node.
[0077] In one aspect of the invention, the first computer network comprises a vehicle communication system, which can include one or more of a controller area network and an Ethernet network.
[0078] In one aspect of the invention, said list of nodes comprises said communication node and a second communication node comprising a connection to said external computer network.
[0079] In one aspect of the invention, the external computer network comprises the Internet.
[0080] In one aspect of the invention, the non-recursive algorithm comprises a depth-first search.
[0081] In one aspect of the invention, said communication node comprises multiple types of connections to said external computer network.
[0082] In one aspect of the invention, determining that the communication node includes a connection to the external computer network includes determining that a connection of a specified type is available for communication.
[0083] In one aspect of the invention, the type of connection to the external computer network includes a Wi-Fi connection, a cellular connection, and a wired connection.
Claims
1. A system comprising: A computer comprising a processor and a memory, the memory comprising instructions executable by the processor to: identifying a communication node included in a network of a first computer network including a network device node, the communication node including a connection to an external computer network; identifying a source node included in the network device node; executing a non-recursive algorithm on a list of network paths in the first computer network connecting the source node to the communication node; identifying, from the list of network paths, a preferred network path that includes a minimum number of nodes between the source node and the correspondent node; as well as Communication is performed from the source node to the external computing network via the preferred network path and the communication node. 2 . The system of claim 1 , wherein the first computer network comprises a vehicle communication system, which can include one or more of a controller area network and an Ethernet network.
3. The system of claim 1, wherein the list of nodes includes the communication node and a second communication node that includes a connection to the external computer network.
4. The system of claim 1, wherein the external computer network comprises the Internet.
5. The system of claim 1, wherein the non-recursive algorithm comprises a depth-first search.
6. The system of claim 1, wherein the communication node includes multiple types of connections to the external computer network.
7. The system of claim 6, wherein determining the communication node includes a connection to the external computer network includes determining that a specified type of connection is available for communication.
8. The system of claim 6, wherein the type of connection to the external computer network includes a Wi-Fi connection, a cellular connection, and a wired connection.
9. The system of claim 1, wherein the non-recursive algorithm comprises a first stack including the network device node.
10. The system of claim 1, wherein the non-recursive algorithm comprises a second stack comprising a list of network device nodes.
11. The system of claim 1, wherein the first network comprises an acyclic graph and a cyclic graph.
12. The system of claim 1, wherein the first computer network is included in a vehicle.
13. The system of claim 1, wherein the non-recursive algorithm comprises a pushback() operation, a back() operation, and a popBack() operation.
14. The system of claim 1, wherein the non-recursive algorithm includes visiting nodes of a stack.
15. A system comprising: A computer programmed to perform the method of any one of claims 1 to 14.