使用airsim 1.8.1编译完成,进过block项目在cpp测试后,开始踩坑使用python。
使用AirSim\PythonClient\setup.py
或者pip安装airsim。
python setup.py install
或者
pip install airsim
此时,windows电脑的环境信息
(air_py38) D:\code\Github_code\AirSim\PythonClient\multirotor>conda list
# packages in environment at C:\conda\envs\air_py38:
#
# Name Version Build Channel
airsim 1.8.1 pypi_0 pypi
ca-certificates 2023.12.12 haa95532_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
libffi 3.4.4 hd77b12b_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
msgpack-python 0.5.6 pypi_0 pypi
msgpack-rpc-python 0.4.1 pypi_0 pypi
numpy 1.24.4 pypi_0 pypi
opencv-contrib-python 4.9.0.80 pypi_0 pypi
openssl 3.0.12 h2bbff1b_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
pip 23.3.1 py38haa95532_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
python 3.8.18 h1aa4202_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
setuptools 68.2.2 py38haa95532_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
sqlite 3.41.2 h2bbff1b_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
tornado 4.5.3 pypi_0 pypi
vc 14.2 h21ff451_1 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
vs2015_runtime 14.27.29016 h5e58377_2 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
wheel 0.41.2 py38haa95532_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
python调用教程
官方demo
先打开一个环境,临时编译和二进制版本均可。注意和pip版本匹配。否则报错:
WARNING:tornado.general:Connect error on fd 328: WSAECONNREFUSED
然后可以运行AirSim\PythonClient\multirotor
中的测试代码。
D:\code\Github_code\AirSim\PythonClient\multirotor 的目录
2024/01/06 19:38 <DIR> .
2024/01/06 19:38 <DIR> ..
2024/01/06 11:48 1,882 add_drone.py
2024/01/06 11:48 124 arm.py
2024/01/06 11:48 1,826 box.py
2024/01/06 11:48 863 clock_speed.py
2024/01/06 11:48 97 disarm.py
2024/01/06 11:48 2,797 drone_lidar.py
2024/01/06 11:48 570 drone_stress_test.py
2024/01/06 11:48 331,108 Error.wav
2024/01/06 11:48 1,137 external_physics_engine.py
2024/01/06 11:48 858 gimbal.py
2024/01/06 11:48 3,127 hello_drone.py
2024/01/06 11:48 1,848 high_res_camera.py
2024/01/06 11:48 9,062 kinect_publisher.py
2024/01/06 11:48 404 land.py
2024/01/06 11:48 835 line_of_sight.py
2024/01/06 11:48 865 manual_mode_demo.py
2024/01/06 11:48 3,581 multi_agent_drone.py
2024/01/06 11:48 3,278 navigate.py
2024/01/06 11:48 2,229 opencv_show.py
2024/01/06 11:48 10,225 orbit.py
2024/01/06 11:48 135 params.txt
2024/01/06 11:48 1,785 path.py
2024/01/06 11:48 783 pause_continue_drone.py
2024/01/06 11:48 2,239 point_cloud.py
2024/01/06 11:48 455 reset_test_drone.py
2024/01/06 11:48 4,399 sensorframe_lidar_pointcloud.py
2024/01/06 11:48 1,822 setup_path.py
2024/01/06 11:48 772 set_fog.py
2024/01/06 11:48 1,109 set_trace_line.py
2024/01/06 11:48 791 set_wind.py
2024/01/06 11:48 1,158 speaker.py
2024/01/06 11:48 2,357 stability_test.py
2024/01/06 11:48 466 state.py
2024/01/06 11:48 3,878 survey.py
2024/01/06 11:48 1,196 takeoff.py
2024/01/06 11:48 396 teleport.py
2024/01/06 11:48 3,563 vehicleframe_lidar_pointcloud.py
2024/01/06 11:48 6,480 wav_reader.py
示例文件夹中的文件setup_path.py
来检测airsim软件包在父文件夹中是否可用。这里,使用该软件包而不是pip安装软件包。
api
详见官方文档
或者查看https://zhuanlan.zhihu.com/p/507304210
计算机视觉API
AirSim在仿真启动时会自动读取 “C:\Users\用户名\Documents\AirSim” 文件夹下面的 “settings.json” 文件内容,并进行初始化设置。因此可以编辑 “settings.json” 文件。
“Multirotor”为无人机,“Car”为无人车
"SimMode" :"ComputerVision"
AirSim提供全面的图像API,从多台相机中检索同步图像以及地面真值,包括深度、差异、表面法线和视觉。您可以在settings.json中设置分辨率、FOV、运动模糊等参数。还有用于检测碰撞状态的API。另请参阅生成指定数量的立体声图像和地面真值深度的完整代码,并归一化到相机平面,计算差异图像并将其保存为pfm格式。
更多关于图像API和计算机视觉模式的信息。对于可以从域随机化中受益的视觉问题,还有一个对象重构API,可以在支持的场景中使用。
天气API
默认情况下,所有天气效果都被禁用。要启用天气效应,请先致电:
simEnableWeather(True)
可以使用simSetWeatherParameter方法启用各种天气效果,例如,
client.simSetWeatherParameter(airsim.WeatherParameter.Rain, 0.25);
第二个参数值从0到1。第一个参数提供了以下选项:
class WeatherParameter:
Rain = 0
Roadwetness = 1
Snow = 2
RoadSnow = 3
MapleLeaf = 4
RoadLeaf = 5
Dust = 6
Fog = 7
请注意,Roadwetness、RoadSnow和RoadLeaf效果需要为您的场景添加材料。
记录API
记录API可用于通过API开始记录数据。可以使用设置指定要记录的数据。要开始录制,请使用-
client.startRecording()
同样,要停止录制,请使用client.stopRecording()要检查录音是否正在运行,请调用client.isRecording()返回一个bool。
此API与使用R按钮切换记录一起工作,因此,如果使用R键启用,isRecording()将返回True,并且可以使用stopRecording()
通过API停止记录。同样,如果在Viewport中按下R键,则使用API开始的录制将停止。如果使用API开始或停止录制,LogMessage
也将出现在视口的左上角。
请注意,这只会保存设置中指定的数据。为了完全自由地存储数据,如某些传感器信息,或以不同的格式或布局,请使用其他API获取数据并根据需要保存。有关如何修改正在记录的运动学数据的详细信息,请查看修改记录数据。
BUG合集
基础测试代码报错。
setup_path.py
用于测试airsim安装有没有成功。
(air_py38) D:\code\Github_code\AirSim\PythonClient\multirotor>python setup_path.py
WARNING:root:airsim module not found in parent folder. Using installed package (pip install airsim).
api报错没有 getMultirotorState
(air_py38) D:\code\Github_code\AirSim\PythonClient\multirotor>python survey.py
Connected!
Client Ver:1 (Min Req: 1), Server Ver:1 (Min Req: 1)
arming the drone...
Traceback (most recent call last):
File "survey.py", line 99, in <module>
nav.start()
File "survey.py", line 22, in start
landed = self.client.getMultirotorState().landed_state
File "D:\code\Github_code\AirSim\PythonClient\airsim\client.py", line 1567, in getMultirotorState
return MultirotorState.from_msgpack(self.client.call('getMultirotorState', vehicle_name))
File "C:\conda\envs\air_py38\lib\site-packages\msgpackrpc\session.py", line 41, in call
return self.send_request(method, args).get()
File "C:\conda\envs\air_py38\lib\site-packages\msgpackrpc\future.py", line 45, in get
raise error.RPCError(self._error)
msgpackrpc.error.RPCError: rpclib: server could not find function 'getMultirotorState' with argument count 1.
解决方法合集
- 推荐重新安装编译后版本
安装windows的1.8.1,无效 - 使用setup安装
运行API时,虚幻卡顿
虚幻编辑器中的“编辑->编辑器首选项”,在“搜索”框中键入“CPU”,并确保“在后台使用更少的CPU”未选中。
Reference
https://microsoft.github.io/AirSim/apis/