Installation: 1: Follow the installation guide at https://git.spirirobotics.com/cesar.alejandro/oscillation_ctrl/src/branch/master to set up the oscillation_ctrl package, along with everything required to run the oscilattion_damp simulations 2: Create a new directory (not in your catkin_ws) to house the github files. This could be done by running the commands cd ~ mkdir OscillationControlWithCircle 3: Run the command git clone https://git.spirirobotics.com/scorpio1/OscillationControlWithCircle.git This will create a copy of the OscillationControlWithCircle files in the folder you just created 4: Run the command cd OscillationControlWithCircle This will move you into the OscillationControlWithCircle folder 5: Run the command chmod u+x setup.bash This will set it so you can execute the setup script 6: Run the command ./setup.bash This will copy the the files from src into the src folder of the oscillation_ctrl package, and the files from launch into the launch folder. 7: Move into your catkin_ws directory (cd ~/catkin_ws) 8: Run the command catkin build This will rebuild your catkin workspace, making sure the changes all work. Running the demo: You are now ready to run the circle demo. There are two versions of the demo, one based on waypoints and one based on controlling the spiri directly with acceleration. You can run the demo based on the waypoints using the command: roslaunch oscillation_ctrl oscillation_damp_circle.launch You can run the demo that uses the acceleration topic to control spiri using the command: roslaunch oscillation_ctrl spiri_circle_acceleration.launch There is a launch file that corresponds to straight line flight. To run this file, use the command: roslaunch oscillation_ctrl spiri_straight_line.launch There are also two optional parameters that work on all demos. Like oscilattion_damp.launch, there is an option to change the model. You can do so by adding model:=model name, replacing model name with of spiri, spiri_with_tether, headless_spiri_with_tether. There is also an option to also start a turtlesim node, and a turtle_test node, which will create a turtlesim window with a turtle that maps the two dimensional movements of the drone. This will allow you to see if the drone deviates from a circular path. To enable this option, add turtle:=true to the end of your launch command. Finally, there is a launch file that corresponds to the obstacle avoidance demos. To run this file, use the command: roslaunch oscillation_ctrl obstacle_avoidance.launch Like the other launch files, there are the model and turtle optional parameters. You can additionally change the walls you want spiri to avoid. You do so in the obstacle_test.py file. Near the bottom, there will be a variable called wall_lines. This variable can be modified to add or remove lines. Each element of the list is a line. Each line is a tuple of the form ([m,b],lower bound, upper bound), where the line is defined by the equation y=mx+b, and exists for lower bound