Need help on how to customize flight modes

Hi all!

I am pretty new to drone flying and testing, but have managed to build and do flight tests on a custom-built quadcopter, using PixHawk and Ardupilot! As a part of my project, I want to implement flight tasks based on certain conditions. Specifically,

  1. to transition from stabilized mode to alt-hold mode, or automatically increase the pitch once the drone reaches a particular forward velocity
  2. Provide a calculated value of rate of yaw/pitch upon detecting obstacles up front
  3. Traveling to multiple GPS co-ordinates which are chosen based on the parameter values obtained from Ardupilot.
    Are these possible only using ground control softwares like Qgroundcontrol or mission planner? Can someone direct me where I should search to gain some knowledge in these lines?

Thanks in advance!!