Skip to content

Commit

Permalink
Merge pull request #55 from sgemme-csa/master
Browse files Browse the repository at this point in the history
KeyError in publishCameraState when camera is not ready on PTZ camera
  • Loading branch information
civerachb-cpr committed May 26, 2020
2 parents f5018a8 + 00c70cb commit 5d21cf1
Showing 1 changed file with 21 additions and 17 deletions.
38 changes: 21 additions & 17 deletions nodes/axis_ptz.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,9 @@ def run(self):
def queryCameraPosition(self):
'''Using Axis VAPIX protocol, described in the comments at the top of
this file, is used to query the state of the camera'''
conn = httplib.HTTPConnection(self.axis.hostname)
queryParams = { 'query':'position' }
conn = httplib.HTTPConnection(self.axis.hostname)

try:
conn.request("GET", "/axis-cgi/com/ptz.cgi?%s" %
urllib.urlencode(queryParams))
Expand Down Expand Up @@ -69,21 +70,24 @@ def queryCameraPosition(self):

def publishCameraState(self):
'''Publish camera state to a ROS message'''
if self.cameraPosition is not None:
self.msg.pan = float(self.cameraPosition['pan'])
if self.axis.flip:
self.adjustForFlippedOrientation()
self.msg.tilt = float(self.cameraPosition['tilt'])
self.msg.zoom = float(self.cameraPosition['zoom'])
self.msg.iris = 0.0
if 'iris' in self.cameraPosition:
self.msg.iris = float(self.cameraPosition['iris'])
self.msg.focus = 0.0
if 'focus' in self.cameraPosition:
self.msg.focus = float(self.cameraPosition['focus'])
if 'autofocus' in self.cameraPosition:
self.msg.autofocus = (self.cameraPosition['autofocus'] == 'on')
self.axis.pub.publish(self.msg)
try:
if self.cameraPosition is not None:
self.msg.pan = float(self.cameraPosition['pan'])
if self.axis.flip:
self.adjustForFlippedOrientation()
self.msg.tilt = float(self.cameraPosition['tilt'])
self.msg.zoom = float(self.cameraPosition['zoom'])
self.msg.iris = 0.0
if 'iris' in self.cameraPosition:
self.msg.iris = float(self.cameraPosition['iris'])
self.msg.focus = 0.0
if 'focus' in self.cameraPosition:
self.msg.focus = float(self.cameraPosition['focus'])
if 'autofocus' in self.cameraPosition:
self.msg.autofocus = (self.cameraPosition['autofocus'] == 'on')
self.axis.pub.publish(self.msg)
except KeyError as e:
rospy.logwarn("Camera not ready for polling its telemetry: " + repr(e.message))

def adjustForFlippedOrientation(self):
'''Correct pan and tilt parameters if camera is mounted backwards and
Expand Down Expand Up @@ -303,4 +307,4 @@ def main():

if __name__ == "__main__":
main()


0 comments on commit 5d21cf1

Please sign in to comment.