【airsim】python控制airsim

使用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 = 0Roadwetness = 1Snow = 2RoadSnow = 3MapleLeaf = 4RoadLeaf = 5Dust = 6Fog = 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 startlanded = self.client.getMultirotorState().landed_stateFile "D:\code\Github_code\AirSim\PythonClient\airsim\client.py", line 1567, in getMultirotorStatereturn MultirotorState.from_msgpack(self.client.call('getMultirotorState', vehicle_name))File "C:\conda\envs\air_py38\lib\site-packages\msgpackrpc\session.py", line 41, in callreturn self.send_request(method, args).get()File "C:\conda\envs\air_py38\lib\site-packages\msgpackrpc\future.py", line 45, in getraise 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.hqwc.cn/news/327841.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[技术杂谈]使用VLC将视频转成一个可循环rtsp流

通过vlc播放器&#xff0c;将一个视频转成rtsp流&#xff0c;搭建一个rtsp服务器。rtsp客户端可访问这个视频的rtsp流。 1. 打开vlc播放器&#xff0c;使用的版本如下 2. 菜单&#xff1a;媒体 ---> 流 3. 添加视频文件&#xff0c;点击添加一个mp4 文件 4. 选择串流&…

【gRPC学习】使用go学习gRPC

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 RPC是远程调用,而google实现了grpc比较方便地实现了远程调用,gRPC是一个现代的开源远程过程调用(RPC)框架 概念介绍 在gRPC中&#xff0c;客户端应用程序可以直接调用另一台计算机上的服务器应用程序上的方法&#…

记录汇川:H5U与Fctory IO 测试1

主程序&#xff1a; 子程序&#xff1a; Fctory IO通讯配置如下 &#xff1a; H5U作服务器&#xff0c;Fctory IO作客户端 这里参考&#xff1a;HU5作服务器地址 实现的动作如下&#xff1a; H5U与Factory IO联动

代码快递员:extern如何送达静态变量至各文件目的地

各位少年&#xff0c;大家好&#xff0c;我是博主那一脸阳光。 前言&#xff1a;话说有一天&#xff0c;静态变量先生和extern女士一起去参加编程界的武林大会。静态变量先生自豪地说&#xff1a;“你知道我为什么这么受欢迎吗&#xff1f;因为我可是个低调的富翁&#xff0c;我…

动态编译 - Dynamically Compile and Load External Java Classes

文章目录 概述Code 概述 动态编译和加载外部Java类的核心流程可以概括为以下几个步骤&#xff1a; 读取源代码: 首先&#xff0c;需要获取到外部的Java源代码。这通常是通过读取文件、网络资源或者数据库中的源代码字符串来实现的。编译源代码: 接下来&#xff0c;需要使用Ja…

html5实现好看的个人博客模板源码

文章目录 1.设计来源1.1 主界面1.2 认识我界面1.3 我的文章界面1.4 我的模板界面1.5 文章内容界面 2.结构和源码2.1 目录结构2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/135368653 html5实现好看…

物联网的感知层、网络层与应用层分享

物联网的概念在很早以前就已经被提出&#xff0c;20世纪末期在美国召开的移动计算和网络国际会议就已经提出了物联网(Internet of Things)这个概念。 最先提出这个概念的是MIT Auto-ID中心的Ashton教授&#xff0c;他在研究RFID技术时&#xff0c;便提出了结合物品编码、互联网…

【论文解读】基于神经辐射场NeRF的像素级交互式编辑(Seal-3D)

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/pdf/2307.15131 项目主页&#xff1a;https://windingwind.github.io/seal-3d/ 摘要&#xff1a; 随着隐式神经表征或神经辐射场&#xff08;NeRF&#xff09;的普及…

针对人工智能的攻击并发布策略和建议

人工智能系统已经渗透到现代社会的各个领域。从自动驾驶到疾病诊断以及作为在线聊天机器人与客户互动。 为了学习如何执行这些任务&#xff0c;聊天机器人需要接受大量数据的训练。然而&#xff0c;主要问题之一是这些数据可能不可靠。攻击者有很多机会破坏它们。这都是在AI系…

docker、docker-compose 离线安装、shell脚本一键安装、卸载

注&#xff1a;二进制包&#xff0c;与脚本在同级目录 docker 离线安装&#xff1a; 包下载&#xff1a;https://download.docker.com/linux/static/stable/x86_64/ docker_install.sh&#xff1a; #!/bin/bash# 指定 Docker 版本和文件名 DOCKER_VERSION"24.0.7" D…

【影刀RPA_如何使用影刀的企业微信指令?】

思路&#xff1a;先用python代码过一遍&#xff0c;再将必要参数填到指令里面。 第一步&#xff1a; 1、在企业微信后台新建应用&#xff0c;设置消息接收地址&#xff08;需要服务器的公网ip地址&#xff09;&#xff0c;进行签名验证。然后&#xff0c;从浏览器中查询ip地址…

C语言基础知识(5):TCP网络编程

TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构&#xff0c;当应用程序采用 TCP 发送消息时&#xff0c;虽然可以保证发送的顺序&#xff0c;但还是犹如没有任何间隔的数据流发送给接收端。TCP 为提供可靠性传输&#xff0c;实行“顺序控制”或“重发控制”机制。此…

Redis 持久化——AOF

文章目录 为什么需要AOF?概念持久化查询和设置1. 查询AOF启动状态2. 开启AOF持久化2.1 命令行启动AOF2.2 配置文件启动 AOF 3. 触发持久化3.1 自动触发3.3 手动触发 4. AOF 文件重写4.1 什么是AOF重写&#xff1f;4.2 AOF 重写实现4.3 AOF 重写流程 5. 配置说明6. 数据恢复6.1…

【SpringCloud】之远程消费(进阶使用)

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《SpringCloud开发之远程消费》。&#x1f3af;&a…

H266/VVC多样化视频编码工具概述

全景视频编码 全景视频&#xff1a; 具有360度全包围视角的球面视频。 全景视频编码&#xff1a; 包括H266在内的视频编码算法都是以平面视频为对象的&#xff0c;为了采用传统的视频编码编码算法&#xff0c;全景视频需要转换为平面视频&#xff0c;其中经纬图等角映射&#…

dubbo的基础知识

dubbo是什么 Dubbo是一个分布式服务框架&#xff0c;是一种高性能的远程通讯框架。它提供了基于Java的RPC&#xff08;远程过程调用&#xff09;通信机制&#xff0c;使得应用之间可以方便地进行远程调用&#xff0c;实现分布式服务的调用和管理。Dubbo提供了服务注册、发现、负…

【大数据进阶第三阶段之Hive学习笔记】Hive常用命令和属性配置

目录 1、Hive安装 2、HiveJDBC访问 2.1、启动hiveserver2服务 2.2、连接hiveserver2服务 2.3、注意 3、Hive常用交互命令 3.1、“-e”不进入hive的交互窗口执行sql语句 3.2、“-f”执行脚本中sql语句 4、Hive其他命令操作 4.1、退出hive窗口 4.2、在hive cli命令窗口…

基于OpenCV的透视变换

基础概念 透视变换(Perspective Transformation)是仿射变换的一种非线性扩展,是将图片投影到一个新的视平面(Viewing Plane)&#xff0c;也称作投影映射(Projective Mapping)。 原理&#xff1a;将二维的图片投影到一个三维视平面上&#xff0c;然后再转换到二维坐标下&#…

LeetCode 2807.在链表中插入最大公约数

【LetMeFly】2807.在链表中插入最大公约数 力扣题目链接&#xff1a;https://leetcode.cn/problems/insert-greatest-common-divisors-in-linked-list/ 给你一个链表的头 head &#xff0c;每个结点包含一个整数值。 在相邻结点之间&#xff0c;请你插入一个新的结点&#x…

使用 C# Winfrom编写倒计时功能

在日常生活中&#xff0c;我们经常需要倒计时来提醒自己重要的时间节点&#xff0c;比如倒计时到达一个特定的日期和时间。介绍一个使用 C# 编写的倒计时应用程序的实现。 步骤一&#xff1a;应用程序的功能 它具有以下几个主要特点&#xff1a; 用户输入目标日期和时间&…