20 lines
		
	
	
		
			430 B
		
	
	
	
		
			Matlab
		
	
	
		
		
			
		
	
	
			20 lines
		
	
	
		
			430 B
		
	
	
	
		
			Matlab
		
	
	
| 
								 | 
							
								% Christian Potthast
							 | 
						||
| 
								 | 
							
								% create visibility matrix
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function V = create_visibility(map,pose,threshold)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								n = size(map,2);
							 | 
						||
| 
								 | 
							
								m = size(pose,2);
							 | 
						||
| 
								 | 
							
								V = sparse([],[],[],n+m,n+m);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								for t = 1:m
							 | 
						||
| 
								 | 
							
								    % find measurements within Manhattan range
							 | 
						||
| 
								 | 
							
								    js = find(2==sum(abs(map-pose(:,t)*ones(1,n))<[threshold;threshold]*ones(1,n)));
							 | 
						||
| 
								 | 
							
								    for j = js
							 | 
						||
| 
								 | 
							
								        V(j,t+n)=1;
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								    % add in odometry links
							 | 
						||
| 
								 | 
							
								    if t>1
							 | 
						||
| 
								 | 
							
								       V((t+n)-1,t+n)=1; 
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								end
							 |