MATLABに基づくインテリジェント・カーのシミュレーションプログラム - プログラミング

インテリジェント・カーのシミュレーションプログラム

昨日、おそらく次のテストプログラムは、シミュレーションの効果はまだ可能である実行することができます。以下は、いくつかのレコードの画像データのシミュレーションです。
ここに画像を挿入説明
これは、カメラの車両撮像画像、生成されたGIFの進行です。それだけでシミュレーション試験結果であるため、PIDの完全な制御を書いていない、画像はモータ定数の電力出力、画像が急速に動いているPの唯一のサーボ制御効果を上回っているが、実際の速度は、0.16メートル/秒です。最後に、トラックオフ。以下は、曲線と実際のレーストラック中心線との比較チャートです。
ここに画像を挿入説明
ブルーは、実際のトラック中心線である、オレンジ、スマート車の走行軌跡です。実行効果がない方法ですが、私たちは、私は比較を行うための実際のデータがない家の中に閉じ込めているため、継続的なルートは、何のブレークポイントは、原則シミュレーション上、程度に真として、大した問題ではないはずシミュレーション結果を見ています、悪い判断、しかし写真は、それは良いことがあります。
ここではプログラムのスクリーンショットである
ここに画像を挿入説明
ことなどの設計プロセス何か、手の障害は、言葉はよくない画家は、ヘクタール私を許して、良いではありません。
ここに画像を挿入説明
最後に、シミュレーションプログラムと制御プログラムの閉ループ制御の間に見ることができます。
ここでmain.mプログラムは、私はリソースファイルにアップロードした全プログラムは、あなたがダウンロードに使用することができますものです

clc;clear;
%%仿真步长参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dt=0.001;% 仿真时间间隔 单位米
ds=0.001;% 地图采样点间距 单位米
%%车身及电机参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
m=1;%车重 单位 千克
p0=2;%车辆启动所需功率 单位 瓦
power=2.5;%启动时刻电机总功率,后续变化由控制程序决定。
kf=0.5;%摩擦系数
g=9.8; %重力系数
u=0.8;%电机效率
L=0.3;%车长 单位米
W=0.12;%车宽 单位米
v_c=0;%车速 单位 米/
x0=0;y0=0;%车辆起始点
a0=0;%当前轮转角 初始为0 后续由程序和舵机机械性能共同决定。
a=0; %下一刻前轮转角 初始为0 后续由程序和舵机机械性能共同决定。
wheel_angle=0;%初始时刻程序输出目标转角。
turn_force=pi;%转向能力设置 单位 角度/
full_angle=pi/4;%前轮最大转向角,相对车身中轴线。
CA0=0;%起始车身角度,相对于x轴正方向
%%摄像头参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
hc=0.2;%摄像头放置高度 单位米
near_point=0.2;%摄像头图像近点距离 单位米
far_point=1.2;%摄像头图像远点距离 单位米
camera_angle=pi/2;%摄像头的角度
pixel_w=60;%摄像头像素 宽
pixel_h=80;%摄像头像素 高
%%摄像头参数计算%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[dh,dw]=cal_camera(hc,far_point,near_point,camera_angle,pixel_w,pixel_h);
%%程序性能(仿真图像帧数)设置%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FPS=60;%帧率
fps_time=floor((1/FPS)*1000)/1000;%每帧图像之间的时间间隔
%%初始化赛道程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
load('map.mat');%下载地图
[track_x,track_y]=creat_track(ds);%%赛道中心线轨迹
image=get_image(x0,y0,CA0,dw,dh,IMAGE,pixel_h,pixel_w);%初始化摄像头图像

figure(1);
imh=imshow(image); 
set(imh, 'erasemode', 'none'); 

gif_num=1;%图像序列号(及第几帧)
i=1;
for time=0:dt:300
    [x(i),y(i)]=run(CA0,v_c,x0,y0,dt);
    x0=x(i);
    y0=y(i);
    
    if(mod(time*1000,fps_time*1000)==0)%%%由设置的程序性能(图像帧数)判断是否进入控制程序
    [image,black_pixel_num]=get_image(x0,y0,CA0,dw,dh,IMAGE,pixel_h,pixel_w);
    [power,wheel_angle]=control(v_c,image);
    set(imh, 'cdata', image);
    %%%%%%%%%%不需要生成GIF,将以下代码屏蔽。此代码很影响程序执行速度%%%%%%%%%%%%%%%%%%%%%%%
%     if(mod(time*1000,100)==0)
%     picname=['./picture/',num2str(gif_num),'.fig'];
%     saveas(gcf,picname);
%     gif_num=gif_num+1;
%     end
    %%%%%%%%%%不需要生成GIF,将以上代码屏蔽。此代码很影响程序执行速度%%%%%%%%%%%%%%%%%%%%%%%
    end
 
    if(black_pixel_num>4500) %%%判断赛车是否冲出赛道
    break;
    end
    
    a=frontwheel_angle(wheel_angle,full_angle,turn_force,a0,dt);
    v(i)=speed_model(v_c,power,dt,m,p0,kf,g,u);% current speed; power ; dt.
    CA(i)=turn_model(CA0,v_c,a,dt,L,W);% current body angle;current speed;wheel angle;dt
    v_c=v(i);
    CA0=CA(i);
    a0=a;
    i=i+1;
    pause(0.001)
end

figure(2);
time=0:dt:100;
axis([-3 3 -1 4]);
hold on;
grid on;
plot(track_x,track_y);
hold on;
plot(x,y);

以前の私の議論に多くの注意を払っていないの背後にあるコードを書くときに、すでに設定されていない、または使用パラメータは、いくつかのパラメータを変更することができないので、いくつかのパラメータ設定は、私も指摘しているパラメータの意味は、私が試したことパラメータのほとんどは、すべてあなた自身を試すことができ、変更することができます。

の手順を使用して

プログラムのmain.mはありますが、(私が執筆プログラム案を打ったときだ、我々が管理していないtest.m、)creat_gif.m、creat_map.m 3つの実行可能プログラム。以下は、一つ一つを導入しました。

main.m

シミュレーションは、プログラムの主な機能ですが、その使用は、地図情報によって私の前のスクリーンショットファイルをmap.mat必要がある場合のみ。プログラム全体のほとんどの機能は、そのサービスのためのものです、私はコメント行の機能で説明している機能の役割は、ポイントは、ライン上で完全にオープンソースを見に行きました。また、自由に変更することができます。

creat_map.m

これは、サブ機能についてはcreate_track.mを関連付けられている以前のmap.mat生成プログラムは、それがマップを変更することができcreate_track.m内のデータを変更し、マップファイルを生成するために使用されたと言われているが、これはどのようなI以前のファイルであり、私は、マップの大きさは5メートルでなければならないので、私はパラメータを設定していると言うのを忘れて* 6メートル(単位長さ1mで軸)。そして、実行creat_map.mマップ情報を生成することができます。

creat_gif.m

スマート車の運転状況を記録するために使用され、この文書の前提はmian.mにあることは、GIFに生成されたコードを実行することができ、実行後に、結果の画像は、各フレームの画像フォルダに保存されます、最も必要がマスクされていませんGIFは、現在のフォルダに保存run.gif名前が付けられます。私はGIF画像を入れ始めています。書き込みへのコードの必要性の数行が、それはプログラムの実施に影響を与えているので、これは、我々が使用するかどうかを決定する必要性を参照してください。

このプログラムは、私たちは私を許して、多くの欠陥がある、と私たちは議論と共通の進展を歓迎します。ありがとうございます。

リリース元の2件の記事 ウォンの賞賛5 ビュー797

おすすめ

転載: blog.csdn.net/weixin_42208428/article/details/104342473