You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We will develop and design logic for obstacle avoidance to be integrated with the current code base in GNC's commander node. Specifically within the commander node's execute waypoints function in the while loop on line 197. This loop is true while the mission isnt complete. We can use it to iteratively check if avoidance is nessecary.
The approach taken will be to identify whether or not avoidance is needed via a vision system and drone ID. This will be quantified in seconds till collision. We will calculate this metric based on estimated positions of detected targets by using a Kalman Filter to forward future object state predictions. As of now the Unscented Kalman Filter is the decided approach from @EricPedley.
We can return s = -1 if there are no targets in-sight but for all non negative values of s we can decide a threshold to trigger obstacle avoidance. In general terms, if we are less than s seconds from collision trigger avoidance logic.
The obstacle avoidance will be implemented in a custom flight mode that the commander node can switch into (MISSION ---> AVOIDANCE ---> MISSION) inbetween the mission. More information about that interface is documented here
Important caveats about the obstacle avoidance approach
When the vehicle switches to avoidance mode there will be a manuver calculated to avoid the object based on the state of our vehicle when we initalized avoidance mode and the predictions. The calculated manuver trajectory is fixed and does not update based on new information, we are going under the assumption we have decent forward predictions of the object's movement.
Avoidance mode sends a series of waypoints and is "Completed" once it reaches the final waypoint. Our navigation logic will wait for avoidance mode to complete before continuing the execute waypoint function.
the calculated path will not dynamically update every second, its calcualted only once per avoidance mode trigger@EricPedley
Architecture
Development
waiting for us to finalize this methodology before we assign specific tasks, open to modifications / improvements @EricPedley@MinhxNguyen7
Tasks
Localize other drones via DRONEID and VISION in ENU frame
Use Kalman Filter to forward object positions from 0-N number of seconds into the future
Characterize an "Avoidance Zone" as a cone (or any convex shape) starting from object state at time 0 till time N. (the cone will be larger further into the future to model our "uncertainty" in predictions. We can tune this a predefined value.
Risk assessment
Given we assume our trajectory is just a line from us to the next waypoint, check if it intersects with the avoidance region. Calculate time in S till the intersection.
Determine some value N, where if collision time S <= N then trigger avoidance
Predictor gives a list of 3-tuples of matrix A, vector b, and time t, where the constraint is Ax < b, where x is our drone's equation, and t is the minimum time to intersecting the no-go zone.
Fly up if time is less than a certain threshold, we try to fly straight up. Otherwise, attempt our collision avoidance algorithm.
Description
We will develop and design logic for obstacle avoidance to be integrated with the current code base in GNC's commander node. Specifically within the commander node's execute waypoints function in the while loop on line 197. This loop is true while the mission isnt complete. We can use it to iteratively check if avoidance is nessecary.
uavf_2024/uavf_2024/gnc/commander_node.py
Lines 135 to 198 in 9140735
Design
Integration
The approach taken will be to identify whether or not avoidance is needed via a vision system and drone ID. This will be quantified in seconds till collision. We will calculate this metric based on estimated positions of detected targets by using a Kalman Filter to forward future object state predictions. As of now the Unscented Kalman Filter is the decided approach from @EricPedley.
We can return s = -1 if there are no targets in-sight but for all non negative values of s we can decide a threshold to trigger obstacle avoidance. In general terms, if we are less than s seconds from collision trigger avoidance logic.
The obstacle avoidance will be implemented in a custom flight mode that the commander node can switch into (MISSION ---> AVOIDANCE ---> MISSION) inbetween the mission. More information about that interface is documented here
Important caveats about the obstacle avoidance approach
When the vehicle switches to avoidance mode there will be a manuver calculated to avoid the object based on the state of our vehicle when we initalized avoidance mode and the predictions. The calculated manuver trajectory is fixed and does not update based on new information, we are going under the assumption we have decent forward predictions of the object's movement.
Avoidance mode sends a series of waypoints and is "Completed" once it reaches the final waypoint. Our navigation logic will wait for avoidance mode to complete before continuing the execute waypoint function.
the calculated path will not dynamically update every second, its calcualted only once per avoidance mode trigger @EricPedley
Architecture
Development
waiting for us to finalize this methodology before we assign specific tasks, open to modifications / improvements
@EricPedley @MinhxNguyen7
Tasks
Localize other drones via DRONEID and VISION in ENU frame
Prediction
Risk assessment
sketch of intersection scenerio
Obstacle Avoidance
https://gitlab.com/vince-cs/graph-of-convex-sets-ros2-quadrotor-avoidance/-/tree/main/AvoidanceMode?ref_type=heads
trajectory planning solver used
Issues
The text was updated successfully, but these errors were encountered: