自动驾驶仿真:python和carsim联合仿真案例

2024-06-20 1300阅读

文章目录

  • 前言
  • 一、Carsim官方案例
  • 二、Carsim配置
    • 1、车辆模型
    • 2、procedure配置
    • 3、Run Control配置
    • 三、python编写
    • 四、运行carsim
    • 五、运行python
    • 总结

      前言

      carsim内部有许多相关联合仿真的demo,simulink、labview等等都有涉及,这里简单介绍下python和carsim联合仿真的方法,虽然carsim官方有个Steer_Control.py相关的案例,但是感觉比较冗余,这里抽出重点部分和大家交流探讨下。


      提示:以下是本篇文章正文内容,下面案例可供参考

      一、Carsim官方案例

      在carsim项目文件夹路径下,例:C:\Program Files (x86)\CarSim2022.1_Data\Extensions\Custom_Py,里面有几个案例可以参考下。

      自动驾驶仿真:python和carsim联合仿真案例

      二、Carsim配置

      1、车辆模型

      1)这里的车辆模型随便选一个就行了

      自动驾驶仿真:python和carsim联合仿真案例

      自动驾驶仿真:python和carsim联合仿真案例

      2、procedure配置

      1)开环的节气门开度控制-油门

      2)开环的制动主缸压力控制-刹车

      3)开环的方向盘角度控制

      4)运行条件选择Run forver

      自动驾驶仿真:python和carsim联合仿真案例

      3、Run Control配置

      1)选择运行模型为:Self-Contained Solvers

      自动驾驶仿真:python和carsim联合仿真案例

      2)选择类型为C Wrapper,64-bit

      自动驾驶仿真:python和carsim联合仿真案例

      3)按照默认选择外部的解释器

      自动驾驶仿真:python和carsim联合仿真案例

      4)配置输入分别为:节气门开度,制动主缸压力,方向盘角度

      自动驾驶仿真:python和carsim联合仿真案例

      5)配置输出

      自动驾驶仿真:python和carsim联合仿真案例

      三、python编写

      1)第一步先找到vs_solver.py,用于调用simfile获取相关carsim dll的引用。vs_solver.py路径在C:\Program Files (x86)\CarSim2022.1_Data\Extensions\Custom_Py,我们在下面代码中会引用vs_solver.py。

      2)代码部分都很简单,一个是import vs_solver,另外一个比较重要的是simfile的路径需要填写,一般在你创建项目目录下如:C:\Program Files (x86)\CarSim2022.1_Data\simfile.sim,这个一定要根据你项目路径来填写。

      import os
      import keyboard
      import ctypes
      import vs_solver
      class carsim_simulation():
          def __init__(self):
              self.simfile_path = r'C:\Program Files (x86)\CarSim2022.1_Data\simfile.sim'
              self.vs = vs_solver.vs_solver()
              self.vs_dll_exist_flag = self.vs_dll_is_exist()
              self.configuration = self.vs.read_configuration(self.simfile_path)
          def vs_dll_is_exist(self):
              dll_path = self.vs.get_dll_path(self.simfile_path)
              if dll_path is not None and os.path.exists(dll_path):
                  vs_dll = ctypes.cdll.LoadLibrary(dll_path)
                  if self.vs.get_api(vs_dll):
                      exist_flag = True
                  else:
                      exist_flag = False
                      print(f'can not get dll api, please check the dll {dll_path}')
              else:
                  exist_flag = False
                  print(f'please check dll_path or simfile_path existence or not')
              return exist_flag
          def get_export_array(self):
              return self.vs.copy_export_vars(carsim_sim.configuration.get('n_export'))
          def get_time_step(self):
              return self.configuration.get('t_step')
          def stop(self, t_current):
              self.vs.terminate_run(t_current)
      if __name__ == '__main__':
          carsim_sim = carsim_simulation()
          t_current = carsim_sim.get_time_step()
          export_array = carsim_sim.get_export_array()
          status = 0
          while status == 0:
              #更新当前时间
              t_current = t_current + carsim_sim.get_time_step()
              import_array = [0.1, 0, 0]
      3        status, export_array = carsim_sim.vs.integrate_io(t_current, import_array, export_array)
              print(f'current_x: {export_array[0]}, current_y: {export_array[6]}')
              if keyboard.is_pressed('q'):
                  carsim_sim.stop(t_current)
                  break
      

      四、运行carsim

      1)运行carsim等待几秒会出现黑窗,然后关掉黑窗即可。

      自动驾驶仿真:python和carsim联合仿真案例

      五、运行python

      1)运行python脚本之后结果哗啦啦就出来了,就很简单。

      自动驾驶仿真:python和carsim联合仿真案例

      总结

      1、这里关于solvers的细节其实都没说,因为里面确实也没什么内容好讲的,本质就是调用carsim.dll,如果你需要更多的函数解析其实可以看vs_api.h,路径在C:\Program Files (x86)\CarSim2022.1_Data\Extensions\Custom_C\common,具体内容如下图所示。

      自动驾驶仿真:python和carsim联合仿真案例

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]