settings.json存放的位置 【airsim之settings解析】ubuntu: ~/Documents/Airsim
可用的设置和默认值 “SimMode”: 选择car或者miltimotor
“ViewMode”: 选择FlyWithMe(for drones)或者 SpringArmChase(for cars)
"SettingsVersion"是必须的,设为1.2
OriginGeopoint
此设置指定放置在环境中的“”Player Start“ 的纬度、经度和高度,使用该变换计算车辆的原点。请注意,该API使用的坐标都是国际单位制的NED系统,这意味着每辆车在NED系统中从(0,0,0)开始。计算“origingeopoint”中指定的地理坐标的时间设置。
NED系统即:north (x+) east(y+) down(z+) 与gazebo只有z相反
APIs for car setCarControls:
可以设置throttle(节气门)/ steering(转向) / handbrake(手刹) / auto/manual gear(自动或手动驾驶)
getCarState:
获取speed current gear 和6个运动学参数(position orientation linear/angular velocity linear/angular acceleration)
除了angular velocity和acceleration 在车坐标系下,其他在世界坐标系 且均为NED系统
#include
#include "vehicles/car/api/CarRpcLibClient.hpp"int main()
{
msr::airlib::CarRpcLibClient client;
client.enableApiControl(true);
//this disables manual control
CarControllerBase::CarControls controls;
std::cout << "Press enter to drive forward" << std::endl;
std::cin.get();
controls.throttle = 1;
client.setCarControls(controls);
std::cout << "Press Enter to activate handbrake" << std::endl;
std::cin.get();
controls.handbrake = true;
client.setCarControls(controls);
std::cout << "Press Enter to take turn and drive backward" << std::endl;
std::cin.get();
controls.handbrake = false;
controls.throttle = -1;
controls.steering = 1;
client.setCarControls(controls);
std::cout << "Press Enter to stop" << std::endl;
std::cin.get();
client.setCarControls(CarControllerBase::CarControls());
return 0;
}
sensors 每个传感器有自己对应的num:
相机
- 相机没有num
int getStereoAndDepthImages()
{
using namespace std;
using namespace msr::airlib;
typedef VehicleCameraBase::ImageRequest ImageRequest;
typedef VehicleCameraBase::ImageResponse ImageResponse;
typedef VehicleCameraBase::ImageType ImageType;
//for car use
//msr::airlib::CarRpcLibClient client;
msr::airlib::MultirotorRpcLibClient client;
//get right, left and depth images. First two as png, second as float16.
vector request = {
//png format
ImageRequest("0", ImageType::Scene),
//uncompressed RGB array bytes
ImageRequest("1", ImageType::Scene, false, false),
//floating point uncompressed image
ImageRequest("1", ImageType::DepthPlanner, true)
};
const vector& response = client.simGetImages(request);
//do something with response which contains image data, pose, timestamp etc
}
- barometer 气压计:1
- imu :2
- gps :3
- magnetometer 磁力计:4
- Distance Sensor :5
- Lidar :6
- 飞行器:barometer imu gps magnetometer
- 车:gps
"DefaultSensors": {
"Barometer": {
"SensorType": 1,
"Enabled" : true
},
"Imu": {
"SensorType": 2,
"Enabled" : true
},
"Gps": {
"SensorType": 3,
"Enabled" : true
},
"Magnetometer": {
"SensorType": 4,
"Enabled" : true
},
"Distance": {
"SensorType": 5,
"Enabled" : true
},
"Lidar2": {
"SensorType": 6,
"Enabled" : true,
"NumberOfChannels": 4,
"PointsPerSecond": 10000
}
},
C++ API
- Barometer
msr::airlib::BarometerBase::Output getBarometerData(const std::string& barometer_name, const std::string& vehicle_name);
- IMU
msr::airlib::ImuBase::Output getImuData(const std::string& imu_name = "", const std::string& vehicle_name = "");
- GPS
msr::airlib::GpsBase::Output getGpsData(const std::string& gps_name = "", const std::string& vehicle_name = "");
- Distance sensor
msr::airlib::DistanceBase::Output getDistanceSensorData(const std::string& distance_sensor_name = "", const std::string& vehicle_name = "");
- Lidar
参考之前的
推荐阅读
- AirSim|AirSim 自动驾驶仿真 (5) - 图片 APIs
- AirSim|AirSim 自动驾驶仿真 (4) - 核心 APIs - C++
- AirSim|AirSim 自动驾驶仿真 (7) - AirSim 多载具
- UE4|AirSim里的那些坑
- airsim-lidar使用
- Airsim仿真平台介绍
- 基于深度学习网络在Airsim中的自动驾驶
- Airsim|Airsim Python API文档整理(1.3.1版本)
- Airsim|Airsim(1.3.1版本)setting.json帮助文档解析