diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2a5e834
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+models
+citadel_hill_world.world
+
diff --git a/package.xml b/package.xml
index ad34a0b..9b73b92 100644
--- a/package.xml
+++ b/package.xml
@@ -25,15 +25,12 @@
geometry_msgs
std_msgs
- stds_msgs
+ std_msgs
message_generation
message_runtime
message_runtime
- px4
- px4
-
diff --git a/src/LinkState.py b/src/LinkState.py
old mode 100644
new mode 100755
diff --git a/src/MoCap_Localization.py b/src/MoCap_Localization_Tether.py
old mode 100644
new mode 100755
similarity index 100%
rename from src/MoCap_Localization.py
rename to src/MoCap_Localization_Tether.py
diff --git a/src/MoCap_Localization_noTether.py b/src/MoCap_Localization_noTether.py
new file mode 100755
index 0000000..56e541a
--- /dev/null
+++ b/src/MoCap_Localization_noTether.py
@@ -0,0 +1,153 @@
+#!/usr/bin/env python2.7
+
+### Cesar Rodriguez Feb 2022
+### Script to determine payload and drone state using mocap
+
+import rospy, tf
+import rosservice
+import time
+import math
+from tf.transformations import *
+from oscillation_ctrl.msg import tethered_status
+from geometry_msgs.msg import PoseStamped
+from std_msgs.msg import Bool
+
+class Main:
+
+ def __init__(self):
+
+ # rate(s)
+ rate = 40 # rate for the publisher method, specified in Hz -- 20 Hz
+
+ self.dt = 1.0/rate
+
+ # Variables needed for testing start
+ self.tstart = rospy.get_time() # Keep track of the start time
+ while self.tstart == 0.0: # Need to make sure get_rostime works
+ self.tstart = rospy.get_time()
+
+ ### -*-*-*- Do not need this unless a test is being ran -*-*-*- ###
+ # How long should we wait before before starting test
+ #self.param_exists = False
+ #while self.param_exists == False:
+ # if rospy.has_param('sim/wait'):
+ # self.wait = rospy.get_param('sim/wait') # wait time
+ # self.param_exists = True
+ # elif rospy.get_time() - self.tstart >= 3.0:
+ # break
+
+ # Will be set to true when test should start
+ #self.bool = False
+ ### -*-*-*- END -*-*-*- ###
+
+ # initialize variables
+ self.drone_pose = PoseStamped()
+
+ # Max dot values to prevent 'blowup'
+ self.phidot_max = 3.0
+ self.thetadot_max = 3.0
+
+ # variables for message gen
+
+
+ # service(s)
+
+ # need service list to check if models have spawned
+
+
+ # wait for service to exist
+
+
+ # publisher(s)
+ #self.publisher = rospy.Publisher('/status/twoBody_status', tethered_status, queue_size=1)
+ #self.pub_wd = rospy.Publisher('/status/path_follow', Bool, queue_size=1)
+
+ #self.pub_timer = rospy.Timer(rospy.Duration(1.0/rate), self.link_state)
+ #self.path_timer = rospy.Timer(rospy.Duration(40.0/rate), self.path_follow)
+
+ ### Since there is no tether, we can publish directly to mavros
+ self.pose_pub = rospy.Publisher('/mavros/vision_pose/pose', PoseStamped, queue_size=1)
+
+ self.pub_timer = rospy.Timer(rospy.Duration(1.0/rate), self.publisher)
+
+ # subscriber(s)
+ rospy.Subscriber('/cortex/body_pose', PoseStamped, self.bodyPose_cb)
+
+ def cutoff(self,value,ceiling):
+ """
+ Takes in value and returns ceiling
+ if value > ceiling. Otherwise, it returns
+ value back
+ """
+ # initilize sign
+ sign = 1
+
+ # check if value is negative
+ if value < 0.0:
+ sign = -1
+ # Cutoff value at ceiling
+ if (value > ceiling or value < -ceiling):
+ output = sign*ceiling
+ else:
+ output = value
+ return output
+
+ def euler_array(self,pose):
+ """
+ Takes in pose msg object and outputs array of euler angs:
+ q[0] = Roll
+ q[1] = Pitch
+ q[2] = Yaw
+ """
+ q = euler_from_quaternion([pose.orientation.x,
+ pose.orientation.y,
+ pose.orientation.z,
+ pose.orientation.w])
+ return q
+
+# def FRD_Transform(pose)
+# '''
+# Transforms mocap reading to proper coordinate frame
+# '''
+# pose.position.x =
+# pose.position.y =
+# pose.position.z =
+
+# Keep the w same and change x, y, and z as above.
+# pose.orientation.x =
+# pose.orientation.y =
+# pose.orientation.z =
+# pose.orientation.w =
+
+# return pose
+
+
+# def path_follow(self,path_timer):
+# now = rospy.get_time()
+# if now - self.tstart < self.wait:
+# self.bool = False
+# else:
+# self.bool = True
+# self.pub_wd.publish(self.bool)
+
+ def bodyPose_cb(self,msg):
+ try:
+ self.drone_pose = msg
+
+ except ValueError:
+ pass
+
+ def publisher(self,pub_timer):
+ self.pose_pub.publish(self.drone_pose)
+
+if __name__=="__main__":
+
+ # Initiate ROS node
+ rospy.init_node('MoCap_node',anonymous=False)
+ try:
+ Main() # create class object
+ rospy.spin() # loop until shutdown signal
+
+ except rospy.ROSInterruptException:
+ pass
+
diff --git a/src/klausen_control.py b/src/klausen_control.py
old mode 100644
new mode 100755
diff --git a/src/ref_signalGen.py b/src/ref_signalGen.py
old mode 100644
new mode 100755
index 118cf07..2fa367d
--- a/src/ref_signalGen.py
+++ b/src/ref_signalGen.py
@@ -11,7 +11,7 @@ import math
from scipy import signal
from scipy.integrate import odeint
-from offboard_ex.msg import tethered_status, RefSignal
+from oscillation_ctrl.msg import tethered_status, RefSignal
from controller_msgs.msg import FlatTarget
diff --git a/src/square.py b/src/square.py
old mode 100644
new mode 100755
diff --git a/src/step.py b/src/step.py
old mode 100644
new mode 100755