网站设计在线crm系统,wordpress同步到豆瓣,一键做网站的软件,做推广的网站需要注意什么写在前面#xff1a; #x1f31f; 欢迎光临 清流君 的博客小天地#xff0c;这里是我分享技术与心得的温馨角落。#x1f4dd; 个人主页#xff1a;清流君_CSDN博客#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 #x1f50d; 本文系 清流君 原创之作 欢迎光临 清流君 的博客小天地这里是我分享技术与心得的温馨角落。 个人主页清流君_CSDN博客期待与您一同探索 移动机器人 领域的无限可能。 本文系 清流君 原创之作荣幸在CSDN首发 若您觉得内容有价值还请评论告知一声以便更多人受益。 转载请注明出处尊重原创从我做起。 点赞、评论、收藏三连走一波让我们一起养成好习惯 在这里您将收获的不只是技术干货还有思维的火花 系列专栏【决策规划】系列带您深入浅出领略自动驾驶决策规划的魅力。 愿我的分享能为您带来启迪如有不足敬请指正让我们共同学习交流进步 人生如戏我们并非能选择舞台和剧本但我们可以选择如何演绎 感谢您的支持与关注让我们一起在知识的海洋中砥砺前行~~~ 文章目录 引言一、仿真平台搭建1.1 软件安装与配置1.2 Prescan 与 Carsim 联合仿真设置(1) 找到联合仿真文件(2) 设置车辆位置(3) 设置仿真频率(4) 构建模型 1.3 Matlab 与 Prescan 联合仿真操作(1) 打开 Matlab(2) 配置接口(3) 编译 C 程序(4) 调整工作路径 1.4 适配算法与仿真平台搭建(1) 加载数据(2) 参数设置(3) 复制粘贴算法(4) 匹配输入输出接口 二、各模块算法概述2.1 定位模块2.2 决策规划模块2.3 控制模块 三、仿真结果与分析3.1 模型算法运行与调试3.2 摄像头视角设置与可视化3.3 轨迹跟踪效果分析3.4 速度与加速度跟踪 四、总结参考资料 引言 本篇博客是自动驾驶决策规划算法第二章的第一节是正式第二章讲决策规划算法的开篇。内容整理自 B站知名up主 忠厚老实的老王 的视频作为博主的学习笔记分享给大家共同学习。 本系列将理论与代码实践结合即边讲理论边写代码就像搭积木一样慢慢地把规划算法拼出来这样对各位来说是更容易的学习方式。所以在 Githab 上传了一份代码各位可以把它下载下来作为整个规划系列的基础可以把这份代码理解为地基以后就拿这份代码作为基础不断地迭代。 每讲到新的知识就写成代码拼到基础的代码上去。随着学习的内容越来越丰富代码也会随之变得越来越多、越来越丰富直到最终完成决策规划的整个代码。 一、仿真平台搭建 本篇博客讲解如何使用这份代码下载链接如下 自动驾驶决策规划代码与模型Github地址
1.1 软件安装与配置 首先要下载这四个软件缺一不可而且版本也有严格要求。仿真平台是以 PreScan 为基础即 PreScan MATLAB Carsim 三个软件联合仿真。 MATLAB R2020a 主要写算法和跑仿真的工具 Carsim 2019.1 提供车辆动力学习模型 PreScan 8.5 提供传感器感知环境信息搭建道路环境 MinGW-64 PreScan 和 Matlab 联合仿真需要用的 C 编译器
下面讲解这三个软件的操作。
1.2 Prescan 与 Carsim 联合仿真设置
(1) 找到联合仿真文件 首先找到 PreScan 自带的和 Carsim 联合仿真的文件如果装了 PreScan 一定能找到要用倒数第四个 Demo_prescanCarsim3D 文件 点进去就会找到 Demo_PreScanCarSim3D.cpar 文件 找到文件后打开 PreScan 关于 PreScan 的具体操作就不细讲了 PreScan 的操作其实很简单而且 B 站上也有相关教程可以适当学一学。 下面直接讲怎么做。首先打开PreScan先新建实验起个名字 首先点 Actors把 Audi A8 Sedan 车拖出来。 可以看到 Actors 里有很多车但只能拖奥迪 A8 出来不能拖别的车必须是奥迪A8 。
(2) 设置车辆位置 拖出来之后在右边 Location 这把位置改一下把车辆起点的 x , y x,y x,y 都改成 0 , 0 0,0 0,0。 z z z 不用改 改完后按回车车辆就移动到 ( 0 , 0 ) (0,0) (0,0) 位置上。 Prescan 先放一边打开 Carsim 选右下角最后的选项 选择刚才所说的 Demo_PreScanCarSim3D.cpar 文件。 Demo_PreScanCarSim3D.cpar文件其实就是 Prescan 自己做的和 Carsim 联仿的类似于接口的东西。 c part 它他打包了 Carsim 相关的数据比如底盘数据、转向数据、轮胎数据是类似于压缩包一样的东西所以在这里就是选择案例 CarSim 软件要把压缩包里的东西提取出来但压缩包只能用 CarSim 自带的软件提取。 选择文件后提示要把压缩包里的动力学数据提取到哪个文件夹下面。理论上可以放在任何地方但推荐最好放在 Prescan 的 Experiments 下面比较方便因为所有 Prescan 的工程新建文件都会放在 Experiments这样比较好找。 给文件夹起名字最好不要用中文名可能会遇到各种各样的 BUG比如就起动力学模型的英文名 DynamicModel。 点确定后 Carsim 就会把 .cpar 文件解压缩到 DynamicModel 文件夹里。 看一下 Carsim 的输入和输出输入有很多个输出也有很多个。 这样 Carsim 的动力学模型就弄好了。现在要用 Prescan 和 Carsim 一起仿真所以在 Prescan 中也要做相应的设置。 回到 Prescan 首先右键小车在 Object configuration 里选 Dynamics勾选用户自定义DynamicModel 里有 Extensions找到 Simulink选择CarSim_VehicleDynamics.mdl 文件。 (3) 设置仿真频率 再点最上面像时钟一样的按钮设置仿真频率或者叫迭代步长。 对于 Carsim 的动力学模型来说要 1000 H z 1000Hz 1000Hz 才行不然会不收敛。上面是 Prescan 自带的仿真频率因为只提供环境传感器的信息只要 20 H z 20Hz 20Hz 就可以但动力学模型必须要以较快的频率运行否则不会收敛。所以下面要改成 1000 H z 1000Hz 1000Hz。 频率过高的话计算量会变大所以电脑可能计算不了如果不能是 1000 H z 1000Hz 1000Hz 的话至少也要是 200 H z 200Hz 200Hz 以上最低也要 200 H z 200Hz 200Hz。同时 Carsim 的步长也得改成 200 H z 200Hz 200Hz。在本篇博客使用的是 1000 H z 1000Hz 1000Hz Carsim 也是 1000 H z 1000Hz 1000Hz总之同步即可。
(4) 构建模型 最后要点屏幕上面的 Build 按钮如果不点所有工作都白做。 Build 的作用是什么呢 Build 是把 Prescan 相关数据自动生成为 Simlink 模型。所以在 Prescan 里做过任何相关的改动比如加了什么车或者把车移到什么位置哪怕就是把车移一下位置做完后都得 Build 一下因为会根据新的位置重新生成 Simlink 模型。
1.3 Matlab 与 Prescan 联合仿真操作
(1) 打开 Matlab Build 完后就可以打开 Matlab 了。但如果想要 Prescan 和 Matlab 联合仿真的话 Matlab 不能直接双击打开要按照以下操作去做。
(2) 配置接口 首先右键屏幕右下角 PreScan 的小图标选择 open在这里有 Matlab 点 Start (3) 编译 C 程序 要在这里打开 Matlab会配置跟 Prescan 相关的接口不能直接在桌面上双击。 如果是第一次用 Prescan 和 Matlab 联仿会调用 MinGW-64 编译器做一系列 C 相关程序的编译过程会比较长大概 5 − 10 5-10 5−10 分钟此过程只做一次即可第二次打开就很快大概几秒钟就弄好了。
(4) 调整工作路径 当一切准备完毕后Matlab 的工作路径会自动跳转到 Prescan Experience 路径下。 把工作路径改成 Prescan 刚建的工程 TestEMPlanner文件夹下。 TestEMPlanner文件夹里多了很多东西首先有 TestEMPlanner_cs.slx 文件这就是 Prescan Build 出来的 Simulink 模型。
1.4 适配算法与仿真平台搭建 打开模型后会先读取 TestEMPlanner.pb 文件生成相关配置模型如下图所示。 (1) 加载数据 模型左上角是 Prescan 图标右上方的按钮叫 Regenerate当在 Prescan 里 Build 后在 Simulink 里还要再点 Regenerate 重新生成一下改动才能在 Simulink 里生效。 也就是说无论在 Prescan 里做了什么改动加了什么道路加了什么障碍物之类的首先在 Prescan 里要 Build在 Simulink 里要 Regenerate 。而且每次刚打开时会自动 Regenerate 一下。
(2) 参数设置 双击到车的模块里看一下里面有车辆动力学模型 点向下的箭头就进去了 里面有 Casim 的 S S S 函数 CarSim S-Function2。 若提示找不到模块尝试把 S-Function2 中的 2 2 2 去掉。 点开 S S S 函数需要给出 simfile 文件的具体路径。 simfile 文件目前还没有所以要先生成 simfile打开 Carsim 点击Send to SimulinkCarsim就会自动调用 Matlab在 DynamicModel 文件夹里就生成了 simfile 文件。按住 Shift 加右键复制文件地址粘到上面去就可以了。 注意需要删除粘贴出来的引号。 最后再配置一下 Carsim 的输入和输出。 设置输入可以参考模板因为 Prescan 有自带的 Prescan 和 Carsim 联仿的模型参考模型的设置来设置自己的模型。在 .cpar 文件所在的位置里面有 Simulink 模型打开模型看一下。 打开车辆模型里面有设置好的输入、输出粘过来即可。 如果 Carsim S-Function 是错误的状态可能是名字不对尝试把 Carsim S-Function 改成 Carsim S-Function2。 如果没问题就不要动它把输入和输出粘到自己的模型上去。 看一下输入。 是 [ 1 1 1 12 8 ] [1\ 1\ 1\ 12\ 8] [1 1 1 12 8]共有 23 23 23 个输入正好对应 Carsim 输入也是 23 23 23 个。 前三个是方向盘油门、刹车。作为接口开放出来。 v x v_x vx 和 v y v_y vy 是现成的都输出来但 a x a_x ax 和 a y a_y ay 没有所以要在 Carsim 中添加两个输出量接口 a x , a y a_x,a_y ax,ay。 点击Send to Simulink在 Simulink 中点击 CarSim2PreScanSTATE 模块查看输出是 [ 333 − 1 ] [3 3 3 -1] [333−1] 也就是前面有 9 9 9 个了一共是 37 37 37 个所以后面应该还有 28 28 28 个使用 Debux 模块设置 28 28 28 个输出把最后两个接口引出来就是 a x a_x ax 和 a y a_y ay。 注意单位换算因为单位都是 g g g所以要乘 9.8 9.8 9.8 变成 m / s 2 m/s^2 m/s2。 这样整个模型基本的 Carsim 和 Prescan 之间的相关接口就已经全部完成了。
(3) 复制粘贴算法 接下来开始适配算法打开 GitHub 上下载的文件。 把这三个文件复制粘贴到 Prescan 的 TestEMPlanner工程根根目录下。先在 Prescan 里 Regenerate 刷新一下。 看一下这三个文件到底是什么。
emplanner_init.m 初始化文件加载数据。
emplanner_init.m
%%%%%EM PLANNER初始化与配置文件主要是加载全局路径加载油门刹车标定表设置规划和控制参数等等%%%%加载全局路径和油门刹车标定表
%加载油门刹车标定表标定表是以前已经做好的不用标直接用就可以。
load(table_calibration.mat)%%%%%前轮转角与方向盘转角的映射关系
right_wheel_ground[-70 ,-67.2 , -64.4 , -61.6 , -58.8 , -56 , -53.2 , -50.4 , -47.6 , -44.8 , -42 , ...-39.2 , -36.4 , -33.6 , -30.8 , -28 , -25.2 , -22.4 , -19.6 , -16.8 , -14 , -11.2 , -8.4 , -5.6 , ...-2.8 , 0 , 2.8 , 5.6 , 8.4 , 11.2 , 14 , 16.8 , 19.6 , 22.4 , 25.2 , 28 , 30.8 , 33.6 , 36.4 , ...39.2 , 42 , 44.8 , 47.6 , 50.4 , 53.2 , 56 , 58.8 , 61.6 , 64.4 , 67.2 , 70 ];rack_displacement[-39.14 , -37.2 , -35.29 , -33.43 , -31.6 , -29.81 , -28.06 , -26.34 , -24.66 , ...-23.01 , -21.38 , -19.79 , -18.23 , -16.69 , -15.18 , -13.7 , -12.23 , -10.8 , -9.38 , -7.98 ,...-6.61 , -5.25 , -3.91 , -2.59 , -1.29 , 0 , 1.27 , 2.54 , 3.78 , 5.02 , 6.24 , 7.46 , 8.66 , ...9.86 , 11.05 , 12.24 , 13.41 , 14.59 , 15.76 , 16.92 , 18.09 , 19.25 , 20.42 , 21.59 , 22.76 , ...23.93 , 25.11 , 26.3 , 27.5 , 28.71 , 29.94];%转向系统特性
c_factor43.75;%%单位: mm/rev
%%%%%
%%%参数设置%%%%%%
DEG2RADpi/180;
RAD2DEG180/pi;
%%%%整车参数%%%%%
cf-175016;
cr-130634;
m2020;
Iz4095.0;
la1.265;
lb2.947-1.265;
%%%%%%%横向LQR参数
LQR_Q125;
LQR_Q23;
LQR_Q310;
LQR_Q44;
LQR_R15;
%%%%纵向双PID参数
KP_PID_distance0.5;
KI_PID_distance0.0;
KD_PID_distance0.0;
KP_PID_speed1.8;
KI_PID_speed0;
KD_PID_speed0;
%%%%%LQR_OFFLINE
kzeros(5000,4);
vx_break_pointzeros(1,5000);
for i1:5000vx_break_point(i)0.01*i;A[0,1,0,0;0,(cfcr)/(m*vx_break_point(i)),-(cfcr)/m,(la*cf-lb*cr)/(m*vx_break_point(i));0,0,0,1;0,(la*cf-lb*cr)/(Iz*vx_break_point(i)),-(la*cf-lb*cr)/Iz,(la*la*cflb*lb*cr)/(Iz*vx_break_point(i))];B[0;-cf/m;0;-la*cf/Iz];
LQR_Q1*[LQR_Q1,0,0,0;0,LQR_Q2,0,0;0,0,LQR_Q3,0;0,0,0,LQR_Q4];k(i,:)lqr(A,B,LQR_Q,LQR_R);
end
LQR_K1k(:,1);
LQR_K2k(:,2);
LQR_K3k(:,3);
LQR_K4k(:,4);
%%%%车辆初始位置
host_x_init0;
host_y_init0;这些其实都是自动驾驶的控制算法所需要的参数运行一下脚本。运行完毕后工作区就有这些变量了无论是油门、刹车和标定表还是纵向的 PID 参数以及横向的 LQR 参数都已经标好了直接用就可以当然如果觉得标定不满意也可自己标就是用脚本修改相关参数运行一遍即可。
(4) 匹配输入输出接口 脚本运行完后把 GitHub 上的 Simulink 模型打开把算法整个算法粘贴过来把输入输出接口匹配上 这样整个仿真平台搭建完毕。 二、各模块算法概述 下面简要介绍一下算法。
2.1 定位模块 首先是定位模块。 定位模块也非常简单就是直接把 Prescan 自身传感器的数据输出来。因为不做定位算法所以定位算法直接用 Prescan 自带的定位传感器即可。但因为本篇博客做的是通用仿真平台所以如果各位对定位算法有兴趣的话可以直接在定位模块里写相关算法在这里就不写定位模块了因为本系列讲的是决策规划不讲定位。
2.2 决策规划模块 再看决策规划模块。 决策规划模块是本系列的重点但现在这里还没东西目前规划算法是在自动驾驶控制算法 12 节里所写的规划。此处写的规划其实没什么用大家也不用看规划纯粹是为了验证控制算法测试轨迹跟踪性能。以后此模块就是工作重点会在模块里写相关算法把 EM Planner 算法完成。 所以规划的 MATLAB Function 在测试完后把删掉即可。
2.3 控制模块 最后来看控制模块已经已经写完了输入是定位规划以及预瞄输出就是方向、前轮转角、油门、刹车以及相关的 debug 调试信息。 首先是主函数 control main 主函数里分横向控制 LQR 以及纵向控制双 PID还有因为转向不足所加入的积分补偿部分。 补偿没有开目前是关着的。 以及从前端转角转化为方向盘转角相关的部分。 标定表为右前轮转向系统与齿条位移之间的映射关系在 emplanner_init.m 文件中定义。齿条位移又和 c_factor 作用变成方向盘转角的映射关系。但这里 LQR_final_angle是 LQR 自己算出来的 angle是左前轮和右前轮合并出来的自行车模型的 angle。但汽车毕竟不是自行车所以自行车模型的 angle 要转化成左右前轮转角所以自行车模型的转角并不等于右前轮的转角。这里还要使用阿克曼几何转化成右前轮转角。 刹车标定表已经弄好了横向控制是离线 LQR 查表法。 离线 LQR 的标定表、油门刹车标定表以及相关的 PID 的控制参数都在 emplanner_init.m 脚本文件里。所以运行模型前要先运行 emplanner_init.m 把这些参数都写到工作区里这样 Simulink 就能读这些数据。 三、仿真结果与分析
3.1 模型算法运行与调试 下面运行模型算法规划时间为 30 30 30 秒所以仿真也设置为 30 30 30 秒。运行一下看看。 报错信息如下 Invalid setting in ‘testemplanner_cs/Audi_A8_Sedan_1/Dynamics_UserSpecified/CarSim S-Function2’ for parameter ‘vs_state’. Caused by: Error evaluating parameter ‘vs_state’ in ‘testemplanner_cs/Audi_A8_Sedan_1/Dynamics_UserSpecified/CarSim S-Function2’ 函数或变量 ‘vs_state’ 无法识别。 Variable ‘vs_state’ has been deleted from base workspace. 在命令行中加上 vs_state -1 和 StopMode-1 可看到车辆运行。 3.2 摄像头视角设置与可视化 在 Prescan 里面设置跟随车的摄像头点击倒数第二个Visu Aids 添加选择 Custom添加视角设置摄像机的视角位置。 先 Build 再 Regenerate 运行在弹出的 VisServer 中将视角切换为HumanView_1 。 3.3 轨迹跟踪效果分析 怎么判断控制跟踪轨迹的好坏呢 写个脚本 testctrl.m
plot(control_debug.LQR_debug.host_x.data,control_debug.LQR_debug.host_y.data,control_debug.xr_desire.data,control_debug.yr_desire.data);首先运行一下模型 Simulink 模型运行完后有 Control debug 变量testctrl.m 就会读取 Control debug 相关信息把跟踪轨迹和车辆实际的轨迹画出来。 蓝色线是规划轨迹黄色线是跟踪轨迹。如果最终 testctrl.m 运行的结果和上图差不多就证明已经成功了控制可以完美跟踪规划轨迹这样仿真平台就已经搭建成功了。 如果没有跑出来这样的效果相差比较大那就要检查检查了检查一下车辆初始位置是不是在 ( 0 , 0 ) (0,0) (0,0) 点因为规划比较傻只能在 ( 0 , 0 ) (0,0) (0,0) 点上规划才有用。车辆如果放在其他位置规划就跟踪不了了。因为这只是测试实际上的规划肯定不会像现在这样如果车辆在 ( 0 , 0 ) (0,0) (0,0) 点位置上跟踪的还是不理想那就可能就是软件的版本问题。 或者再从头看一遍本篇博客保证做的步骤和的本篇博客步骤一模一样再看一看是不是漏了什么步骤。 如果是软件版本问题换成推荐的软件版本因为软件版本的问题没法解决。 最后看一下testctrl.m 脚本写了什么其实就是画了两个图host_x 和 host_y 是定位给出的车辆实际轨迹xr_desire yr_desire 是规划轨迹。其实就画了两个图如果这两条线贴得比较近就像像刚才图一样那就证明这可以完美的跟踪就认为控制算法没问题。
3.4 速度与加速度跟踪 当然除了位置跟踪还有速度跟踪和加速度跟踪也可以把速度曲线、加速度速曲线都画出来看一下贴的近不近。如果觉得自己不满意的话也可以调控制参数调成满意的结果。 四、总结 希望大家都要自己亲手做一遍把仿真环境搭好以后所有的规划算法都会在此模型上去运行。 没有仿真平台的话后续的内容就没法学了。所以一定要亲手把仿真环境弄好把参数调好调成两条曲线贴近的样子才可以。 本篇博客到此结束欢迎关注后续内容。 参考资料 自动驾驶决策规划算法第二章第一节 决策规划仿真平台搭建 后记 感谢您耐心阅读这篇关于 决策规划仿真平台搭建 | Matlab Prescan Carsim 联合仿真基本操作 的技术博客。 如果您觉得这篇博客对您有所帮助请不要吝啬您的点赞和评论 您的支持是我继续创作的动力。同时别忘了收藏本篇博客以便日后随时查阅。 让我们一起期待更多的技术分享共同探索移动机器人的无限可能 感谢您的支持与关注让我们一起在知识的海洋中砥砺前行
文章转载自: http://www.morning.yzxhk.cn.gov.cn.yzxhk.cn http://www.morning.mtzyr.cn.gov.cn.mtzyr.cn http://www.morning.banzou2034.cn.gov.cn.banzou2034.cn http://www.morning.wrbf.cn.gov.cn.wrbf.cn http://www.morning.crsnb.cn.gov.cn.crsnb.cn http://www.morning.qqpg.cn.gov.cn.qqpg.cn http://www.morning.ljtwp.cn.gov.cn.ljtwp.cn http://www.morning.jcypk.cn.gov.cn.jcypk.cn http://www.morning.pudejun.com.gov.cn.pudejun.com http://www.morning.diuchai.com.gov.cn.diuchai.com http://www.morning.bmtkp.cn.gov.cn.bmtkp.cn http://www.morning.dbphz.cn.gov.cn.dbphz.cn http://www.morning.shawls.com.cn.gov.cn.shawls.com.cn http://www.morning.xkppj.cn.gov.cn.xkppj.cn http://www.morning.fnbtn.cn.gov.cn.fnbtn.cn http://www.morning.qbkw.cn.gov.cn.qbkw.cn http://www.morning.xswrb.cn.gov.cn.xswrb.cn http://www.morning.rdpps.cn.gov.cn.rdpps.cn http://www.morning.lxlfr.cn.gov.cn.lxlfr.cn http://www.morning.hwhnx.cn.gov.cn.hwhnx.cn http://www.morning.hlxxl.cn.gov.cn.hlxxl.cn http://www.morning.mtdfn.cn.gov.cn.mtdfn.cn http://www.morning.mumgou.com.gov.cn.mumgou.com http://www.morning.zrmxp.cn.gov.cn.zrmxp.cn http://www.morning.hrqfl.cn.gov.cn.hrqfl.cn http://www.morning.nkyc.cn.gov.cn.nkyc.cn http://www.morning.hxxwq.cn.gov.cn.hxxwq.cn http://www.morning.qttg.cn.gov.cn.qttg.cn http://www.morning.plwfx.cn.gov.cn.plwfx.cn http://www.morning.bflws.cn.gov.cn.bflws.cn http://www.morning.jkmjm.cn.gov.cn.jkmjm.cn http://www.morning.xkzr.cn.gov.cn.xkzr.cn http://www.morning.zckhn.cn.gov.cn.zckhn.cn http://www.morning.lbcbq.cn.gov.cn.lbcbq.cn http://www.morning.rwrn.cn.gov.cn.rwrn.cn http://www.morning.tpyrn.cn.gov.cn.tpyrn.cn http://www.morning.tgfsr.cn.gov.cn.tgfsr.cn http://www.morning.sphft.cn.gov.cn.sphft.cn http://www.morning.jkftn.cn.gov.cn.jkftn.cn http://www.morning.rhqr.cn.gov.cn.rhqr.cn http://www.morning.kfclh.cn.gov.cn.kfclh.cn http://www.morning.sknbb.cn.gov.cn.sknbb.cn http://www.morning.rynqh.cn.gov.cn.rynqh.cn http://www.morning.redhoma.com.gov.cn.redhoma.com http://www.morning.lgpzq.cn.gov.cn.lgpzq.cn http://www.morning.hnrqn.cn.gov.cn.hnrqn.cn http://www.morning.zlhzd.cn.gov.cn.zlhzd.cn http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn http://www.morning.jbnss.cn.gov.cn.jbnss.cn http://www.morning.fqmcc.cn.gov.cn.fqmcc.cn http://www.morning.xlxmy.cn.gov.cn.xlxmy.cn http://www.morning.kyflr.cn.gov.cn.kyflr.cn http://www.morning.wcgcm.cn.gov.cn.wcgcm.cn http://www.morning.ymmjx.cn.gov.cn.ymmjx.cn http://www.morning.syqtt.cn.gov.cn.syqtt.cn http://www.morning.htqrh.cn.gov.cn.htqrh.cn http://www.morning.rjjys.cn.gov.cn.rjjys.cn http://www.morning.pwppk.cn.gov.cn.pwppk.cn http://www.morning.pljdy.cn.gov.cn.pljdy.cn http://www.morning.yfcbf.cn.gov.cn.yfcbf.cn http://www.morning.hous-e.com.gov.cn.hous-e.com http://www.morning.qkgwx.cn.gov.cn.qkgwx.cn http://www.morning.xmnlc.cn.gov.cn.xmnlc.cn http://www.morning.kbdjn.cn.gov.cn.kbdjn.cn http://www.morning.brkc.cn.gov.cn.brkc.cn http://www.morning.mkrqh.cn.gov.cn.mkrqh.cn http://www.morning.rwpjq.cn.gov.cn.rwpjq.cn http://www.morning.ssglh.cn.gov.cn.ssglh.cn http://www.morning.juju8.cn.gov.cn.juju8.cn http://www.morning.xmxbm.cn.gov.cn.xmxbm.cn http://www.morning.jrpmf.cn.gov.cn.jrpmf.cn http://www.morning.sgmgz.cn.gov.cn.sgmgz.cn http://www.morning.cftkz.cn.gov.cn.cftkz.cn http://www.morning.kztpn.cn.gov.cn.kztpn.cn http://www.morning.cjnfb.cn.gov.cn.cjnfb.cn http://www.morning.kwz6232.cn.gov.cn.kwz6232.cn http://www.morning.bwygy.cn.gov.cn.bwygy.cn http://www.morning.mghgl.cn.gov.cn.mghgl.cn http://www.morning.kyhnl.cn.gov.cn.kyhnl.cn http://www.morning.hxxwq.cn.gov.cn.hxxwq.cn