C++API控制Airsim-静态链接库的配置

一、通过C++API来控制Airsim中的无人机效果演示

                                                    控制台截图

                                                     UE4中的截图

二、包含正确的静态连接库

1、找到需要的链接库

参考Airsim官方网站:C++ APIs - AirSim

从上面官方网站指导的截图中可以看出来,我们需要的头文件有四个部分:

①include

②AirLib/include

③AirLib/deps/rpclib/include

④AirLib/deps/eigen3

⑤AirLib/deps/MavLinkCom/include

而我们需要的静态链接库有下面三个部分:

①rpc.lib

②AirLib.lib

③MavLinkCom.lib

因此,我们可以从官方git clone下来的文件中,找到AirLib这个项目,把我截图中的内容复制到自己的项目中,然后按照上面的配置把静态链接库配置好,以及包含正确的头文件。

2、附加包含目录

参考我上面的截图配置好包含好正确的头文件

3、配置附加库目录

参考我上面的截图配置好附加库的目录(静态链接库所在的位置)

4、配置附加依赖项

参考我上面的截图配置好附加依赖项

三、撰写控制代码

代码实际上就是copy复制官方的一个例子,下面加入了一些注释:

#include <iostream>
#include "vehicles/multirotor/api/MultirotorRpcLibClient.hpp"

int main()
{
    msr::airlib::MultirotorRpcLibClient client;

    std::cout << "Press Enter to enable API control\n"; std::cin.get(); // 按下回车键开启API控制
    client.enableApiControl(true);

    std::cout << "Press Enter to arm the drone\n"; std::cin.get(); // 按下回车解锁无人机
    client.armDisarm(true);

    std::cout << "Press Enter to takeoff\n"; std::cin.get(); // 按下回车键起飞无人机
    client.takeoffAsync(5)->waitOnLastTask();

    std::cout << "Press Enter to move 5 meters in x direction with 1 m/s velocity\n"; std::cin.get(); // 按下回车键往前飞行
    auto position = client.getMultirotorState().getPosition(); // from current location
    client.moveToPositionAsync(position.x() + 5, position.y(), position.z(), 1)->waitOnLastTask();

    std::cout << "Press Enter to land\n"; std::cin.get(); // 按下回车键降落无人机
    client.landAsync()->waitOnLastTask();

    std::cout << "Press Enter to disenable\n"; std::cin.get(); // 按下回车键关闭API控制
    client.enableApiControl(false);

    return 0;
}

四、完结

上面就是全部步骤,至此我们就可以通过一个C++程序来控制Airsim中的无人机或小车。后续将把这些代码封装到UE4中的类里面去。(亦或者是使用Qt,按下不同的按钮,通过调用不同的API来控制airsim)

猜你喜欢

转载自blog.csdn.net/hu853712064/article/details/130650668