跳转至

Dynamics 示例

注意

示例目录:[SimOne 安装目录]\SimOneAPI\Tutorial\Dynamics

算法构思

Dynamics 动力学示例通过调用 SimOneAPI 对主车执行标准动力学测试,包括全制动、加速至目标速度、正弦转向等场景,用于验证车辆动力学响应。

示例代码

以下为 main.cpp 完整示例,展示了 API 初始化及三种动力学测试的调用方式:

#include "SimOneServiceAPI.h"
#include "SimOnePNCAPI.h"
#include "SimOneSensorAPI.h"
#include "TestSample.hpp"
#include <string.h>

using namespace std;

int main(int argc, char* argv[])
{
    // Step1: 初始化 SimOne API,连接至本地仿真服务
    if (SimOneAPI::InitSimOneAPI("0", false, "127.0.0.1"))
    {
        cout << "InitSimOneAPI Done" << endl;
    }

    // Step2: 设置驾驶员名称(用于区分多车场景中的控制来源)
    SimOneAPI::SetDriverName("0", "DynaTest");

    // 可选:通过命令行参数指定输出 CSV 路径
    std::string csvPath = "";
    for (int i = 1; i < argc; ++i) {
        if (strcmp(argv[i], "-csvPath") == 0) {
            csvPath = argv[i + 1];
            ++i;
        }
        else {
            csvPath = "resultsALL.csv";
        }
    }

    TestSample test;

    // Step3: 执行动力学测试(三选一,取消注释以启用)

    /* 测试1:全制动——以 1.0 的制动强度紧急制动 */
    test.FullBrakeTest("0", 1.0f, csvPath);

    /* 测试2:加速至目标速度(100 km/h,加速强度 1.0) */
    // test.DriveToSpeed(0, 100.f, 1.0f, csvPath);

    /* 测试3:正弦转向动力学测试(初速 60 km/h) */
    // test.SteerDynamicTest(0, 60.f, TestSample::SteerType::sineSteer, csvPath);

    return 0;
}

编译环境

CMakeLists.txt 支持生成 Windows / Ubuntu 的项目工程。

编译:

  • Windows:

  • 进入 Build 目录,运行 gen_vs_proj_debug.batgen_vs_proj_release.bat 生成 Visual Studio 工程

  • 打开 Visual Studio 示例工程,选择 DynamicsTest 工程编译

  • Linux:

  • cd Build

  • ./gen_make_debug.sh(或 ./gen_make_release.sh

  • cd build_debug(或 cd build_release

  • make -j4

使用流程

  1. 启动 SimOne,新建测试用例

  2. 新建测试主车(配置控制系统为 手动 / API 控制)

  3. 运行用例(选择主车为该主车)

  4. 编译测试代码,bin 目录下生成可执行文件

  5. 运行示例程序,查看运行结果