Beispiel #1
0
	def read_once(self, limb, unit='meter', Nx3_cloud=False, clean=None):
		while True:
			try:
				if limb=='right':
					camera = RemoteCamera(RIGHT_CAMERA_IP, 30000)
				elif limb=='left':
					camera = RemoteCamera(LEFT_CAMERA_IP, 30000)
				else:
					raise Exception('Unrecognized limb '+str(limb))
				color, cloud, depth_uv, color_uv = camera.read()
				camera.close()
				break
			except:
				print 'Camera Connection Error. Retry in 1 second...'
				time.sleep(1)
		print 'image taken'
		if unit in ['meter', 'm']:
			cloud /= 1000
		elif unit in ['centimeter', 'centi-meter', 'cm']:
			cloud = cloud
		else:
			raise Exception('Unrecognized unit '+str(unit))
		if Nx3_cloud:
			cloud = cloud.reshape(-1, 3)
		if Nx3_cloud:
			assert clean is not None, 'clean must be a boolean when Nx3_cloud is True'
			if clean:
				keep_idxs = np.where(cloud[:,2].flatten()!=0)[0]
				cloud = cloud[keep_idxs,:]
		return color, cloud, depth_uv, color_uv
Beispiel #2
0
	def read_once(self, limb, unit='meter', Nx3_cloud=False, clean=None, index=None):
		while True:
			try:
				if limb=='right':
					camera = RemoteCamera(RIGHT_CAMERA_IP, 30000)
				elif limb=='left':
					camera = RemoteCamera(LEFT_CAMERA_IP, 30000)
				elif limb == None:

					if index == None:
						raise Exception('Limb cannot be none when camera index is also none')
					else:
						#print 'Camera IP is ', CAMERA_IP[index]
						camera = RemoteCamera(CAMERA_IP[index], 30000)
					
				else:
					raise Exception('Unrecognized limb '+str(limb))
				color, cloud, depth_uv, color_uv = camera.read()
				camera.close()
				#print 'camera closed'
				break
			except Exception, err:
				print err
				print 'Camera Connection Error. Retry in 1 second...'
				time.sleep(1)
	def read_average_depth(self, ite=10, unit='meter'):
		camera = RemoteCamera('10.236.66.147', 30000)
		all_depth = np.zeros((480, 640, ite))
		for i in xrange(ite):
			all_depth[:,:,i] = camera.read()[1][:,:,2] # [1] to index cloud, [:,:,2] to index z axis
		camera.close()
		all_depth[all_depth==0]=np.nan
		depth_avg = np.nanmean(all_depth, axis=2)
		print 'Shape of average depth is', depth_avg.shape
		if unit in ['meter', 'm']:
			depth_avg /= 1000
		elif unit in ['centimeter', 'centi-meter', 'cm']:
			depth_avg = depth_avg
		else:
			raise Exception('Unrecognized unit '+str(unit))
		return depth_avg
	def read_once(self, unit='meter', Nx3_cloud=False, clean=None):
		camera = RemoteCamera('10.236.66.147', 30000)
		color, cloud, depth_uv, color_uv = camera.read()
		camera.close()
		if unit in ['meter', 'm']:
			cloud /= 1000
		elif unit in ['centimeter', 'centi-meter', 'cm']:
			cloud = cloud
		else:
			raise Exception('Unrecognized unit '+str(unit))
		if Nx3_cloud:
			cloud = cloud.reshape(-1, 3)
		if Nx3_cloud:
			assert clean is not None, 'clean must be a boolean when Nx3_cloud is True'
			if clean:
				keep_idxs = np.where(cloud[:,2].flatten()!=0)[0]
				cloud = cloud[keep_idxs,:]
		return color, cloud, depth_uv, color_uv
	def read_cloud_avg(self, ite=10, unit='meter', Nx3_cloud=False, clean=None):
		camera = RemoteCamera('10.236.66.147', 30000)
		all_cloud = np.zeros((480, 640, 3, ite))
		for i in xrange(ite):
			all_cloud[:,:,:,i] = camera.read()[1] # [1] to index cloud
		camera.close()
		all_cloud[all_cloud==0]=np.nan
		cloud_avg = np.nanmean(all_cloud, axis=3)
		print 'Shape of average cloud is', cloud_avg.shape
		if unit in ['meter', 'm']:
			cloud_avg /= 1000
		elif unit in ['centimeter', 'centi-meter', 'cm']:
			cloud_avg = cloud_avg
		else:
			raise Exception('Unrecognized unit '+str(unit))
		if Nx3_cloud:
			cloud_avg = cloud_avg.reshape(-1, 3)
		if Nx3_cloud:
			assert clean is not None, 'clean must be a boolean when Nx3_cloud is True'
			if clean:
				keep_idxs = np.where(cloud_avg[:,2].flatten()!=np.nan)[0]
				cloud_avg = cloud_avg[keep_idxs,:]
		return cloud_avg