UAV Package Delivery Obstacle Avoidance issue

조회 수: 3 (최근 30일)
Tudor-Stefan Tonca
Tudor-Stefan Tonca 2023년 1월 21일
댓글: Tudor-Stefan Tonca 2023년 1월 28일
Hi, I am encountering an issue when trying to test the obstacle avoidance algorithm on a different scenario. I am using QGC connection for the trajectory and the quadcopter simply does not avoid all the obstacles, but only some of them. I've changed the safety distance, but without success. On QGroundControl, the quadcopter appears to "want" to avoid the obstacle, but it still follows the trajectory towards the landing point (see image)
I've tried to use a different obstacle but same thing happens - it avoided the red building, but went through the circular blue obstacle:
The lidar seems to be working fine. I would appreciate some help. Also, if I understood correctly from other questions on this forum, the project is designed for only one waypoint (i.e. take-off to landing)?
Many thanks in advance.
Tudor

채택된 답변

Jianxin Sun
Jianxin Sun 2023년 1월 24일
Hi Tudor,
Here are a couple examples that might help you:
https://www.mathworks.com/help/uav/ug/uav-obstacle-avoidance-in-simulink.html shows how to setup a Simulink model that navigates through multiple waypoints while avoiding obstacles
https://www.mathworks.com/help/uav/ug/tune-3d-vector-field-histogram-controller-for-obstacle-avoidance-in-3d-scene.html shows how to tune the obstacle avoidance algorithm with the help from MATLAB visualization
Thanks,
Jianxin
  댓글 수: 4
Tudor-Stefan Tonca
Tudor-Stefan Tonca 2023년 1월 26일
@Jianxin Sun, thank you very much for your answer.
Tudor-Stefan Tonca
Tudor-Stefan Tonca 2023년 1월 28일
@Jianxin Sun, I'm currently working on changing the model such as it allows multiple waypoints within the obstacle avoidance guidance logic. I'm thinking that I need to somehow combine the guidance logic from Full Guidance Logic with the one from Obstacle Avoidance (compute InnerLoop Cmds), as per your answer. However, the MATLAB function contains this code:
function y = computeLPWaypoints(mission, Steer,UAVState)
%#codegen
Wp1 = [mission(1).position' mission(1).params(4)];
Wp2x = mission(2).position(1);
Wp2y = mission(2).position(2);
if(~isnan(Steer))
LAP_local = 6*[cos(Steer), sin(Steer)];
LAP = [ LAP_local(1)+ UAVState.x , LAP_local(2) + UAVState.y , -11 , Steer];
if(isnan(LAP(4)))
LAP(4) = 0;
end
y = [ Wp1(1,:) ; LAP ; Wp2x , Wp2y , 0 , Steer ];
DTD = sqrt( (LAP(1) - Wp2x)^2 + (LAP(2)-Wp2y)^2);
else
y = [ Wp1(1,:) ; UAVState.x , UAVState.y , UAVState.z-2 , 0 ; Wp2x , Wp2y , 0 , 0 ];
DTD = sqrt( (UAVState.x - Wp2x)^2 + (UAVState.y-Wp2y)^2);
end
if(DTD<5)
y = [ Wp1(1,:) ; Wp2x , Wp2y, -11 , 0 ; Wp2x , Wp2y , 0 , 0 ];
end
end
Are Wp1 and Wp2 the waypoints, therefore limiting the number of waypoints to 2? Would this code need to be changed to allow multiple waypoints?
I also noted that the GCSCmds signal which is sent to the waypoint follower has to be as per:
The Waypoints input accepts a set of waypoints as either an Nx3, Nx4, or Nx5 matrix, where N is the number of waypoints. Each row is an [x y z] position vector with optional yaw angle and transition radius for the UAV.
Many thanks.
Tudor

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

제품


릴리스

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by