<< Chapter < Page | Chapter >> Page > |
function [Thetas, Rhos] = fcn( thetas,rhos)% This block supports an embeddable subset of the MATLAB language.
% See the help menu for details.%initialise a frame count
persistent count;if isempty(count)
count = 0;end
%remember previous outputspersistent lastRhos;
persistent lastThetas;%initialise to same as first input for first entry into function
if isempty(lastRhos)lastRhos = rhos;
endif isempty(lastThetas)
lastThetas = thetas;end
%Assume that all is OK initiallyRhos = rhos;
Thetas = thetas;if count == 4
%after the 4th frame, engage the test logicfor I = 1:length(rhos)
if (abs(rhos(I) - lastRhos(I))>30) || (abs(thetas(I) - lastThetas(I))>10*(pi/180))
%too much change - just use the old values% outR(I) = lastRhos(I);
% outT(I) = lastThetas(I);Rhos(I) = lastRhos(I);
Thetas(I) = lastThetas(I);end
endelse
%otherwise just output the computed valuescount = count+1;
end%assign outputs
%Rhos = outR;%Thetas = outT;%remember outputs for next time
lastRhos = Rhos;lastThetas = Thetas;
Connect the block as shown in the following picture:
In the main model, double-click the “Line Drawing and Image Construction” block.
Change the configuration of the “Draw Lines” block as follows:
Now, it will draw the polygon based on the two longest lines.
Add the following blocks to the subsystem:
Block | Library | Quantity |
Concatenate | Simulink /Math Operations | 2 |
Selector | Simulink / Signal Routing | 3 |
Gain | Simulink / Math Operations | 1 |
Relational Operator | Simulink / Logic and Bit Operations | 1 |
Logical Operator | Simulink / Logic and Bit Operations | 1 |
Submatrix | Signal Processing Toolbox:“Math Functions / Matrices and Linear Algebra / Matrix Operations” or “Signal Management / Indexing” | 1 |
Connect the blocks as follows:
The blocks should be configured as follows:
Rename the “Line Detection” to “Lane Detection”. Save the model as “LaneDetection.mdl” The model should look as follows:
Double Click the Lane Detection block. You may rename the blocks’ names. It will look as follows:
Run your model.
Running this gives you the images in Figure 7.
Open the “ RW_dm6437_tcpip.mdl ” Simulink model (generated in the " A Framework for Video Processing with the DM6437 DVDP " module).
Save the model as "lane_dm6437_tcpip.mdl".
Change the name of the “R_W Algorithm” block to “Lane Algorithm”.
Right click on the "Build/Reload&Run" subsystem, choose “Block Properties”. Go to the Callbacks tab, and under OpenFcn* enter: “lane_tcpip_script('lane_pcl_tcpip');”, as shown in the following picture:
Double-click the “Task” block and make the same changes as shown:
Double-Click the “Lane Algorithm” subsystem.
Copy "Lane Detection and Tracking" block from "LaneDetection.mdl" into this model as shown.
Configure the "TCP/IP Receive" block :
Configure the "TCP/IP Send" block :
Configure the "Byte Unpack" block :
Configure the "Byte Pack" block :
Open the "RW_pcl_tcpip.mdl" model, created in the "Video R_W" directory.
Save the model as "lane_pcl_tcpip.mdl".
Double-click the “Video Source” block and make the same changes as shown:
Configure the "TCP/IP Receive" block :
Double-click the “Display” block, Double-click the “Data Unpack” block and Configure the "Byte Unpack" block as shown:
function lane_tcpip_script(hostModelName)
% controls host-side TCP/IP processing for% Video Surveillance demo:
%********** Initialization ********************% Get model name
modelName = gcs;% Connect to CCS
CCS_Obj = connectToCCS(modelName);saved_visibility = CCS_Obj.isvisible;
CCS_Obj.visible(1);% Load application
loadApp(modelName, CCS_Obj);% Run application
fprintf('Running application: %s\n', modelName);CCS_Obj.run;
% Allow some time for DHCP address acquisitionpause(3);
% Retrieve target's host nameboardType = get_param([modelName '/IP Config'], 'boardType');userPrompt = sprintf('Enter the IP address or the host name of the %s board: ', boardType);
hostName = inputdlg(userPrompt, 'Target IP address');if isempty(hostName)
errordlg('You have to provide a valid IP address or host name to run the demo.',...'TCP/IP Surveillance Recording', 'modal');
return;end
hostName = strtrim(hostName{1});% Launch host side UDP receive / Video display model
fprintf('Launching host side application: %s\n', hostModelName);open_system(hostModelName);
% Update host side TCP/IP blocks with target's IP addressset_param([hostModelName '/TCP//IP Send'], 'Host', hostName);set_param([hostModelName '/TCP//IP Receive'], 'Host', hostName);fprintf('Click on play button to start running the host side application!\n\n')
%[EOF]tcpip_surveil_script.m
Open a new m-file, copy the following code and save it as "lane_tcpip_script.m" at the same directory as the model.
Build load and run the project from the "lane_dm6437l_tcpip.mdl" model. Double-click the "Build / Reload&Run" block.
Running the script, you will see:
Notification Switch
Would you like to follow the 'From matlab and simulink to real-time with ti dsp's' conversation and receive update notifications?