2023-02-16 - ZP-Jetson Communication Robustness
Update the title with the “name of change' after the dash
Change Description <Filled out by requestor>
ZeroPilot, Jetson
ZP-Jetson Communication Robustness
@R D
Discord
Description of Change
Increase the robustness of ZP-Jetson communication by adding IDs to messages.
Implementation
Message format changes:
Movement request (type 1):
Change request to ID [uint8_t] integer
Relative Movement Command (type 2):
Add ID [uint8_t] integer
Landing Initiation Command (type 3):
Change request to ID [uint8_t] integer
Relevant documentation: Communication & Message Formats
Communication changes:
ZP is the master device and Jetson is the slave device. Therefore, Jetson does not time out waiting for ZP messages.
ZP sends Movement request (type 1) with ID of either 0, 1, or 2. Jetson responds with Relative Movement Command (type 2) or Landing Initiation Command (type 3) with the same ID.
Movement request ID starts at 0. This indicates to Jetson to discard any previous search work, allowing resets.
Movement request ID then alternate between 1 and 2. This allows ZP to either request a new command or a previous command (in case of communication error).
Prerequisite: Drone is not moving and its xy-location is at the start location. Specific z-location is not required.
ZP timeout: If Jetson does not respond to a Movement request (type 1) within the timeout (to be determined by EFS), the request has timed out and ZP will resend.
Jetson failure:
ZP considers the Jetson to have failed if any of the following occur:
A number of consecutive timeouts (to be determined by EFS).
ZP receives an invalid command (e.g. a movement that will bring the drone outside of the height limits).
Landing Initiation Command (type 3) with ID of 0.
ZP must handle the Jetson failure case (e.g. by switching to operator override).
Relevant documentation: ZP-Jetson Communication
Reason for Change
Increase robustness to prevent desynchronization and/or failure rate.
Priority
Medium
Impact of Not Responding to Change
ZP and Jetson may desynchronize, causing Jetson to believe the drone to be in a location it is not actually at, resulting in invalid commands (e.g. flying into obstacles, landing at incorrect location).
What Groups, People, Sub-teams Need to be Notified?
Director: @Jinghao Lei @Anthony Luo
Firmware EFS: @Aaditya Chaudhary
CV: @R D @Matthew Keller
Change Impact <Filled out by requestor>
Additional Parts/Resources Required and Costs
Development time.
Impact on deadlines
1-2? weeks, mostly on ZP side for message verification.
Alternatives and Recommendations
Somehow shoehorn the behaviour into existing message formats. CV side could verify current location with Odometry Data (type 0) received from ZP.
Comments
N/A
Make sure to create a thread in the ‘rfc’ chat in discord (here). Share a link to your rfc in your post so it can be approved!
Change Request Sign Off <System Integration>
Status
Accepted / On Hold / Rejected / More info Requested
Comments
Signatures/Name