Competition Year | 2022-2023 Aerial Evolution of Canada Student Competition |
---|---|
Team | Waterloo Aerial Robotics Group |
Architect(s) | Anthony Luo |
Status | DRAFT 0.2 |
Last date updated | by Anthony Luo |
On this page |
Summary
This page describes the top-level view of the 2023 competition airframe, and contains references to sub-pages with implementation specific details. This page will be finalized as of Nov 6, 2022. Any changes after that point must follow the formal RFC proces. Ping Anni for more details.
🍞 Acronyms & Links
[The Drone] - The drone as a whole, including electronic components and integrated software systems.
[(the) Airframe] - Competition airframe, base components.
[ZPSW] - ZeroPilot Software
[ZPHW] - ZeroPilot Hardware
[IMU] - Inertial Measurement Unit
[GPS] - Global Positioning System (device to capture GPS data)
[ESC] - Electronic Speed Controller, Motor Controller
[GS] - Groundstation
[Tracking Antenna][Antenna Tower][Tracking Tower] - all tracking antenna systems.
[T_Telem] - telemetry tracking tower
[T_VRX] - video receive tracking tower
[GSPC] - groundstation PC
[GS_SW] - groundstation software
[GUI] - groundstation gui (software gui for user).
[OSD] - on screen display (attitude information overlayed over video feed
[Competition Design Outline] Competition Design Outline
[Competition Requirements] Competition Requirements
📐 Architecture
<Add diagram>
The architecture of a drone can be found in the [Competition Design Outline]. <# iterations> iterations of the drone will be created, at <#milestones>. <# final copies> of the drone will be created in “competition spec”. Our system will meet the requirements in [Competition Requirements].
Our general architecture has the following hardware elements:
Airside Components:
Airframe (Wings, Fueselage, tail)
Power:
2 6s batteries
1 3s battery
2 Power Distribution Boards (12V, 5V rails clean | Vbatt, 5V dirty)
Propulsion:
4 lift motors + ESC’s + Props
T-motor MN5008 [confirm kv 340?] https://store.tmotor.com/goods.php?id=999
Luminier BL_Heli 51A ESC https://www.getfpv.com/lumenier-51a-blheli-32-32bit-2-6s-w-telemetry.html
T-Motor MS1704 https://store.tmotor.com/goods.php?id=825
1 push motor + ESC’s
T-Motor AT4130 KV 300 https://store.tmotor.com/goods.php?id=828
Hobbyfun flywing 120A or smth?? idk pls Enter ESC link Nathan Green Andy Meng
APC 15*8 or 16*8 propeler (tbd, look at motor spec page Megan Spee )
7-8 Servos (control surfaces)
Compute:
Jetson TX2 + Carrier Board
please link to spec page Mika Shaw Aydan Jiwani (Deactivated)
ZP3 PCB or Nucleo L552
enter link Daniel Puratich (Unlicensed) daniel.puratich (Unlicensed) (why are there multiple of you??? → also I couldn’t find the master page on confluence there’s too many idk which one you wanna put in)
Pixhawk PX5
Peripherals:
2 FPV cameras + video mux
1 PiCam
1 1.3 GHz VTX
1 RFD900x
Set of LED’s
1 SD Card
2 Mateksys Optical Flow sensor
Mateksys 3901 L0X http://www.mateksys.com/?portfolio=3901-l0x
1 VN-300 Inertial Sensor
2 Neo M.8 GPS Sensor
1 BMX160 Inertial Measurement Unit
2 Airspeed Sensors (1 TBS digital, 1 old analog)
insert links Anthony Luo
Antennas
2 900 mhz antennas
could be linear if we use yagi (might be better for signalqualiy idk)
or could be these ones https://www.truerc.ca/shop/900mhz-3/transmitter-900mhz-3/singularity-868
1 1.3 ghz antenna
Groundside Components:
Groundstation Center (the one inside the hardcase)
PC
Monitor (compute rmonitor)
5.8 VRX or RCA Splitter for tracking antenna.
Video to PC device
Goggles + video receive link.
similarly, need ideas Hamza Ali Andy Meng Megan Spee . I’m personally a fan of the walksnail avatar but idk if it’ll take in analog video on the tx…
Tracking Antenna Telem
900 MHz Yagi or patch antenna
personally a fan of the RMRC patch antennas https://www.truerc.ca/shop/900mhz-3/receiver-long-range-900mhz-3/x-air-900
Nucleo F401
Omnidirectional antenna
same as transmitter on drone?
BMX160 IMU
NEO M.8 GPS
Tracking Antenna VRX
1.3 GHz Patch Antenna
Nucleo F401
BMX 160 IMU
NEO M.8 GPS
(potentially) 5.8GHz VTX
Infra Components
Tuning Rig
ready for comp drone.
Groundstation
ready by mid january
Airside Architecture
Now that we know what components are going on our drone, let’s talk about how they’re going to be laid out on the drone itself. This page will be finalized on Nov 6, 2022. After that date, any changes must go through a formal RFC process involving all subteam leads.
Airside Hardware Layout
The plane will be comprised of 5 main sections: the Passenger Compartment, wings, tail, battery box, and avionics compartment. See the scuffed diagram below for more information.
Batteries & Power Distribution
Batteries and Power Distribution shall be mounted at the back of the fuselage so that the heaviest components are at the back of the fuselage. This should allow the fuselage to be moved as far up as possible, giving the rear prop as much unrestricted airflow as possible while maintaining a drone COM that is close to the geometric center of the four lift motors.
The battery box should be easily accessible from the top so that battery swaps may be easily accomplished during task #2, and should be weatherproof and house the PDB, Batteries, and necessary power connectors in an manner that makes upkeep & plugging/unplugging/probing connectors easily.
Avionics Compartment
The avionics compartment will house all the airside compute. The compartment should be weather sealed, but be mounted on the drone in a way such that all electronics are easily accessible and serviceable with minimal effort (ideally no screws removed to plug/unplug connectors from any of the onboard computers.
The avionics compartment should allow for airflow and cooling even in adverse weather, with an option to block the opening in the event of incredibly inclement weather.
Sensors will not be placed inside the avionics compartment due to electrical noise.
Wings & Tail & Fuselage & Peripheral Mounting
The wings and the tail will house a lot of the RF Communication modules, such as the VN-300, rfd900 antennas, vtx antennas, and any gps modules.
Sensors
The Vn-300 receiver (red box), as well as the BMX160 IMU should be placed as close to the center of mass of the plane as possible, with the axis aligned (x is forward, refer to ZPSW Documentation for more detail). This can be done above or below the passenger compartment, but should be in a weatherproofed section of the plane.
Both VN-300 receptors & their grounding planes should be placed 1M apart, facing directly upwards, above other elements. These can be mounted at the ends of the wings, or on vertical mounts above the wings (like an AWACS disk) if airflow over wings is a significant issue. The Vn-300 is significantly smaller than what is pictured on the right, and two vertical spars on each wing could be sufficient. Is the vn-300 weather sealed?
Both NEO M.8 GPS Modules should be placed facing upwards. There is no significant distance requirement, although a small separation would be ideal. This can be done by placing both on opposite ends of the fuselage, one on the fuselage and one on the tail, or however the mech team sees fit.
Antennas
The RFD900x Antennas should be placed 90 degrees apart from each other. There is no distance seperation requirement. The RFD900X transmitter itself should be placed somewhere with adequate airflow.
The VTX Antenna should be placed as far as possible from other sources of RF interference (such as other antennas, sensors, or ESC’s). The tail or the bottom of the fuselage may not be bad options. The VTX transmitter itself should be placed somewhere with adequate airflow.
Cameras will be mounted outside the fuselage, one pilot cam forwards, one pilot cam downards, one cv cam downwards. The pilot cameras will feed into a 2-1 mux switch controlled by ZP before feeding into the VTX.
Motors
Motor controller placement is decided by mech, in a way such that the push prop ESC has adequate airflow, and the quad ESC’s have airflow when in use and are otherwise hidden.
Servos can be placed at the discretion of the mechanical team, provided the servos are equally balanced and symmetrical along both sides (within a few mm of error).
Airside Electrical Layout
pls confirm Daniel Puratich (Unlicensed)
Power Architecture
There will be: 2 6s patteries in parallel, 1 3s battery. The 2 6s batteries will be referred to from this point on as the “flight battery”, and the 3s battery will be refrred to from this point on as the “clean battery”. There will be 4 power rails in total on the drone;
VBatt Dirty (For ESC’s)
12V Dirty (For Flight Controllers & Jetson)
5V Dirty (for servos, LED’s, etc)
5V Clean (for VTX, Sensors, etc).
All dirty power rails will be broken out from the flight battery using a COTS PDB (i’m a fan of this one http://www.mateksys.com/?portfolio=fchub-12s ) , while the clean power rail will be broken out of the 3s battery.
Wiring
All of the wires for the sensors will be pre-run through the frame in dedicated channels, with connectors left exposed ear the sensor compartments and the avionics compartment. This means that any time a sensor needs to be replaced, we do not need to re-wire the entire sensor. this also means that when we need to re-wire the flight computers, we can use the cables that are already connected to the interface connectors an simply plug in a few large connector banks to our dev interfaces.
All sensors shall be connected to the respective device owners listed in the hardware components section. There will also need to be uart connections between ZP ↔︎ Jetson, as well as multiple (at least 5) communication wires available between the PX5 and ZPHW.
Connector Standardization
Darwin Clark maybe this is something thath you can take a look at?
All connectors for motors will be 3mm banana plugs? The ESC end wil be male and the motor end will be female. Could we consider using something like 3 pin EC5 connectors? Not sure what would be more space efficient / less likely to short.
Connectors for sensors: locking JST connectors, with the sensor end soldered directly to the sensor?
Link to dev interface ? idk…
LED’s
For realism, we will have regular Nav lights on the dirty 5V or 12V rail, as well as a green PAX aboard light that is on a 12V or 5V relay controlled by ZP.
Groundside Architecture
On the ground, there will be a primary “groundstation” GS as well as the two tracking antennas “T_Telem” and “T_VRX”. GS Will be able to run unsupported (nopower, no internet), for the competition for a minumum of 1 hour.Main batteries should be included within the GS Enlosure as the enlosure may be left outside overnight in inclement weather. All of GS should be weatherproofed, or be able to collapse into a weatherproofed box (it could be sitting in a mud/ or a puddle).
Antenna Towers
The antennas ill use directional antennas to improve connecivity with the drone, and must be placed as far apart and as high up as possible. They can be mounted on poles, and stakes may be driven into the ground with guyouts to keep them upright (much like regular 5G antennas). They should be as far apart as possible (one may have to be behind the tent and one in front of the tent - hence why it is important to get them to be able to go as high as possible), so that we have minimal interference. Antenna Towers should support fully tethered & fully untethered operation.
Each tower will have a: nucleo, imu, gps, antenna mounted on the panning & tilting head. This pan/tilt head should be able to track a drone flying ~ 70km/h at 50m radius away, while maintaining an accuracy within 15 degrees of center of a drone at a max range of 7km away. Mounted on the tracking antenna (but perhaps not on the moving head) of the antenna may be: signal boosters, signal relays, excess wires, wire splitters, power, etc.
Tethered Operation
In the event of tethered operation, towers will have a USB Link from the nucleos to the GSPC, as well as a set of coaxial cables (or a single one in non-diversity operation) to the modem located within the GS enclosure. Power may be supplied along a custom cable, but all of the cables running to the tower should be wrapped up and terminate together with clearly labelled interfaces on the GS enclosure.
Untethered Operation
The towers should be able to run self supported and disconnected from the rest of the system (including no power) for a minumum of 40 minutes. In the event that we want the towers to be running fully untethered, the Nucleos will communicate with the PC using low power XBEES@ 2.4ghz instead of the USB tether, and we will use a PPM Relay with lower power 443 MHz Dragonlink system to communicate from the controller to T_telem. It is also possilbe for T_telem to be setup as a mesh where there is permanently a third nucleo inside the gs_enclosure which will be linked to the main antenna on T_Telem that allows adata to be passed through from airside to T_Telem to GSPC. A 5.8GHz video relay will be used to distribute video from T_Vrx to the pilot goggles, as well as the DVR → GSPC. Individual batteries will be provided to each tower, but these should support the system for a minumum of 1hr.
GS_SW
The software on the groundstation inscludes the GUI, as well as all the backend processing for receiving/sendeng telemetry data. This is built entirely by the CV Subteam.
Telemetry TX/RX
messaging formats will be defined in the software architecture section.
The GSPC will receive from the RFD900x as a serial stream. This will be processed by the GS_SW before being displayed on the gui and passed to the tracking tower nucleos.
The tracking tower nucleos will also interface with the computer as serial streams (either xbee or wired). Care will have to be taken to ensure there is no crosstalk between them.
GSPC will send to the aircraft using the rfd900 serial communications port.
GUI
The gui should allow for the user to see the aircraft status, aircraft track, path, waypoints, and other relevant flight data listed in [GUI PAGE LINK Mika Shaw ].
The GUI Will also allow the pilot to edit waypoints & command the aircraft to takeoff/land in certain modes. The Aircraft shall operate in GPS_Hold mode when being operated remotely from the groundstation
Remote Piloting
The command of the aircraft will be done by the pilot with their choice of either a dedicated set of FPV Goggles or Monitor, connected to the VRX either by 5.8 relay or direct by split rca. The controllers used will be TX16s MKII models, and a ppm relay or output converter will be provided on a frequency other than: 900, 1.2, 1.3, 2.4, 5.8. this means we need to buy more dragonlink modules?
Two controllers will be linked together, with one controller being the “master” using the trainer port. This means that if one pilot is unable to continue flying, the second pilot can takeover simply by hitting the switch. CC: Megan Spee confirm this is ok w/u at comp?
Software Architecture
This section will discuss the computers involved, before then diving into communication architecture as well as messaging formats, different flight modes, and failsafes.
Note that in our architecture, all communication from and to the ground is going to go through either the RFD900x, or the VTX module.
The computers
There will be three computers onboard the 2022-2023 competition frame <name>. Each of these has a dedicated purpose and will function in a specific subset of our flight route.
PX5
The PX5 Will be set as a real time backup, as well as potentially act as a senor readout. does the px5 need to be placed in the middle of the airframe for inertial computation to work? It has 3 imus, 2 temperature calibrated barometers, and will run it’s own sensor fusion algorithms and can act as a backup source of information for position, and a primary source of altitude information.
When the PX5 is acting as a real-time backup, the PX5 will be communicating to and from ZP using 3 PPM wires. 1 PPM will be from ZP → PX5, acting as 8 controller inputs, while 2 PPM will be from PX5 → ZP, acting as direct motor outputs. This retains ZPin control of communicatinos and other functions of the drone, but allows for failsafe in case of a compute error inside of ZeroPilots own attitude management system. The PPM from PX5 will either be encoded directly onboard, or the PM outputs from px5 will be converted externally by PWM → PPM converters.
Communication with barometer data may occur over a serial link such as UART, depending on UART availability on ZP.
The communication to ZP will include the following:
arm/disarm signal (arming before we takeoff for no errors)
output enable/disable signal (so that ardupilot doesn’t freak out)
4 channels of input request of where to fly to (ardupilot will fly in GPS mode).
1 channel configuration plane/quad/hybrid
1 channel autoland/takeoff/cruise.
Jetson TX2
The Jetson will handle geolocation of landing pads, as well as the final landing-approach sequence. ZP will request information from the jetson when ZP is ready to begin the landing sequence, and Jetson will return data on which direction to fly in. Inertial flight < 1s closed loop should be possible with centimeter accuracy. Thus, the jetson handles the search pattern for the landing pad, as well as the process of centering the drone over the landing pad. Once landing has begun, ZP will no longer request data from the jetson.
ZP
ZeroPilot will handle all of the inter-computer ocmmunications, as well as theair-ground communications, path planning for flying through waypoints, attitude management, as well as gatehring sensor information and relaying that to other components. It is the primary driver of everything on the drone.
Flight Stages
We can break the flight stages down into: Boot, Disarmed, Ground Ops, Takeoff, Cruise, Search, Landing. In each of these modes the software will interact differently to accomplish the tasks that it wants. It is important to note that at competition, the drone should be able to go from boot → ground ops with user input (physical drone arm, controller arm, software arm), and then it should be able to fly autonomously for the rest of the competition (including going between ground ops and flight)
Boot
During the boot sequence, all sensors should be initialized & calibrated. connection between GS ↔︎ Drone should be initialized and confirmed. Any errors should be detected during this sequence and dealt with accordingly. This stage should be able to be reached using a comms emulator. The drone may need to be power cycled when going from comms emulator to rf comms. Comms emulator should verify all systems OK, and allow us to run certain diagnostic tests while on the ground (orientation, sensors, gps, etc).
Disarmed
In this mode, ALL components are disarmed. This means the drone is disarmed, the controller is disarmed, and the GS_SW is disarmed. All three must become armed for us to move out of disarmed move.
In this state, all systems should be in low power mode in order to prevent overheating. To arm the drone…the following process should be followed:
arm the hardware. During this step, the hardware will ensure that everything is proper and the drone is fit for takeoff
Arm the controller. During this step, the pilot & flight crew should verify that they are ready for takeoff & flight.
Arm the software. During this step, the software should be checking to make sure that necessary links are established and ready to kick into effect.
Once all conditions are met, the drone will go into ground ops.
Ground Ops
This is a mode where the drone is armed, the props are unable to spin (for safety) and systems can be in a high power mode. No arming is necessary to leave ground ops mode - it is purely a software distinction between being on the ground and in the air.
Takeoff
Once the takeoff command is given, ZPSW or the PX5 will take the drone from the ground to a steady height in the air. The drone will hover in the air until it receives the ACK signal from GSSW saying that telemetry & vtx are OK (making sure that tracking antennas are working). Once it receives the ACK Signal, the drone will return ACK_Confirm wait for GS_SW to send a list of waypoints and then enter into cruise mode. Takeoff mode is purely ZP based.
Should an error occur during takeoff, the drone will land itself. Should an error occur when the drone is in the air, user override can be provided to bring it into cruise if desired, or the drone will land itself within 2 minutes. is this a reasonable amount of time to debug?
Cruise
In cruise mode, the groundstation will continue sending a list of waypoints to the drone. The drone will continually send back healthcheck, telemetry, and position data. In cruise mode, the primary decision makers are ZP & GS_SW
Waypoints
Waypoints are GPS coordinates paired with an ID number. The ID Number describes the sequence in which the drone is to fly these waypoints. ZP Will string together all the waypoints to create a flight path, where the final waypoint is going to be a “hover” point.
GS will continue to send updated waypoints on each communication cycle, with waypoint ID=0 being the current position of the drone. This means that on a missed communication cycle, or on an updated diversion response, ZP will be able to dynamically re-route from the last known position of the drone to the next target waypoint without missing a waypoint since it can understand which waypoints it wants to hit and which waypoints it wants to skip.
Telemetry Data
Telemetry data consists of:
motor % values
Setpoints from the controller
current flight plan
attitude
battery voltages
sensor readouts
Mihir Gupta anything else?
Search & Landing
In search & landing modes, GS_SW Sends to ZP that we have no more waypoints, and then ZP will request from the Jetson where to go.
During the flight, the jetson will be continually receiving position packets from ZP, and so it should be able to correlate known landing pad locations to waypoints as we fly over them. At the final waypoint, jetson will either direct ZP in a relative direction (eg 4m forward, 2 m left) if it sees the waypoint, or it will direct ZP in a spiralling search pattern until it can determine the location of the waypoint.
To ZP, the data that is received is identical. The Jetson will be responsible of keeping track of what general locations have been swept over using the position data, which will include altitude from barometer.
Once Jetson determines a suitable landing location, it will direct the drone to be centered above the landing pad and then drop the altitude to 2m above the landing pad in a controlled descent. At that point, if Jetson sends a message to ZP acknowledging the position is good to land, ZP will use a variety of sensor fusion algorithms & the optical flow sensor to descend vertically over the pad using a velocity controlled curve? Gordon Fountain (Deactivated)
Flight Control Modes
There will be a few distinct flight modes, each of which handles a portion of the flight. In each flight mode, the drone will process the controls differently.
GPS
Gps mode means that the drone will fly to a position that you specify. This can either be a gps coordinate, or it could be relative coordinates that the drone well then rest at. This is how waypoints will be handled, and this is likely how most of the flight will be conducted.
Level
Level Mode means that the drone will self stabilize, but it will continue flying in the direction that you specify. Generally, this means that stick inputs will translate directly into a correspondent angle on the aircraft. This is likely how pilot manual flying will work
Acro
Acro mode means that the controls control rate of rotation. It is unlikely that we will ever need to use this mode with a quadcopter, but it is possible that we will use this mode when doing an emergency takeover of a fixed wing aircraft to put it into a glide slope.
Communication
Communication between all devices will follow a standardized message format with:
[N] byte header Aidan Bowers (Deactivated) Former user (Deleted) I don’t know what I’m doing with this
1 byte denoting type of message
2 byte length ?
[length] byte message data
2 byte footer
1 byte crc
1 byte stop bits?
Communication message formats are TBD. Neha Srivastava Mika Shaw
Communication Message Formats | ||
---|---|---|
Message Type (Bits) | [message name] description | Expected Uses |
[position] Position only data | GSPC → Tracking Towers ZP → Jetson | |
[waypoints] Full List of waypoints | GSPC → ZP | |
[Telemetry] Full telemetry struct | ZP → GSPC | |
[movement request] Relational movement request | ZP → Jetson | |
[movement command] Relational movement command | Jetson → ZP |
🚀 Deployment Milestones
Deployment region:
✅ Action Items
Action | Description | Owner | Due date | Jira ticket | |
---|---|---|---|---|---|
1 | |||||
2 |
🗂 References and documentation
Version | Date | Comment |
---|---|---|
Current Version (v. 2) | 2022-11-03 00:15 | Anthony Luo |
v. 67 | 2023-07-05 20:20 | Amy Hu |
v. 66 | 2023-04-07 01:07 | Jack Greenwood |
v. 65 | 2023-04-04 03:45 | Jack Greenwood |
v. 64 | 2023-04-04 03:31 | Jack Greenwood |
v. 63 | 2023-04-02 04:19 | Ethan Abraham |
v. 62 | 2023-03-27 23:57 | Daniel Puratich |
v. 61 | 2023-03-26 01:08 | Anthony Luo |
v. 60 | 2023-03-24 12:31 | Anthony Luo |
v. 59 | 2023-03-24 12:27 | Anthony Luo |
v. 58 | 2023-03-23 00:59 | Anthony Luo |
v. 57 | 2023-03-22 20:42 | Anthony Luo |
v. 56 | 2023-03-14 14:34 | Anthony Luo |
v. 55 | 2023-03-13 00:15 | Anthony Luo |
v. 54 | 2023-03-08 00:40 | Anonymous |
v. 53 | 2023-02-16 17:15 | Daniel Puratich |
v. 52 | 2023-02-16 14:55 | Daniel Puratich |
v. 51 | 2023-02-16 14:49 | Daniel Puratich |
v. 50 | 2023-02-15 19:14 | R D |
v. 49 | 2023-02-15 19:13 | R D |
v. 48 | 2023-02-15 19:08 | R D |
v. 47 | 2023-02-11 01:36 | Anthony Luo |
v. 46 | 2023-02-11 01:35 | Anthony Luo |
v. 45 | 2023-02-10 02:27 | Anthony Luo |
v. 44 | 2023-02-07 23:11 | Anthony Luo |
v. 43 | 2023-02-06 23:10 | Anthony Luo |
v. 42 | 2023-01-23 23:29 | Anthony Luo |
v. 41 | 2022-12-02 15:14 | Anthony Luo |
v. 40 | 2022-11-27 16:26 | Anthony Luo |
v. 39 | 2022-11-14 15:17 | Anthony Luo |
v. 38 | 2022-11-10 03:46 | R D |
v. 37 | 2022-11-08 03:09 | Megan Spee |
v. 36 | 2022-11-07 14:18 | Anthony Luo |
v. 35 | 2022-11-07 14:15 | Anthony Luo |
v. 34 | 2022-11-07 14:14 | Anthony Luo |
v. 33 | 2022-11-07 13:18 | Anthony Luo |
v. 32 | 2022-11-07 03:42 | Megan Spee |
v. 31 | 2022-11-06 05:21 | Megan Spee |
v. 30 | 2022-11-06 04:52 | Anthony Luo |
v. 29 | 2022-11-06 01:56 | Anthony Luo |
v. 28 | 2022-11-06 01:55 | R D |
v. 27 | 2022-11-06 01:21 | R D |
v. 26 | 2022-11-05 21:12 | Anthony Luo |
v. 25 | 2022-11-05 20:50 | Anthony Luo |
v. 24 | 2022-11-05 20:29 | Sahil Kale |
v. 23 | 2022-11-05 19:38 | Anthony Luo |
v. 22 | 2022-11-05 05:32 | Neha Srivastava |
v. 21 | 2022-11-05 04:37 | R D |
v. 20 | 2022-11-04 05:26 | R D |
v. 19 | 2022-11-04 05:25 | R D |
v. 18 | 2022-11-04 04:21 | Anthony Luo |
v. 17 | 2022-11-04 04:14 | R D |
v. 16 | 2022-11-04 01:43 | Mika Shaw |
v. 15 | 2022-11-04 00:38 | R D |
v. 14 | 2022-11-03 22:10 | Anthony Luo |
v. 13 | 2022-11-03 13:12 | Anthony Luo |
v. 12 | 2022-11-03 12:43 | Yuchen Lin |
v. 11 | 2022-11-03 12:40 | Yuchen Lin |
v. 10 | 2022-11-03 03:26 | Anthony Luo |
v. 9 | 2022-11-03 00:48 | Nathan Green |
v. 8 | 2022-11-03 00:42 | Anthony Luo |
v. 7 | 2022-11-03 00:38 | Anthony Luo |
v. 6 | 2022-11-03 00:21 | Anthony Luo |
v. 5 | 2022-11-03 00:20 | Anthony Luo |
v. 4 | 2022-11-03 00:19 | Anthony Luo |
v. 3 | 2022-11-03 00:15 | Anthony Luo |
v. 2 | 2022-11-03 00:15 | Anthony Luo |
v. 1 | 2022-10-21 15:26 | Anthony Luo |