【airsim】python控制airsim

news2024/12/25 14:31:54

使用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.

解决方法合集

  1. 推荐重新安装编译后版本
    安装windows的1.8.1,无效
  2. 使用setup安装

运行API时,虚幻卡顿

虚幻编辑器中的“编辑->编辑器首选项”,在“搜索”框中键入“CPU”,并确保“在后台使用更少的CPU”未选中。

Reference

https://microsoft.github.io/AirSim/apis/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1362638.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UV胶水与聚氯乙烯PVC材料的塑料粘接,效果如何?

UV胶水可以与聚氯乙烯PVC很好地粘接。 PVC是一种常见的塑料材料&#xff0c;UV胶水通常对PVC具有良好的粘接性能。UV胶水可以在紫外线照射下迅速固化&#xff0c;形成坚固的粘接&#xff0c;因此通常被用于PVC制品的粘接和修复。 UV胶水与PVC粘接的优点&#xff1a; 1. 快速固…

Java并发集合详解

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;在这篇博客中&#xff0c;咱们将一起深入探索Java中的并发集合。多线程编程是一个不可或缺的部分&#xff0c;它能让程序运行得更快&#xff0c;处理更多的任务。但同时&#xff0c;多线程也带来了一些挑战&…

Linux 编译安装 Nginx

目录 一、前言二、四种安装方式介绍三、本文安装方式&#xff1a;源码安装3.1、安装依赖库3.2、开始安装 Nginx3.3、Nginx 相关操作3.4、把 Nginx 注册成系统服务 四、结尾 一、前言 Nginx 是一款轻量级的 Web 服务器、[反向代理]服务器&#xff0c;由于它的内存占用少&#xf…

独立式键盘控制步进电机实验

#include<reg51.h> //包含51单片机寄存器定义的头文件 sbit S1P1^4; //将S1位定义为P1.4引脚 sbit S2P1^5; //将S2位定义为P1.5引脚 sbit S3P1^6; //将S3位定义为P1.6引脚 unsigned char keyval; //储存按键值 unsigned char ID; …

etcd基本介绍

etcd基本介绍 ETCD是SoreOs公司发布的一个分布式的、高可用的、key-value存储的数据库。基于Go语言实现&#xff0c;k8s中也使用了ETCD作为数据库。主要用于共享配置和服务发现。相对于zookeeper采用的Paxos&#xff0c;ETCD采用的是Raft算法&#xff0c;该算法具备的性能更佳…

Hadoop集群三节点搭建(二)

一、克隆三台主机&#xff08;hadoop102 hadoop103 hadoop104&#xff09; 以master为样板机克隆三台出来&#xff0c;克隆前先把master关机 按照上面的步骤克隆其他两个就可以了&#xff0c;记得修改ip和hostname 二、编写集群同步脚本 在/home/attest/ 创建bin目录&…

基于SSM的《数据库系统原理》课程平台

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

Matlab:遗传算法,模拟退火算法练习题

1、遗传算法 &#xff08;1&#xff09;遗传算法是一种基于自然选择原理和自然遗传机 制的搜索&#xff08;寻优&#xff09;算法&#xff0c;它是模拟自然界中的生命进化机制&#xff0c;在人工系统中实现特定目 标的优化。遗传算法的实质是通过群体搜索技术&#xff0c;根据…

西电期末1024.数值信息报表

一.题目 二.分析与思路 考点重复&#xff0c;这里介绍一种新的处理方法&#xff0c;以前用找最值时用排序加结构体记录数据位置&#xff0c;用数组记录一串数据使用&#xff0c;西卡西&#xff0c;我们只是找最值&#xff0c;就可以打擂台处理&#xff0c;加上位置就行&#x…

Linux 的引导与服务控制

一 开机启动过程 bios加电自检-->mbr-->grub-->加载内核文件-->启动第一个进程 1 bios加电自检 检测硬件是否正常&#xff0c;然后根据bios中的启动项设置&#xff0c;去找内核文件 2 mbr 因为grup太大,第一个扇区存不下所有的grub程序&#xff0c;所以分为…

【C/C++】开源串口库 CSerialPort 应用

文章目录 1、简述2、效果图2.1、命令行&#xff08;不带GUI&#xff09;2.2、GUI&#xff08;这里用的Qt&#xff09; 3、串口硬件知识普及4、核心实现4.1、Qt的pro文件4.2、main文件4.3、SSerialPort类4.3.1、头文件4.3.2、源文件 4.4、Linux下的CMakeLists.txt 1、简述 本文…

ruoyi若依 @DataScope(deptAlias = “d“, userAlias = “u“)不生效问题

DataScope注解不生效问题记录 问题&#xff1a;DataScope(deptAlias "d", userAlias "u")不生效问题原因排查&#xff1a;解决方案&#xff1a;结果&#xff1a;完美解决 问题&#xff1a;DataScope(deptAlias “d”, userAlias “u”)不生效问题 原因…

MDPI期刊word模版下载

先打开该网站 找到Manuscript 就能下载到word文件了

吴恩达深度学习l2week2编程作业—Optimization Methods(最新中文跑通版)

到目前为止&#xff0c;您一直使用渐变下降来更新参数并将成本降至最低。在本笔记本中&#xff0c;您将获得一些更先进的优化方法的技能&#xff0c;这些方法可以加快学习速度&#xff0c;甚至可能使您获得更好的成本函数最终值。拥有一个好的优化算法可能是等待几天与只需几个…

解决使用localhost或127.0.01模拟CORS失效

解决使用localhost或127.0.01模拟CORS失效 前言问题发现问题解决 前言 CORS (Cross-Origin Resource Sharing) 指的是一种机制&#xff0c;它允许不同源的网页请求访问另一个源服务器上的某些资源。通常情况下&#xff0c;如果 JavaScript 代码在一个源中发起了 AJAX 请求&…

HAL——定时器

学习目标 掌握定时器I配置方式掌握定时器占空比输出 学习内容 需求 以PA5对应的LED4为例&#xff0c;我们做一个呼吸灯的效果。 我们采用TIMER1进行实现&#xff1a; Timer配置 配置Timer通道输出 配置周期和分频计数 psc为分频系数&#xff0c;这里的值需要写入到寄存器中…

HAL——SPI

学习目标 掌握SPI配置方式掌握SPI读写操作 学习内容 需求 SPI配置 打开SPI1,选中全双工模式。观察下方自动生成的引脚&#xff0c;是否和自己开发板引脚对应。 修改引脚&#xff0c;来动右侧芯片引脚视图&#xff0c;找到开发板对应引脚&#xff0c;进行修改。

Linux 目录结构及其说明

Linux 操作系统遵循一种标准的目录结构&#xff0c;称为 Filesystem Hierarchy Standard&#xff08;文件系统层次结构标准&#xff09;&#xff0c;其定义了不同目录的用途和内容。 浅蓝色文字 /&#xff08;根目录&#xff09;&#xff1a; /根目录是整个文件系统的起点&…

学习Go语言Web框架Gee总结--http.Handler(一)

学习Go语言Web框架Gee总结--http.Handler http-base/go.modhttp-base/main.gohttp-base/gee/gee.gohttp-base/gee/go.mod 网站学习来源&#xff1a;Gee 代码目录结构&#xff1a; http-base/go.mod //指定当前模块的名称为 "example" module example//指定当前模…

一个命令查看linux系统是Centos还是Ubuntu

目 录 一、 背景介绍 二、一个命令查看linux系统的简单方法 1、 uname -a 2、cat /etc/issue 3、lsb_release -a 4、 dmesg | grep Ubuntu 一、 背景介绍 Linux 系统基本上分为两大类&#xff1a; 1. Red Hat 系列&#xff1a;包括 Red Ha…