简介
SITL(software in the loop)仿真可以让你在没有任何硬件的情况下运行ArduPlane,Copter或者Rover。它使用通用的C++编译器来完成autopilot的代码编译工作,从而可以让你从运行过程中不需要任何硬件就能完成代码的测试。
本页面详细说明了如何在windows平台上设置SITL。文中使用的相关命令在装有VMware ver 5.0.2 build -1031769 和 Ubuntu 12.10的Windows8平台上测试通过。
需要注意的是:在完成本页面操作请先将Ardupilot代码下载到你的电脑上,并且可以使用arduino或者Make方法编译。
Step #1 安装VMWare并创建Ubuntu虚拟机
- 下载并安装VMware(搜索VMware Player或者windows平台VMware Player Plus)
- 下载Ubuntu ISO镜像文件
- 开始运行VMware,选择 Player>File>New Virtual Machine,建立一个新虚拟机
- 填写用户全称,虚拟机的用户名和密码。当你登陆你的虚拟机时将会用到。
- 命名你的虚拟机(例如 ArduCopter-SITL)
- 设置硬盘空间-保持默认20GB的最大空间,并选择“分割虚拟硬盘为多文件”
- 在“新虚拟机向导”的下一页面,电机“自定义硬件”按钮。
- 在硬件栏设置内存:3GB,处理器:4,硬盘容量:20GB,网络适配器:NAT
Step #2 初次运行VM
1、双击启动刚刚创建的虚拟机
2、当遇到任何像 “Cannot connect to the XXX device because no corresponding device is available on the host”的问题时点"No"
3、在登陆界面输入密码
4、当提示升级时选择不升级
5、打开火狐浏览器确保虚拟机能够连接网络
6、双击右上角设置时钟,选择地图中你的位置,然后“设置时间”为“自动从网络获取”
7、设置终端窗口快捷方式:点击左上角的Home图标,键入“终端(terminal)”,然后将终端应用拖拽到左边的起始栏
Step #3 设置Windows和Ubuntu虚拟机的共享文件
1、确保VM已经关闭电源:在绿色按钮的下拉菜单中选择“Power Off”(如果不是灰色)
2、在VMware虚拟机界面选择Player>Manage>Virtual Machine Settings ... > Options Tab>Shared Folders
- 选中“Always enabled”,点击Add
- 将“Host Path”设置导航到安装有ardupilot软件的文件夹位置
- 选中“Enable this share”
3、启动VM,进入系统
4、打开终端,键入“ls/mnt/hgfs
”,然后你应该能看到你刚刚设置共享的文件
5、输入“ln -s /mnt/hgfs/<foldername>
”(
Step #4 在你的VM上安装所需模块
打开终端,然后输入下面命令:
sudo apt-get update
<--用来从软件中心升级一系列包
sudo apt-get install <name>
安装下列文件(回复'y'确保你有足够的剩余空间可以使用)
- dos2unix
- python-wxgtk2.8
- python-matplotlib
- python-opencv
- python-pip
- g++
- g++-4.7
- gawk
- git
-
ccache
sudo pip install pymavlink sudo pip install mavproxy
如果你想运行ArduPlane,那么你还需要安装:
- libexpat1-dev
- auto.conf
- libtool
- automake
Step #5 按照如下Linux说明
现在你已经有了Linux的VM虚拟机,你可以参照Liunx平台软件仿真说明。
连接Mission Planner
除了使用Mavproxy地面站外(使用Python写的地面站),还可能要和Mission Planner链接,这就需要在启动命令后面添加上--viewerip=xxx.x.x.x
,也就是你电脑的IP地址,通过在cmd界面键入ipconfig
来查看你电脑的IP
注意:你可能需要尝试图片中的各个IP地址,直到地面站可以正常通信为止
那么,在Ubuntu虚拟机的终端就可以键入如下命令:
./Tools/autotest/autotest.py build.ArduCopter fly.ArduCopter logs.ArduCopter --map --viewerip=192.168.184.1
接下来首先将Mission Planner的连接方式从“COM Port”改为“UDP”
数据存储器(Dataflash)日志
当模拟开始后,以“ArduCopter.flashlog”或“CopterAVC.flashlog”命名的数据日志文件将会在“buildlogs”文件夹自动创建,该目录和ardupilot目录(包含有ArduCopter、ArduPlane和libraries目录的上层目录)处于同一级别。由于命名的不便,在打开Mission Planner之前,你需要先将这些文件改为以“.log”结尾。
链接
(over)