Main Page
Namespaces
Classes
Files
File List
File Members
src
declination
compute.py
Go to the documentation of this file.
1
#
2
# @author Mike Purvis <mpurvis@clearpathrobotics.com>
3
# @copyright Copyright (c) 2013, Clearpath Robotics, Inc.
4
#
5
# Redistribution and use in source and binary forms, with or without
6
# modification, are permitted provided that the following conditions are met:
7
# # Redistributions of source code must retain the above copyright
8
# notice, this list of conditions and the following disclaimer.
9
# # Redistributions in binary form must reproduce the above copyright
10
# notice, this list of conditions and the following disclaimer in the
11
# documentation and/or other materials provided with the distribution.
12
# # Neither the name of Clearpath Robotics, Inc. nor the
13
# names of its contributors may be used to endorse or promote products
14
# derived from this software without specific prior written permission.
15
#
16
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
# DISCLAIMED. IN NO EVENT SHALL CLEARPATH ROBOTICS, INC. BE LIABLE FOR ANY
20
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
#
27
# Please send comments, questions, or patches to code@clearpathrobotics.com
28
29
30
from
roslib.packages
import
get_pkg_dir
31
import
rospy
32
33
from
std_msgs.msg
import
Float32
34
from
sensor_msgs.msg
import
NavSatFix
35
36
from
geomag.geomag
import
GeoMag
37
from
math
import
radians
38
from
os
import
path
39
40
41
class
Compute
:
42
def
__init__
(self):
43
rospy.init_node(
"declination_provider"
)
44
wmm_path = path.join(get_pkg_dir(
'declination'
),
"wmm"
,
"WMM.COF"
)
45
self.
gm
=
GeoMag
(wmm_path)
46
47
self.
fix
=
None
48
self.
sub
= rospy.Subscriber(
"fix"
, NavSatFix, self.
_fix
)
49
self.
pub
= rospy.Publisher(
"declination"
, Float32, latch=
True
)
50
51
def
_fix
(self, msg):
52
if
self.
fix
:
53
# For now, return. Later, figure out conditions under which to recompute.
54
return
55
56
if
msg.latitude
and
msg.longitude:
57
self.
fix
= msg
58
if
not
msg.altitude: msg.altitude = 0
59
result = self.gm.calc(msg.latitude, msg.longitude, msg.altitude)
60
result_rad = radians(result.dec)
61
self.pub.publish(result_rad)
62
rospy.loginfo(
"Computed magnetic declination to be %f rad (%f degrees)"
\
63
% (result_rad, result.dec))
64
65
def
spin
(self):
66
rospy.spin()
declination.compute.Compute.pub
pub
Definition:
compute.py:49
declination.compute.Compute.__init__
def __init__(self)
Definition:
compute.py:42
geomag.geomag
Definition:
geomag.py:1
declination.compute.Compute.gm
gm
Definition:
compute.py:45
declination.compute.Compute.fix
fix
Definition:
compute.py:47
geomag.geomag.GeoMag
Definition:
geomag.py:23
declination.compute.Compute._fix
def _fix(self, msg)
Definition:
compute.py:51
declination.compute.Compute.spin
def spin(self)
Definition:
compute.py:65
declination.compute.Compute
Definition:
compute.py:41
declination.compute.Compute.sub
sub
Definition:
compute.py:48
declination
Author(s):
autogenerated on Sat May 23 2020 03:41:45