Apollo控制算法中的汽车动力学模型推导

需积分: 5 6 下载量 178 浏览量 更新于2024-08-05 收藏 1.16MB PDF 举报
开发者说 Apollo 控制算法之汽车动力学模型 汽车动力学模型是研究车辆运动的力和运动关系的学科,主要应用于分析车辆的平顺性和车辆操纵的稳定性。车辆动力学模型可以分为三个方向:纵向、横向和立轴方向。纵向方向的力包括驱动力、制动力、滚动阻力和拖拽阻力,影响车辆的加速和减速。横向方向的力包括转向力、离心力和侧风力,影响车辆的转向和稳定性。立轴方向的力包括车辆上下振荡施加的力,影响车辆的上下运动。 在 Apollo 控制算法中,车辆动力学模型是基础模型之一。该模型可以分为两部分:一是车辆的力学模型,二是车辆的运动学模型。力学模型研究车辆受到的各种力,包括驱动力、制动力、滚动阻力、拖拽阻力、转向力、离心力和侧风力等。运动学模型研究车辆的运动状态,包括车辆的速度、加速度、位移和航向角等。 本文中,作者卜大鹏详细推导了 Apollo 控制算法中使用的车辆动力学模型。该模型基于牛顿第二定律,结合车辆前后轮受力和受力点到车辆重心距离,推导出车辆动力学模型的表达式。该模型包括车辆的质量、转动惯量、前轴到重心距离和后轴到重心距离等参数。通过求解该模型,可以得到车辆的横向加速度、前轮横向受力和后轮横向受力等参数。 在车辆动力学模型中,横向加速度可以分解为由横向位移产生的加速度和向心加速度。前轮横向受力和后轮横向受力可以近似为公式4和公式5,分别表示为: 前轮横向受力:Fyf = Caf \* delta 后轮横向受力:Fyr = Car \* theta_vr 其中,Caf 和 Car 分别为前轮和后轮的侧偏刚度,delta 和 theta_vr 分别为前轮和后轮的侧偏角。 在小角度转向假设下,横向速度可以近似为纵向速度的函数。通过简化环境因素下的侧偏刚度,可以得到车辆动力学模型的表达式: e1 = 横向偏差 e2 = 航向角偏差 通过将变化后的各变量表达式代入公式1和公式2,可以得到两个偏差的表达式: 转换为状态空间的表达式: 这样就得到了在小角度侧偏角、匀速和不考虑环境因素假设下的车辆动力学模型表达式。 本文详细介绍了 Apollo 控制算法中使用的车辆动力学模型的推导过程和表达式,包括车辆的力学模型和运动学模型,为自动驾驶技术的研究和应用提供了重要的理论基础。

root@in_dev_docker:/apollo# bash scripts/msf_create_lossless_map.sh /apollo/hdmap/pcd_apollo/ 50 /apollo/hdmap/ /apollo/bazel-bin WARNING: Logging before InitGoogleLogging() is written to STDERR E0715 22:08:35.399576 6436 lossless_map_creator.cc:162] num_trials = 1 Pcd folders are as follows: /apollo/hdmap/pcd_apollo/ Resolution: 0.125 Dataset: /apollo/hdmap/pcd_apollo Dataset: /apollo/hdmap/pcd_apollo/ Loaded the map configuration from: /apollo/hdmap//lossless_map/config.xml. Saved the map configuration to: /apollo/hdmap//lossless_map/config.xml. Saved the map configuration to: /apollo/hdmap//lossless_map/config.xml. E0715 22:08:35.767315 6436 lossless_map_creator.cc:264] ieout_poses = 1706 Failed to find match for field 'intensity'. Failed to find match for field 'timestamp'. E0715 22:08:35.769896 6436 velodyne_utility.cc:46] Un-organized-point-cloud E0715 22:08:35.781770 6436 lossless_map_creator.cc:275] Loaded 245443D Points at Trial: 0 Frame: 0. F0715 22:08:35.781791 6436 base_map_node_index.cc:101] Check failed: false *** Check failure stack trace: *** scripts/msf_create_lossless_map.sh: line 11: 6436 Aborted (core dumped) $APOLLO_BIN_PREFIX/modules/localization/msf/local_tool/map_creation/lossless_map_creator --use_plane_inliers_only true --pcd_folders $1 --pose_files $2 --map_folder $IN_FOLDER --zone_id $ZONE_ID --coordinate_type UTM --map_resolution_type single root@in_dev_docker:/apollo# bash scripts/msf_create_lossless_map.sh /apollo/hdmap/pcd_apollo/ 50 /apollo/hdmap/

2023-07-16 上传

def main(args, rest_args): cfg = Config(path=args.cfg) model = cfg.model model.eval() if args.quant_config: quant_config = get_qat_config(args.quant_config) cfg.model.build_slim_model(quant_config['quant_config']) if args.model is not None: load_pretrained_model(model, args.model) arg_dict = {} if not hasattr(model.export, 'arg_dict') else model.export.arg_dict args = parse_model_args(arg_dict) kwargs = {key[2:]: getattr(args, key[2:]) for key in arg_dict} model.export(args.save_dir, name=args.save_name, **kwargs) if args.export_for_apollo: if not isinstance(model, BaseDetectionModel): logger.error('Model {} does not support Apollo yet!'.format( model.class.name)) else: generate_apollo_deploy_file(cfg, args.save_dir) if name == 'main': args, rest_args = parse_normal_args() main(args, rest_args)这段代码中哪几句代码是def main(args, rest_args): cfg = Config(path=args.cfg) model = cfg.model model.eval() if args.quant_config: quant_config = get_qat_config(args.quant_config) cfg.model.build_slim_model(quant_config['quant_config']) if args.model is not None: load_pretrained_model(model, args.model) arg_dict = {} if not hasattr(model.export, 'arg_dict') else model.export.arg_dict args = parse_model_args(arg_dict) kwargs = {key[2:]: getattr(args, key[2:]) for key in arg_dict} model.export(args.save_dir, name=args.save_name, **kwargs) if args.export_for_apollo: if not isinstance(model, BaseDetectionModel): logger.error('Model {} does not support Apollo yet!'.format( model.class.name)) else: generate_apollo_deploy_file(cfg, args.save_dir) if name == 'main': args, rest_args = parse_normal_args() main(args, rest_args)这段代码中哪几句代码是def main(args, rest_args): cfg = Config(path=args.cfg) model = cfg.model model.eval() if args.quant_config: quant_config = get_qat_config(args.quant_config) cfg.model.build_slim_model(quant_config['quant_config']) if args.model is not None: load_pretrained_model(model, args.model) arg_dict = {} if not hasattr(model.export, 'arg_dict') else model.export.arg_dict args = parse_model_args(arg_dict) kwargs = {key[2:]: getattr(args, key[2:]) for key in arg_dict} model.export(args.save_dir, name=args.save_name, **kwargs) if args.export_for_apollo: if not isinstance(model, BaseDetectionModel): logger.error('Model {} does not support Apollo yet!'.format( model.class.name)) else: generate_apollo_deploy_file(cfg, args.save_dir) if name == 'main': args, rest_args = parse_normal_args() main(args, rest_args)这段代码中哪几句是将训练时保存的动态图模型文件导出成推理引擎能够加载的静态图模型文件

2023-05-28 上传