mukundbala / Nav-Stack-From-Scratch

A repository with implementations of common techniques and algorithms in robot path planning and navigation.
10 stars 3 forks source link

Feature high level controller #4

Closed mukundbala closed 1 year ago

mukundbala commented 1 year ago

Combined main and move into a single high level controller package to avoid unnecessary comms over ros. The node spins at 40Hz. Here is a list of key features of this branch

  1. Turtle prediction. Uses the spline from the turtlebot to find a target beyond the turtlebots current target on the trajectory where the drone and turtlebot approximately reach at the same time. This prediction is not always successful as the average speed of the hector used to compute the time taken to reach a particular target is not its true average velocity. A possible improvement can be keeping a moving average of the velocity.
  2. FSM. Pretty standard stuff. As it is, it can handle coop flights together with the turtle. However, the Drone Commander is written in such a way that it can do solo flights based on a set of given goals.
  3. Trajectory Generator. Pretty standard stuff as well. Can do Cubic and Quintic trajectories depending on how config settings in trajectory_generator.yaml.
  4. Velocity Controller. Pretty standard stuff, major difference being that eigen is used for matrix multiplication. Key thing to remember is that errors computed using hector position and the current target are in the world frame. It is imperative to convert the errors from the World Frame to the Robot Frame using a rotation matrix.

Further Work

  1. A tuning world, and maybe a rospy node running matplotlib to plot errors to a particular goal
  2. Keep a running average of the velocity to get a better prediction of where the hector and turtle bot can meet at the same time