当前位置: 首页 > news >正文

凡科网做网站能达到什么效果深圳龙岗做网站的公司哪家好

凡科网做网站能达到什么效果,深圳龙岗做网站的公司哪家好,y2学年做的租房网站,wordpress系列文章实现文章目录 launch启动一个节点的launch示例launch文件中添加节点的namespacelaunch文件中的话题名称映射launch文件中向节点内传入命令行参数launch文件中向节点内传入rosparam使用方法多节点启动命令行参数配置资源重映射ROS参数设置加载参数文件在launch文件中使用条件变量act… 文章目录 launch启动一个节点的launch示例launch文件中添加节点的namespacelaunch文件中的话题名称映射launch文件中向节点内传入命令行参数launch文件中向节点内传入rosparam使用方法多节点启动命令行参数配置资源重映射ROS参数设置加载参数文件在launch文件中使用条件变量action的分组action的启动延时控制Launch文件包含在launch文件中调用另一个launch文件在launch文件中运行脚本在launch文件中设置环境变量或读取环境变量launch 用法以及一些基础功能函数的示例参数文件编译配置 launch ##前言 ros2 launch文件中最主要的概念是actionros2 launch把每一个要执行的节点文件脚本功能等全部抽象成action用统一的接口来控制其启动最主要的结构是 def generate_launch_description():return LaunchDescription([action_1,action_2,...action_n]) 要启动的节点或其他launch文件全部都传入LaunchDescription()函数中该函数中接受一个或多launch.actions或launch_ros.actions类型的对象以下列举一下常用的action launch_ros.actions.Node· 此函数功能是启动一个ros2节点 launch_ros.actions.PushRosNamespace· 此函数功能是给一个节点或组设置命名空间 launch.actions.IncludeLaunchDescription· 此函数功能是直接引用另一个launch文件 launch.actions.SetLaunchConfiguration· 此函数功能是在launch文件内声明一个参数并给定参数值 launch.actions.SetEnvironmentVariable· 此函数功能是声明一个环境变量并给定环境变量的值 launch.actions.AppendEnvironmentVariable· 此函数将对一个环境变量追加一个值如果不存在则创建 launch.actions.DeclareLaunchArgument· 此函数功能是声明一个启动描述参数该参数具有名称、默认值和文档 launch.actions.TimerAction· 此函数功能是在一段时间后执行一个或多个action launch.actions.GroupAction· 此函数功能是将action分组同组内的action可以统一设定参数方便集中管理 launch.actions.ExecuteProcess· 此函数功能是根据输入执行一个进程或脚本 launch.actions.EmitEvent· 此函数功能是发出一个事件触发以注册的事件函数被调用 launch.actions.RegisterEventHandler· 此函数功能是注册一个事件 launch.actions.UnregisterEventHandler· 此函数功能是删除一个注册过的事件 启动一个节点的launch示例 from launch import LaunchDescription from launch_ros.actions import Nodedef generate_launch_description():return LaunchDescription([Node(packageros2_test,executableros2_test_publisher_node,nameros2_test_publisher_node,outputscreen)]) 或者 from launch import LaunchDescription from launch_ros.actions import Nodedef generate_launch_description():action_1 Node(packageros2_test,executableros2_test_publisher_node,nameros2_test_publisher_node,outputscreen)return LaunchDescription([action_1]) launch文件名为test.launch.py调用launch文件启动节点 ros2 launch ros2_test test.launch.py launch文件中添加节点的namespace from launch import LaunchDescription from launch_ros.actions import Nodedef generate_launch_description():return LaunchDescription([Node(packageros2_test,executableros2_test_publisher_node,nameros2_test_publisher_node,outputscreen,namespacemy_ros2_test)]) 设置了namespace后此节点的话题前会加上namespace的前缀例如原来的话题名称’/test’设置后变为’/my_ros2_test/test’ 注意有以下情况namespace无效 节点本来就已经有了namespace了后续会介绍将节点分组整组节点可以设置统一的namespace此时如果有个节点已经设置过namespace则在此设置不会生效 定义发布节点的时候topic名字的前面加上了符号/ launch文件中的话题名称映射 话题映射的字段是remappings语法示例如下 remappings[(src1, dest1),(src2, dest2),... ] 如果需要话题名称映射的话要将该字段加入到节点的函数内假如节点内有个test1话题要映射到test2示例如下 from launch import LaunchDescription from launch_ros.actions import Nodedef generate_launch_description():return LaunchDescription([Node(packageros2_test,executableros2_test_publisher_node,nameros2_test_publisher_node,outputscreen,remappings[(test1, test2)])]) launch文件中向节点内传入命令行参数 参数字段是arguments语法示例如下 arguments[arg1, arg2, ...]如果需要向ros2_test_publisher_node节点中传入命令行参数示例如下 from launch import LaunchDescription from launch_ros.actions import Nodedef generate_launch_description():return LaunchDescription([Node(packageros2_test,executableros2_test_publisher_node,nameros2_test_publisher_node,outputscreen,arguments[arg1, arg2])])传入的参数可以从节点启动时main函数中的argc参数获取到参数个数argv参数获取到参数内容详情参考c的命令行参数获取 launch文件中向节点内传入rosparam 字段是parameter语法示例如下 parameters[{port: /dev/ttyUsb0},... ] 如果需要在launch文件中发布某个节点空间下的parameter示例如下 from launch import LaunchDescription from launch_ros.actions import Nodedef generate_launch_description():return LaunchDescription([Node(packageros2_test,executableros2_test_publisher_node,nameros2_test_publisher_node,outputscreen,parameter[{port: /dev/ttyUSB0}])]) 如果需要参数的值可以从外部调用launch文件时灵活更改则可以使用变量的形式作为参数的值在文件中给定默认值若外部给定则以外部给定的值为准若外部不给则以默认值为准 port_var LaunchConfiguration(port, default/dev/ttyS1) 同时还可以使用DeclareLaunchArgument函数增加对参数的描述增加描述后可以通过ros2 launch的命令行工具展示出每个launch文件中有哪些rosparam以及他的默认值和具体含义 DeclareLaunchArgument(port,default_valueport_var,descriptionThis is the port address value ) 如果文件中加入了参数介绍则可以通过以下指令看到launch文件中有哪些可以自定义的参数以及参数含义 ros2 launch ros2_test test.launch.py --show-args 所以如果launch文件中存在可配置参数应该在LaunchDescription中添加DeclareLaunchArgument让其他使用者明白变量名以及他的含义是什么 完整的launch文件如下 from launch import LaunchDescription from launch_ros.actions import Node from launch.substitutions import LaunchConfigurationdef generate_launch_description():port_var LaunchConfiguration(port, default/dev/ttyS1)return LaunchDescription([DeclareLaunchArgument(port,default_valueport_var,descriptionThis is the port address value),Node(packageros2_test,executableros2_test_publisher_node,nameros2_test_publisher_node,outputscreen,parameter[{port: port_var}])]) 此时我们可以把参数通过调用launch的时候传入到节点中 ros2 launch ros2_test test.launch.py port_var:/dev/ttyUSB2 在ros2_test_publisher_node节点中如果要想获取该参数需要先声明parameter然后再进行get this-declare_parameterstd::string(port); string port_str; this-get_parameter_orstd::string(port, port_str, null); if (port_str ! null) RCLCPP_INFO(this-get_logger(), get ros2param port value : %s, port_str.c_str()); 使用方法 官方推荐用python编写launch,如果launch文件不在功能包中随便建立以.launch.py结尾的文件后在当前目录直接运行即可如果在功能包中可采用下面方式运行。如下代码。 ros2 launch turtlesim_mimic_launch.py # 在文件中直接启动launch ros2 launch package_name launch_file_name # 在功能包中启动launch文件内容实例如下 from launch import LaunchDescription # launch文件的描述类 from launch_ros.actions import Node # 节点启动的描述类def generate_launch_description(): # 自动生成launch文件的函数return LaunchDescription([ # 返回launch文件的描述信息Node( # 配置一个节点的启动packagelearning_topic, # 节点所在的功能包executabletopic_helloworld_pub, # 节点的可执行文件),Node( # 配置一个节点的启动packagelearning_topic, # 节点所在的功能包executabletopic_helloworld_sub, # 节点的可执行文件名),]) 多节点启动 from launch import LaunchDescription # launch文件的描述类 from launch_ros.actions import Node # 节点启动的描述类def generate_launch_description(): # 自动生成launch文件的函数return LaunchDescription([ # 返回launch文件的描述信息Node( # 配置一个节点的启动packagelearning_topic, # 节点所在的功能包executabletopic_helloworld_pub, # 节点的可执行文件),Node( # 配置一个节点的启动packagelearning_topic, # 节点所在的功能包executabletopic_helloworld_sub, # 节点的可执行文件名),]) 命令行参数配置 import osfrom ament_index_python.packages import get_package_share_directory # 查询功能包路径的方法from launch import LaunchDescription # launch文件的描述类 from launch_ros.actions import Node # 节点启动的描述类def generate_launch_description(): # 自动生成launch文件的函数rviz_config os.path.join( # 找到配置文件的完整路径get_package_share_directory(learning_launch),rviz,turtle_rviz.rviz)return LaunchDescription([ # 返回launch文件的描述信息Node( # 配置一个节点的启动packagerviz2, # 节点所在的功能包executablerviz2, # 节点的可执行文件名namerviz2, # 对节点重新命名arguments[-d, rviz_config] # 加载命令行参数)]) 资源重映射 from launch import LaunchDescription # launch文件的描述类 from launch_ros.actions import Node # 节点启动的描述类def generate_launch_description(): # 自动生成launch文件的函数return LaunchDescription([ # 返回launch文件的描述信息Node( # 配置一个节点的启动packageturtlesim, # 节点所在的功能包namespaceturtlesim1, # 节点所在的命名空间executableturtlesim_node, # 节点的可执行文件名namesim # 对节点重新命名),Node( # 配置一个节点的启动packageturtlesim, # 节点所在的功能包namespaceturtlesim2, # 节点所在的命名空间executableturtlesim_node, # 节点的可执行文件名namesim # 对节点重新命名),Node( # 配置一个节点的启动packageturtlesim, # 节点所在的功能包executablemimic, # 节点的可执行文件名namemimic, # 对节点重新命名remappings[ # 资源重映射列表(/input/pose, /turtlesim1/turtle1/pose), # 将/input/pose话题名修改为/turtlesim1/turtle1/pose(/output/cmd_vel, /turtlesim2/turtle1/cmd_vel), # 将/output/cmd_vel话题名修改为/turtlesim2/turtle1/cmd_vel])]) ROS参数设置 from launch import LaunchDescription # launch文件的描述类 from launch.actions import DeclareLaunchArgument # 声明launch文件内使用的Argument类 from launch.substitutions import LaunchConfiguration, TextSubstitutionfrom launch_ros.actions import Node # 节点启动的描述类def generate_launch_description(): # 自动生成launch文件的函数background_r_launch_arg DeclareLaunchArgument(background_r, default_valueTextSubstitution(text0) # 创建一个Launch文件内参数argbackground_r)background_g_launch_arg DeclareLaunchArgument(background_g, default_valueTextSubstitution(text84) # 创建一个Launch文件内参数argbackground_g)background_b_launch_arg DeclareLaunchArgument(background_b, default_valueTextSubstitution(text122) # 创建一个Launch文件内参数argbackground_b)return LaunchDescription([ # 返回launch文件的描述信息background_r_launch_arg, # 调用以上创建的参数argbackground_g_launch_arg,background_b_launch_arg,Node( # 配置一个节点的启动packageturtlesim,executableturtlesim_node, # 节点所在的功能包namesim, # 对节点重新命名parameters[{ # ROS参数列表background_r: LaunchConfiguration(background_r), # 创建参数background_rbackground_g: LaunchConfiguration(background_g), # 创建参数background_gbackground_b: LaunchConfiguration(background_b), # 创建参数background_b}]),]) 加载参数文件 import osfrom ament_index_python.packages import get_package_share_directory # 查询功能包路径的方法from launch import LaunchDescription # launch文件的描述类 from launch_ros.actions import Node # 节点启动的描述类def generate_launch_description(): # 自动生成launch文件的函数config os.path.join( # 找到参数文件的完整路径get_package_share_directory(learning_launch),config,turtlesim.yaml)return LaunchDescription([ # 返回launch文件的描述信息Node( # 配置一个节点的启动packageturtlesim, # 节点所在的功能包executableturtlesim_node, # 节点的可执行文件名namespaceturtlesim2, # 节点所在的命名空间namesim, # 对节点重新命名parameters[config] # 加载参数文件)]) 在launch文件中使用条件变量 字段是condition语法示例如下 conditionIfCondition(variable) IfCondition(variable)函数内只接受true, false, 0, 1参数如果节点启动的描述中加入该字段并且参数值为false或0则节点不启动 完整的launch文件如下 from launch import LaunchDescription from launch_ros.actions import Node from launch.substitutions import LaunchConfiguration from launch.conditions import IfConditiondef generate_launch_description():variable LaunchConfiguration(start_flag, defaulttrue)return LaunchDescription([DeclareLaunchArgument(start_flag,default_valuevariable,descriptionThis is the ros2_test_publisher_node start flag),Node(packageros2_test,executableros2_test_publisher_node,nameros2_test_publisher_node,outputscreen,conditionIfCondition(variable))]) 此时 运行ros2 launch ros2_test test.launch.py 节点会正常启动 运行ros2 launch ros2_test test.launch.py start_flag:false 节点不会启动 进阶的IfCondition函数使用方式 由于LaunchConfiguration()函数的返回是一个对象所以我们不可以拿来直接做运算但是可以使用PythonExpression()做参数的表达式运算语法如下 PythonExpression([variable, 1]) 或 PythonExpression([variable, 1 2]) 或 PythonExpression([variable, test]) 等等 完整的launch文件如下 from launch import LaunchDescription from launch_ros.actions import Node from launch.substitutions import LaunchConfiguration from launch.conditions import IfConditiondef generate_launch_description():port_var LaunchConfiguration(port, default/dev/ttyS1)return LaunchDescription([DeclareLaunchArgument(port,default_valueport_var,descriptionThis is the port address value),Node(packageros2_test,executableros2_test_publisher_node,nameros2_test_publisher_node,outputscreen,conditionIfCondition(PythonExpression([port_var, /dev/ttyUSB0])))]) 此时 运行ros2 launch ros2_test test.launch.py 节点不会启动 运行ros2 launch ros2_test test.launch.py port_var:/dev/ttyUSB0 节点正常启动 action的分组 GroupAction()函数可以将一个或多个action加入到一个组中组内可以共用参数控制整组节点全部启动或全部不启动等方便action的管理需要接受的部分参数有 actions接受一个list, [action_1, action_2,…]列表中装要执行的actioncondition条件变量参数launch_configuration参数 PushRosNamespace()函数的作用是向test_group中设置组内的namespace但是action_1中已经设置过了namespace所以此时不会生效该namespace只会在action_2中生效 实例一 from launch import LaunchDescription from launch_ros.actions import Node from launch.actions import GroupAction from launch_ros.actions import PushRosNamespacedef generate_launch_description():action_1 Node(packageros2_test,executableros2_test_publisher_node,nameros2_test_publisher_node,outputscreen,namespacemy_ros2_test)action_2 Node(packageros2_test,executableros2_test_subscriber_node,nameros2_test_subscriber_node,outputscreen)test_group GroupAction(actions[PushRosNamespace(my_group_test),action_1, action_2])return LaunchDescription([test_group]) action的启动延时控制 TimerAction()函数可以在指定的时间后执行一个action需要接受参数有 period接受一个float, 延迟的时间actions接受一个list, [action_1, action_2,…]列表中装要执行的action 实例一 from launch import LaunchDescription from launch_ros.actions import Node from launch.actions import TimerActiondef generate_launch_description():action_1 Node(packageros2_test,executableros2_test_publisher_node,nameros2_test_publisher_node,outputscreen)return LaunchDescription([TimerAction(period5.0, actions[action_1])])Launch文件包含在launch文件中调用另一个launch文件 PythonLaunchDescriptionSource() 在launch文件中调用其他launch需要调用函数参数是被调用launch的路径。 实例一 import osfrom ament_index_python.packages import get_package_share_directory # 查询功能包路径的方法from launch import LaunchDescription # launch文件的描述类 from launch.actions import IncludeLaunchDescription # 节点启动的描述类 from launch.launch_description_sources import PythonLaunchDescriptionSource from launch.actions import GroupAction # launch文件中的执行动作 from launch_ros.actions import PushRosNamespace # ROS命名空间配置def generate_launch_description(): # 自动生成launch文件的函数parameter_yaml IncludeLaunchDescription( # 包含指定路径下的另外一个launch文件PythonLaunchDescriptionSource([os.path.join(get_package_share_directory(learning_launch), launch),/parameters_nonamespace.launch.py]))parameter_yaml_with_namespace GroupAction( # 对指定launch文件中启动的功能加上命名空间actions[PushRosNamespace(turtlesim2),parameter_yaml])return LaunchDescription([ # 返回launch文件的描述信息parameter_yaml_with_namespace]) 实例二 import os from ament_index_python import get_package_share_directory from launch import LaunchDescription from launch.launch_description_sources import PythonLaunchDescriptionSource from launch_ros.actions import Nodedef generate_launch_description():return LaunchDescription([Node(packageros2_test,executableros2_test_publisher_node,nameros2_test_publisher_node,outputscreen),PythonLaunchDescriptionSource(os.path.join(get_package_share_directory(ros2_test),launch/test_subscriber.launch.py))]) 实例三 from launch.launch_description_sources import PythonLaunchDescriptionSource from launch.substitutions import ThisLaunchFileDir from launch.conditions import IfCondition from launch.substitutions import LaunchConfiguration from launch.actions import IncludeLaunchDescriptiondef generate_launch_description():inlucde_other_file LaunchConfiguration(inlucde_other_file, defaulttrue)test_var LaunchConfiguration(test_var, defaulttest_var_2)return launch.LaunchDescription([IncludeLaunchDescription(PythonLaunchDescriptionSource([ThisLaunchFileDir(), /test_subscriber.launch.py]),conditionIfCondition(inlucde_other_file),launch_arguments{test_var: test_var}.items())]) 在launch文件中运行脚本 ExecuteProcess()运行脚本同样可实现启动某个节点同时该函数还支持condition、additional_env等参数的设置。 实例一 from launch import LaunchDescription from launch.actions import ExecuteProcessdef generate_launch_description():return LaunchDescription([ExecuteProcess(cmd[ros2, run, ros2_test, ros2_test_publisher_node],outputscreen)])在launch文件中设置环境变量或读取环境变量 SetEnvironmentVariable(var_name, var_value)函数用于设置环境变量接受两个参数分别是要设置的环境变量名称和环境变量的值 EnvironmentVariable(var_name)函数用于获取环境变量的值返回值类型是一个对象输入参数是要获取的环境变量名称 完整launch文件实例 from launch import LaunchDescription from launch.actions import SetEnvironmentVariable, ExecuteProcess from launch.substitutions import EnvironmentVariabledef generate_launch_description():return LaunchDescription([SetEnvironmentVariable(PRODUCT_MODEL, spray_robot),ExecuteProcess(cmd[echo, EnvironmentVariable(PRODUCT_MODEL)],outputscreen)]) 运行看到以下输出 [INFO] [echo-1]: process started with pid [195168] [echo-1] spray_robot [INFO] [echo-1]: process has finished cleanly [pid 195168]launch 用法以及一些基础功能函数的示例 ros2 launch文件中最主要的概念是actionros2 launch把每一个要执行的节点文件脚本功能等全部抽象成action用统一的接口来控制其启动最主要的结构是 def generate_launch_description():return LaunchDescription([action_1,action_2,...action_n]) 要启动的节点或其他launch文件全部都传入LaunchDescription()函数中该函数中接受一个或多launch.actions或launch_ros.actions类型的对象以下列举一下常用的action launch_ros.actions.Node· 此函数功能是启动一个ros2节点 launch_ros.actions.PushRosNamespace· 此函数功能是给一个节点或组设置命名空间 launch.actions.IncludeLaunchDescription· 此函数功能是直接引用另一个launch文件 launch.actions.SetLaunchConfiguration· 此函数功能是在launch文件内声明一个参数并给定参数值 launch.actions.SetEnvironmentVariable· 此函数功能是声明一个环境变量并给定环境变量的值 launch.actions.AppendEnvironmentVariable· 此函数将对一个环境变量追加一个值如果不存在则创建 launch.actions.DeclareLaunchArgument· 此函数功能是声明一个启动描述参数该参数具有名称、默认值和文档 launch.actions.TimerAction· 此函数功能是在一段时间后执行一个或多个action launch.actions.GroupAction· 此函数功能是将action分组同组内的action可以统一设定参数方便集中管理 launch.actions.ExecuteProcess· 此函数功能是根据输入执行一个进程或脚本 launch.actions.EmitEvent· 此函数功能是发出一个事件触发以注册的事件函数被调用 launch.actions.RegisterEventHandler· 此函数功能是注册一个事件 launch.actions.UnregisterEventHandler· 此函数功能是删除一个注册过的事件 参数文件编译配置 功能包里面的参数文件需要在setup.py里面做以下配置编译的时候才能拷贝到include里面去 from setuptools import setup import os from glob import globpackage_name learning_launchsetup(namepackage_name,version0.0.0,packages[package_name],data_files[(share/ament_index/resource_index/packages,[resource/ package_name]),(share/ package_name, [package.xml]),(os.path.join(share, package_name, launch), glob(os.path.join(launch, *.launch.py))),(os.path.join(share, package_name, config), glob(os.path.join(config, *.*))),(os.path.join(share, package_name, rviz), glob(os.path.join(rviz, *.*))),],install_requires[setuptools],zip_safeTrue,maintainerhcx,maintainer_emailhuchunxuguyuehome.com,descriptionTODO: Package description,licenseTODO: License declaration,tests_require[pytest],entry_points{console_scripts: [],}, )
文章转载自:
http://www.morning.ssqwr.cn.gov.cn.ssqwr.cn
http://www.morning.bgqqr.cn.gov.cn.bgqqr.cn
http://www.morning.fqyxb.cn.gov.cn.fqyxb.cn
http://www.morning.sffkm.cn.gov.cn.sffkm.cn
http://www.morning.tsqrc.cn.gov.cn.tsqrc.cn
http://www.morning.splcc.cn.gov.cn.splcc.cn
http://www.morning.mbfj.cn.gov.cn.mbfj.cn
http://www.morning.rwpjq.cn.gov.cn.rwpjq.cn
http://www.morning.xknmn.cn.gov.cn.xknmn.cn
http://www.morning.fpczq.cn.gov.cn.fpczq.cn
http://www.morning.hxwrs.cn.gov.cn.hxwrs.cn
http://www.morning.ptqds.cn.gov.cn.ptqds.cn
http://www.morning.wfpmt.cn.gov.cn.wfpmt.cn
http://www.morning.dqpd.cn.gov.cn.dqpd.cn
http://www.morning.flxqm.cn.gov.cn.flxqm.cn
http://www.morning.txfxy.cn.gov.cn.txfxy.cn
http://www.morning.pnjsl.cn.gov.cn.pnjsl.cn
http://www.morning.jbfjp.cn.gov.cn.jbfjp.cn
http://www.morning.gkktj.cn.gov.cn.gkktj.cn
http://www.morning.jgmdr.cn.gov.cn.jgmdr.cn
http://www.morning.bsrqy.cn.gov.cn.bsrqy.cn
http://www.morning.xhlht.cn.gov.cn.xhlht.cn
http://www.morning.gbtty.cn.gov.cn.gbtty.cn
http://www.morning.smdnl.cn.gov.cn.smdnl.cn
http://www.morning.jrksk.cn.gov.cn.jrksk.cn
http://www.morning.kfsfm.cn.gov.cn.kfsfm.cn
http://www.morning.yggdq.cn.gov.cn.yggdq.cn
http://www.morning.tnwgc.cn.gov.cn.tnwgc.cn
http://www.morning.svtxeu.com.gov.cn.svtxeu.com
http://www.morning.rfzbm.cn.gov.cn.rfzbm.cn
http://www.morning.fpkpz.cn.gov.cn.fpkpz.cn
http://www.morning.xnflx.cn.gov.cn.xnflx.cn
http://www.morning.frcxx.cn.gov.cn.frcxx.cn
http://www.morning.xirfr.cn.gov.cn.xirfr.cn
http://www.morning.mdgb.cn.gov.cn.mdgb.cn
http://www.morning.ydgzj.cn.gov.cn.ydgzj.cn
http://www.morning.nnpfz.cn.gov.cn.nnpfz.cn
http://www.morning.jpbky.cn.gov.cn.jpbky.cn
http://www.morning.ngcw.cn.gov.cn.ngcw.cn
http://www.morning.mplb.cn.gov.cn.mplb.cn
http://www.morning.ftntr.cn.gov.cn.ftntr.cn
http://www.morning.qtfss.cn.gov.cn.qtfss.cn
http://www.morning.kzhgy.cn.gov.cn.kzhgy.cn
http://www.morning.txmkx.cn.gov.cn.txmkx.cn
http://www.morning.mbfkt.cn.gov.cn.mbfkt.cn
http://www.morning.gmwdl.cn.gov.cn.gmwdl.cn
http://www.morning.hwycs.cn.gov.cn.hwycs.cn
http://www.morning.mpmtz.cn.gov.cn.mpmtz.cn
http://www.morning.gpcy.cn.gov.cn.gpcy.cn
http://www.morning.sbkb.cn.gov.cn.sbkb.cn
http://www.morning.xfjwm.cn.gov.cn.xfjwm.cn
http://www.morning.knscf.cn.gov.cn.knscf.cn
http://www.morning.srbmc.cn.gov.cn.srbmc.cn
http://www.morning.ltxgk.cn.gov.cn.ltxgk.cn
http://www.morning.mksny.cn.gov.cn.mksny.cn
http://www.morning.grbgn.cn.gov.cn.grbgn.cn
http://www.morning.bfbl.cn.gov.cn.bfbl.cn
http://www.morning.qdbcd.cn.gov.cn.qdbcd.cn
http://www.morning.dqrpz.cn.gov.cn.dqrpz.cn
http://www.morning.lmzpk.cn.gov.cn.lmzpk.cn
http://www.morning.rdnkx.cn.gov.cn.rdnkx.cn
http://www.morning.cfnht.cn.gov.cn.cfnht.cn
http://www.morning.gmjkn.cn.gov.cn.gmjkn.cn
http://www.morning.mprpx.cn.gov.cn.mprpx.cn
http://www.morning.ggnrt.cn.gov.cn.ggnrt.cn
http://www.morning.qymqh.cn.gov.cn.qymqh.cn
http://www.morning.ie-comm.com.gov.cn.ie-comm.com
http://www.morning.hytfz.cn.gov.cn.hytfz.cn
http://www.morning.rkjz.cn.gov.cn.rkjz.cn
http://www.morning.24vy.com.gov.cn.24vy.com
http://www.morning.zwpzy.cn.gov.cn.zwpzy.cn
http://www.morning.rlqml.cn.gov.cn.rlqml.cn
http://www.morning.jkwwm.cn.gov.cn.jkwwm.cn
http://www.morning.nysjb.cn.gov.cn.nysjb.cn
http://www.morning.jpzcq.cn.gov.cn.jpzcq.cn
http://www.morning.fygbq.cn.gov.cn.fygbq.cn
http://www.morning.jfjfk.cn.gov.cn.jfjfk.cn
http://www.morning.xywfz.cn.gov.cn.xywfz.cn
http://www.morning.hrhwn.cn.gov.cn.hrhwn.cn
http://www.morning.pjxlg.cn.gov.cn.pjxlg.cn
http://www.tj-hxxt.cn/news/261982.html

相关文章:

  • 手机网站与微信结合网站 工商备案
  • 自适应网站和响应式网站的区别视觉设计网站建设
  • 盐城网站开发建设网络销售每天做什么
  • 网站互动推广制作网站管理系统
  • 超大免费网站空间网站在线咨询代码
  • 去哪里购买网站空间公司注册新流程
  • 大连自助建站软件视频软件制作
  • 深圳市住房和建设网站app试玩网站制作
  • 建设网站的公司的官网百度推广外包哪家不错
  • 宁夏枸杞网站建设方案wordpress 显示代码
  • 济宁网站建设公司最新报价好的seo平台
  • 沧州市东光建设局 网站怎么卸载电脑上wordpress
  • 拓者设计吧网站企业官网 开源
  • seo关键词优化提高网站排名如何建设农业推广网站
  • 网站主页制作教程品牌策划流程
  • 外贸企业网站系统中国建筑招聘信息
  • 描述网站开发的过程电子版简历免费模板
  • 广东网站开发设计建立旅游公司网站多钱
  • 合肥建设管理学院网站山东最新新闻事件今天
  • 漂亮企业网站源码网页制作模板素材库
  • 网站推广的平台排名青岛北京网站建设公司哪家好
  • 哪个网站可以找题目给小孩做网络游戏开发平台
  • 高端网站建设公司零零帮做网站的网站
  • 电子商务网站建设与维护试题腾讯云服务器租用
  • 建设网站必备条件免费网站建设 百度一下
  • 网站建设初期的需求分析小程序开发定制外包
  • 网站代码大全网站做数据统计
  • 网站开发程序排名做网站如何突出网站特色
  • 网站改版seo广西建设人力资源网
  • 技术支持 东莞网站建设传送带镇江建工建设集团网站