1.AirSim学习笔记(三)Using SITL with AirSim
2.pycharmå®è£
ï¼
3.三分钟带你了解Android 系统启动流程详解
AirSim学习笔记(三)Using SITL with AirSim
使用AirSim实现SITL的源码详细步骤如下: 1. 安装虚幻引擎1.1.1 下载并安装Epic Game Launcher
1.1.2 通过Launcher安装Unreal游戏引擎
1.1.3 安装Visual Studio ,确保选择“桌面开发C++和Windows SDK .0.”选项
1.1.4 使用Git安装AirSim源码
2. 测试Unreal和AirSim2.1.1 进行环境配置,源码如安装Landscape Mountains场景
2.1.2 在AirSim根目录下编译源码,源码检查“AirSim\Unreal”目录下的源码“Plugins”插件生成情况
2.1.3 使用Developer Command Prompt for VS 运行编译后的项目,确保Unreal和AirSim安装成功
3. 配置背景环境LandscapeMountains3.1.1 安装并设置Landscape Mountains场景,源码注意版本兼容性
3.1.2 在Unreal中新建C++类,源码知道源码算反码为项目编译生成Visual Studio工程文件
3.1.3 将AirSim插件复制到LandscapeMountains本地文件夹,源码并修改相关配置文件
4. 在Windows中构建AirSim4.1.1 安装虚幻引擎和Visual Studio
4.1.2 克隆AirSim源代码,源码进入AirSim目录,源码使用Developer Command Prompt for VS 构建项目
4.1.3 配置并启动Unreal编辑器,源码完成AirSim环境的源码构建
5. 使用AirSim5.1.1 启动Unreal编辑器并加载预设环境,调整设置以适应SITL使用
5.1.2 通过遥控器或键盘控制无人机,源码实现SITL与AirSim的源码对讲源码结合使用
6. AirSim与ArduPilot SITL结合使用6.1.1 设置ArduPilot SITL环境,确保与AirSim兼容
6.1.2 在AirSim中指定ArduPilot设备参数,源码如IP地址和端口
6.1.3 启动AirSim和ArduPilot SITL,源码进行多旋翼无人机的模拟操作
通过上述步骤,可以成功实现使用AirSim与ArduPilot SITL结合进行无人机模拟和控制。请注意在多设备仿真时可能遇到的平台差异问题,并参考相关讨论线程进行调整。课表源码pycharmå®è£ ï¼
å®è£ pycharm.3.1
1ãæå¼åºç¨ï¼pycharmï¼å³é®æ¾ç¤ºç®å½ï¼è¿å ¥PyCharm.appç®å½
2ãæja-netfilter-allæ¾å°PyCharm.app/binç®å½ï¼å½ç¶ä½ ä¹å¯ä»¥æ¾å°å ¶ä»ç®å½ï¼
3ãèªå®ä¹è¿ææ¶é´åç¨æ·å
ja-netfilter-all/config/mymap.conf
EQUAL,paidUpTo-èªå®ä¹æ¶é´
EQUAL,licenseeName-èªå®ä¹ç¨æ·å
4ãæ°å»º/ç¼è¾vmoptions
æ«å°¾å å ¥
5ãè¿è¡JetBrains产åï¼éæ©âå¼å§è¯ç¨âï¼å¨ç½é¡µéç»å½å°JetBrainså¸æ·å¹¶ç¹å»æ¿æ´»ï¼å®ï¼
注æï¼å¦æ没æJBå¸æ·ï¼åªéå¨ç½ç«ä¸ä½¿ç¨çµåé®ä»¶å建ä¸ä¸ªå¸æ·ï¼ç¶å使ç¨è¯¥å¸æ·ç»å½ã
PyCharmæä¹å®è£æä½æ¹æ³å¦ä¸ï¼
1ãé¦å å»Pycharmå®ç½ï¼ä¸è½½PyCharmå®è£ å ï¼æ ¹æ®èªå·±çµèçæä½ç³»ç»è¿è¡éæ©ï¼å¯¹äºwindowsç³»ç»éæ©ä¸å¾çæ¡æ¡æå å«çå®è£ å ã
2ãåå»ä¸è½½çå®è£ å ï¼è¿è¡å®è£ ï¼ç¶åä¼å¼¹åºçé¢ã
3ãéæ©å®è£ ç®å½ï¼Pycharméè¦çå åè¾å¤ï¼å»ºè®®å°å ¶å®è£ å¨Dçæè Eçï¼ä¸å»ºè®®æ¾å¨ç³»ç»çCçã
4ãç¹å»Nextï¼è¿å ¥ä¸å¾ççé¢ã
5ãç¹å»Nextï¼è¿å ¥ä¸å¾ã
6ãèå¿ççå¾ ä¸¤åéå·¦å³ï¼å¦ä¸å¾ã
7ãä¹åå°±ä¼å¾å°ä¸é¢çå®è£ å®æççé¢ã
å¦ä½ä¸è½½å®è£ PyCharm
PyCharmæ¯ä¸ºpythonè¯è¨ä¸é¨æä¾çideï¼éæäºå¤§å¤æ°çè¿è¡æ¡æ¶åå æºä»£ç ï¼ä½¿æ们ä¸ç¨è¿å¤çå»å ³å¿è¿è¡ç¯å¢ï¼ä»èå¯ä»¥ä¸å¿çå¼å代ç ï¼ä¸é¢å°±æ¥ä»ç»ä¸å¦ä½ä¸è½½å®è£ PyCharm
è¿å ¥PyCharmçå®ç½ï¼æ¾å°ä¸è½½é¡µé¢ï¼å为ä¸ä¸çå社åºçï¼ä¸ä¸çå¨æ ¡å¦çæ¯å¯ä»¥å è´¹ä¸è½½çï¼å ¶ä»èº«ä»½åéè¦è´ä¹°ä½¿ç¨ï¼æ们èªå·±å¼åçè¯ï¼ç¤¾åºçå°±å¤äº
ç¹å»ä¸è½½é¾æ¥ï¼å¼¹åºä¸è½½å¼¹æ¡ï¼éæ©èªå·±çä¿åä½ç½®ï¼å¼å§ä¸è½½å³å¯
ä¸è½½å®æåï¼å¨æå¨çæ件夹æ¾å°exeæ件ï¼åå»è¿è¡å®è£
ä¸ç´ç¹å»ä¸ä¸æ¥å°±å¯ä»¥ï¼ä¿æé»è®¤é ç½®
å®è£ å®æ¯åï¼å¨æ¡é¢ä¸å¯ä»¥æ¾å°PyCharmçå¾æ ï¼é¼ æ å·¦é®åå»è¿å ¥
çå¾ è¿åº¦æ¡è¯»æ¡å®æåï¼è¿å ¥è½¯ä»¶ç主页é¢ï¼è¿æ ·ï¼æ们就å¯ä»¥ç¼è¾ä»£ç äº
PyCharmå®è£ æç¨å®è£ åå å ³éææ¯è½¯ä»¶åå«å£«ï¼æ³¨æå®è£ è·¯å¾ä¸è½æä¸æï¼å®è£ å è·¯å¾ä¹ä¸è¦æä¸æã
1.é¼ æ å³å»ãpycharm-.3.3ãå缩å éæ©ã解åå°pycharm-.3.3ãã
2.åå»æå¼è§£ååçãpycharm-.3.3ãæ件夹ã
3.é¼ æ å³å»ãpycharm-.3.3.exeãéæ©ã以管çå身份è¿è¡ãã
4.ç¹å»ãNextãã
5.ç¹å»ãBrowse...ãæ´æ¹è½¯ä»¶çå®è£ ç®å½ï¼å»ºè®®å®è£ å¨é¤Cçä¹å¤çå ¶å®ç£çï¼å¯ä»¥å¨Dçæå ¶å®çæ°å»ºä¸ä¸ªãPyCharm.3.3ãæ件夹ï¼ç¶åç¹å»ãNextãã
6.å¾éã-bitlauncherãããAddlaunchersdirtothePATHãåãAdd"OpenFolderasProject"ãç¶åç¹å»ãNextãã
7.ç¹å»ãInstallãã
8.å®è£ ä¸ã
9.ç¹å»ãFinishãã
.æå¼ä¹åå®è£ å 解ååçãpycharm-.3.3ãæ件夹ï¼é¼ æ å³å»ãjetbrains-agent.jarãéæ©ãå¤å¶ãã
.æå¼çµèãCçãï¼å¨ç©ºç½å¤é¼ æ å³å»éæ©ãç²è´´ãã
.ç¹å»ã继ç»ãã
.åå»ãPyCharm.3.3xã软件å¾æ è¿è¡è½¯ä»¶ã
.ç¹å»ãOKãã
.ç¹å»ãSkipRemainingandSetDefaultsãã
.éæ©ãEvaluateforfreeãç¶åç¹å»ãEvaluateãã
.ç¹å»ãContinueãã
.ç¹å»ãConfigureãã
.éæ©ãEditCustomVMOptionsâ¦ãã
.å¤å¶ã-javaagent:C:\jetbrains-agent.jarãï¼å¹¶ç²è´´å°æåä¸è¡ï¼ç¶åç¹å»ãSaveãï¼å¹¶éå¯è½¯ä»¶ã
.åå»æå¼ä¹åå®è£ å 解ååçãpycharm-.3.3ãæ件夹ä¸çãlicense.txtãæ件ã
.使ç¨å¿«æ·é®Ctrl+Aå ¨éææå符ï¼ç¶åé¼ æ å³å»éæ©ãå¤å¶ãã
.ç¹å»ãConfigureãã
.éæ©ãManageLicenseâ¦ãã
.éæ©ãActivationcodeã并ç²è´´æ¿æ´»ç ï¼ç¶åç¹å»ãActivateãã
.æ¿æ´»æåï¼ç¹å»ãExitãã
.æå¼ä¹åå®è£ å 解ååçãpycharm-.3.3ãæ件夹ï¼é¼ æ å³å»ãresources_zh_CN_PyCharm_.3_r1.jarãéæ©ãå¤å¶ãã
.å¨çµèæ¡é¢ä¸é¼ æ å³å»ãPyCharm.3.3xã软件å¾æ éæ©ãæå¼æ件æå¨çä½ç½®ãã
.ç¹å»ãPyCharm.3.3ãã
.åå»æå¼ãlibãæ件夹ã
.å¨ç©ºç½å¤é¼ æ å³å»éæ©ãç²è´´ãã
.åå»ãPyCharm.3.3xã软件å¾æ è¿è¡è½¯ä»¶ã
.å®è£ å®æï¼è½¯ä»¶è¿è¡çé¢å¦ä¸ã
pycharmå®è£ æç¨PyCharmå®è£ æ¹æ³å¦ä¸ï¼
çµèï¼ç¬è®°æ¬çµèã
ç³»ç»ï¼winä¸ä¸çã
软件ï¼pycharm-community-.2.3ã
1ãprofessional表示ä¸ä¸çï¼communityæ¯ç¤¾åºçï¼æ¨èå®è£ 社åºçï¼å 为æ¯å 费使ç¨çã
é¼ æ å³é®ï¼ä»¥ç®¡çå身份è¿è¡ã
2ãæ¥å°å®è£ çé¢ï¼ç¹å»ä¸ä¸æ¥ã
3ãè¿ééæ©ä¸ä¸ªå®è£ è·¯å¾ï¼ç¹å»ä¸ä¸æ¥ã
4ãæ们å¯ä»¥æ ¹æ®èªå·±ççµèéæ©ä½è¿æ¯ä½ï¼ç®ååºè¯¥åºæ¬é½æ¯ä½ç³»ç»ã
5ã设置好ä¹åï¼ç¹å»å®è£ æé®è¿è¡å®è£ ï¼æ¥ä¸æ¥å°±æ¯çå¾ å®è£ å³å¯ã
6ãå®è£ å®æåï¼ç¹å»ç®å¤´æåçæé®ã
å¦ä½æ£ç¡®å®è£ PyCharmï¼è£ PyCharmå,å å®è£ Python解éå¨ï¼ä¸ç¶é ç½®çæ¶åéä¸äºè§£éå¨ãPyCharmå®è£ æ¥éª¤å¦ä¸ã
1ãé¦å å»Pycharmå®ç½ï¼ä¸è½½PyCharmå®è£ å ï¼æ ¹æ®èªå·±çµèçæä½ç³»ç»è¿è¡éæ©ï¼å¯¹äºwindowsç³»ç»éæ©ä¸å¾çæ¡æ¡æå å«çå®è£ å ã
2ãåå»ä¸è½½çå®è£ å ï¼è¿è¡å®è£ ï¼ç¶åä¼å¼¹åºçé¢ã
3ãéæ©å®è£ ç®å½ï¼Pycharméè¦çå åè¾å¤ï¼å»ºè®®å°å ¶å®è£ å¨Dçæè Eçï¼ä¸å»ºè®®æ¾å¨ç³»ç»çCçã
4ãç¹å»Nextï¼è¿å ¥ä¸å¾ççé¢ã
5ãç¹å»Nextï¼è¿å ¥ä¸å¾ã
6ãèå¿ççå¾ ä¸¤åéå·¦å³ï¼å¦ä¸å¾ã
7ãä¹åå°±ä¼å¾å°ä¸é¢çå®è£ å®æççé¢ã
注æäºé¡¹
1ãCreateDesktopShortcutå建æ¡é¢å¿«æ·æ¹å¼ï¼ä¸ä¸ªä½ï¼ä¸ä¸ªä½ï¼æ ¹æ®çµèçç³»ç»ï¼éæ©å ·ä½ä½æ°ã
2ãæ¥éª¤4ï¼å¾éCreateAssociationsæ¯å¦å ³èæ件ï¼éæ©ä»¥åæå¼.pyæ件就ä¼ç¨PyCharmæå¼ã
三分钟带你了解Android 系统启动流程详解
Android系统的核心运行机制——Activity Manager Service (AMS)掌控着系统组件的管理和调度,包括应用进程的生命周期管理。面试中,面试官常问关于启动流程、system_server在Zygote中的角色等问题。以下是变白源码对这些核心点的分析: 1. 系统启动流程:启动从电源按钮按下开始,引导程序执行,分为两个阶段——检测RAM并加载第二阶段程序,接着设置网络等,为内核运行做准备。内核启动后,swapper进程和kthreadd进程相继启动,canopy源码初始化内存管理和驱动。 2. Zygote与system_server:system_server并非由init直接启动,而是通过Zygote进程孵化,因为这样可以实现更高效的应用进程创建。Zygote负责孵化应用进程,避免system_server过载。 3. 死锁与IPC通信:Zygote不采用Binder机制进行进程间通信,可能是因为其设计策略注重性能和效率,避免了复杂的跨进程通信机制。 4. 深入理解:图示中,Loader层负责引导,Kernel层启动内核和驱动,Native层孵化守护进程和系统服务,如System Server和Media Server。Zygote进程孵化Launcher和各种App进程,提供用户界面和服务。 掌握Android系统启动流程和底层机制对于开发者至关重要,尤其在竞争激烈的行业中。为了应对挑战,建议系统学习,例如《Android Framework源码开发揭秘》提供深入剖析,涵盖了启动流程、IPC通信、核心组件解析等内容,适合有一定经验的开发者提升技术理解。