1. Controle la demostración del efecto del dron en Airsim a través de la API de C++
captura de pantalla de la consola
Capturas de pantalla en UE4
2. Incluya la biblioteca de enlaces estáticos correcta
1. Encuentre la biblioteca de enlaces requerida
Consulte el sitio web oficial de Airsim: API de C++ - AirSim
Como se puede ver en la captura de pantalla de la guía del sitio web oficial anterior, el archivo de encabezado que necesitamos tiene cuatro partes:
① incluir
②AirLib/incluir
③AirLib/deps/rpclib/incluir
④AirLib/deps/eigen3
⑤AirLib/deps/MavLinkCom/include
La biblioteca de enlaces estáticos que necesitamos tiene las siguientes tres partes:
①rpc.lib
②AirLib.lib
③MavLinkCom.lib
Por lo tanto, podemos encontrar el proyecto AirLib en el archivo de clonación oficial de git, copiar el contenido de mi captura de pantalla en nuestro propio proyecto y luego configurar la biblioteca de enlaces estáticos de acuerdo con la configuración anterior e incluir el archivo de encabezado correcto.
2. Directorio de inclusión adicional
Consulte mi captura de pantalla anterior para configurar e incluir el archivo de encabezado correcto
3. Configurar directorios de biblioteca adicionales
Consulte la captura de pantalla anterior para configurar el directorio de la biblioteca adicional (donde se encuentra la biblioteca de enlaces estáticos)
4. Configurar dependencias adicionales
Consulte mi captura de pantalla anterior para configurar dependencias adicionales
3. Escribir código de control
El código es en realidad un ejemplo oficial de copia, y se agregan algunos comentarios a continuación:
#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;
}
Cuarto, el final
Los anteriores son todos los pasos, hasta ahora podemos controlar el dron o el automóvil en Airsim a través de un programa C ++. En el futuro, estos códigos se encapsularán en clases en UE4. (O use Qt, presione diferentes botones y controle airsim llamando a diferentes API)