Skip to content

Commit 934acfb

Browse files
author
marija-p
committed
Clean-up of GPS spoofer
Add param to publish disturbed pose messages
1 parent f3484cf commit 934acfb

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

src/gps_spoofer.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,16 @@
1212

1313
class GPSSpoofer:
1414
def __init__(self):
15+
# Parameters
16+
self.altitude_input = rospy.get_param('~altitude_input', 'vicon')
17+
self.pose_publisher = rospy.get_param('~publish_pose', True)
18+
19+
# TODO: load params from param server
20+
self.max_R_noise = 0.0 # [m] max tested: 0.15
21+
self.pub_period = 0.1 # [s], publish disturbed pose every X s
22+
# self.pos_var = pow(max(0.0707, self.max_R_noise/2.0), 2)
23+
# self.pos_var = 0.005;
24+
1525
self.fix = NavSatFix()
1626
#self.fix.header.stamp = ...
1727
self.fix.header.frame_id = 'fcu'
@@ -22,17 +32,7 @@ def __init__(self):
2232
self.fix.altitude = 0.0
2333
# TODO: fill GPS covariance
2434

25-
self.altitude = Float64()
26-
27-
self.altitude_input = rospy.get_param('~altitude_input', 'vicon')
28-
29-
# TODO: load params from param server
30-
self.max_R_noise = 0.0 # [m] max tested: 0.15
31-
self.pub_period = 0.1 # [s], publish disturbed pose every X s
32-
33-
# self.pos_var = pow(max(0.0707, self.max_R_noise/2.0), 2)
34-
# self.pos_var = 0.005;
35-
35+
self.latest_altitude_message = Float64()
3636
self.latest_imu_message = Imu()
3737

3838
self.pwc = PoseWithCovarianceStamped()
@@ -55,7 +55,7 @@ def __init__(self):
5555

5656
self.pub_spoofed_gps = rospy.Publisher('spoofed_gps', NavSatFix, queue_size=1)
5757
self.pub_disturbed_pose = rospy.Publisher('disturbed_pose', PoseWithCovarianceStamped, queue_size=1, tcp_nodelay=True)
58-
self.pub_point = rospy.Publisher('vicon_point', PointStamped, queue_size=1, tcp_nodelay=True)
58+
self.pub_point = rospy.Publisher('vicon_point', PointStamped, queue_size=1, tcp_nodelay=True)
5959

6060
self.sub_altitude = rospy.Subscriber('laser_altitude', Float64, self.callback_altitude, tcp_nodelay=True)
6161
self.sub_gps = rospy.Subscriber('gps', NavSatFix, self.callback_gps, tcp_nodelay=True)
@@ -79,7 +79,6 @@ def callback_odometry(self, data):
7979
y = data.pose.pose.position.y
8080

8181
# Angle between vi-con x axis and ENU East-aligned x axis
82-
#angle = radians(-7.0) #imu compass
8382
angle = -2.73
8483

8584
# Rotate x and y to align x to East
@@ -100,9 +99,8 @@ def callback_odometry(self, data):
10099
self.pwc.pose.pose.position.z = data.pose.pose.position.z
101100
self.point.point.z = data.pose.pose.position.z
102101
elif (self.altitude_input == 'external'):
103-
#print 'Got laser data'
104-
self.pwc.pose.pose.position.z = self.altitude.data
105-
self.point.point.z = self.altitude.data
102+
self.pwc.pose.pose.position.z = self.latest_altitude_message.data
103+
self.point.point.z = self.latest_altitude_message.data
106104
else:
107105
ROS_WARN("Unknown altitude input parameter")
108106

@@ -116,7 +114,7 @@ def callback_imu(self, data):
116114
self.latest_imu_message = data
117115

118116
def callback_altitude(self, data):
119-
self.altitude = data
117+
self.latest_altitude_message = data
120118

121119
def sample_noise(self, event):
122120
#print "Resampling noise"
@@ -128,7 +126,9 @@ def publish_noisy_positions(self, event):
128126
#print "Publishing odometry"
129127
self.pwc.pose.pose.position.x += self.R_noise*cos(self.theta_noise)
130128
self.pwc.pose.pose.position.y += self.R_noise*sin(self.theta_noise)
131-
self.pub_disturbed_pose.publish(self.pwc)
129+
130+
if (self.pose_publisher == True):
131+
self.pub_disturbed_pose.publish(self.pwc)
132132

133133
self.point.point.x += self.R_noise*cos(self.theta_noise)
134134
self.point.point.y += self.R_noise*sin(self.theta_noise)

0 commit comments

Comments
 (0)