Ardupilot 如何使用软件在环SITL
本文介绍了如何使用SITL来改变环境、模拟故障模式以及使用可选组件配置车辆。
sim_vehicle.py
SITL 可以在 Linux 下运行,使用从 Linux 或 WSL2 命令行命名的工具,或通过Mission Planner 的模拟功能。它还可以与图形可视化和/或物理建模程序(如Realflight)结合运行。
除了运行模拟之外,还需要同时运行地面控制站程序以控制模拟。使用sim_vehicle.py
,MAVProxy会自动启动。使用 Mission Planner 的模拟功能时,会用到它。您还可以连接多个 GCS,请参阅连接到不同的 GCS。
如果您刚刚开始使用 MAVProxy 和 SITL,您可能希望从阅读Copter SITL/MAVProxy 教程 (或其他车辆的等效教程)开始。
使用 sim_vehicle.py
提供启动脚本,`sim_vehicle.py
自动为当前代码分支构建SITL固件版本,加载仿真模型,启动仿真器,设置环境和车辆参数,启动MAVProxy GCS。可以指定许多脚本启动参数,键入以下内容以获得完整列表:
sim_vehicle.py --help
选择车辆/车架类型
模拟将默认为启动目录中的车辆类型。如果从任何目录启动,您可以通过使用参数调用sim_vehicle.py启动模拟器来选择车辆类型-v
。
sim_vehicle.py -v ArduPlane --console --map
帧类型也可以用-f
参数改变。
sim_vehicle.py -v ArduPlane -f quadplane --console --map
框架类型:
下面显示了帧类型的部分列表。对于当前列表,只需键入:
sim_vehicle.py --help
飞行器类型 | 架构类型 |
plane | plane (default if -f is not used) |
quadplane firefly plane-dspoilers plane-elevon plane-jet plane-tailsitter plane- vtail quadplane-cl84 quadplane-tilthvec quadplane-tilttri quadplane-tilttrivec quadplane-tri plane-3d | |
Copter | quad (default if -f is not used) |
coaxcopter dodeca-hexa heli heli-compound heli-dual hexa hexa-cwx hexa-dji octa octa-cwx octa-dji octa-quad octaquad-cwx tri cwx singlecopter y6 djix |
|
Rover | Rover rover (default if -f is not used) |
balancebot rover-skid sailboat sailboat-motor |
选择合适的帧类型很重要。这不仅加载了正确的参数集,而且选择了正确的物理模型。例如,在现实生活中,您可以为任何 QuadPlane 配置和设置 ArduPlane 固件,但如果没有为模拟选择确切的 QuadPlane
帧类型以获得正确的物理模型,您就不能在 SITL 中执行此操作。如果未选择车架类型,将加载车辆类型的默认设置,如上所示。
设置车辆起始位置
您可以通过使用参数和ardupilot/Tools/autotest/locations.txt文件中的命名位置 调用sim_vehicle.py来在特定位置使用车辆启动模拟器 。-L
例如,要在Ballarat ( locations.txt中的命名位置 )启动 Copter,请调用:
cd ArduCopter sim_vehicle.py -L Ballarat --console --map
注:您可以将自己的位置添加到文件中。顺序是 Lat、Lng、Alt、Heading,其中 alt 是 MSL,以米为单位,航向是度数。如果飞行地点被很好地使用,那么考虑通过拉取请求将其添加到项目中。
您可以将自己的私人位置添加到本地 locations.txt 文件,其格式与主文件相同。在 Linux 上,该文件位于$HOME/.config/ardupilot/locations.txt
- 您需要使用您喜欢的文本编辑器创建该文件。
加载不同的默认参数集
一组默认参数由帧类型自动选择。但是,您可以使用选项选择不同的参数文件--add-param-file=
,而不是在模拟开始后通过 GCS 手动加载它们:
sim_vehicle.py -v ArduPlane --console --map --add-param-file=<path to file>
默认工作目录将是启动 sim_vehicle.py 的目录。
“默认”参数集模拟固件中包含的参数默认值。这些在启动时用于参数,除非用户之前更改了它们的参数,在这种情况下,将使用那些更改的值。在 SITL 中,这些更改存储在仿真启动目录中名为eeprom.bin
.
如果您希望仅使用默认值启动,则可以删除该文件,或者-w
可以使用这些选项。
sim_vehicle.py -v ArduPlane --console --map --add-param-file=<path to file> -w
使用真正的串口设备
有时在 SITL 中使用真实的串行设备很有用。这使得将 SITL 连接到真实的 GPS 以进行 GPS 设备驱动程序开发,或将其连接到真实的 OSD 设备以测试 OSD 成为可能。
要使用真正的串行设备,您可以使用如下命令:
sim_vehicle.py -A "--serial2=uart:/dev/ttyUSB0" --console --map
它的作用是将 –serial2 参数传递给 ardupilot 代码,告诉它使用 /dev/ttyUSB0 而不是第二个 UART 的正常内部模拟 GPS。您可以在此处找到 SITL 串行端口映射
8个UART中的任何一个都可以这样配置,使用serial0到serial7。标准串口SERIAL1和SERIAL2分别为uartC和uartD。
通常,串行设备可以通过 FTDI 适配器连接到计算机的 USB 端口,但请注意,这些设备通常不支持半双工。为了以这种方式与设备通信,您应该确保您的用户在 linux 类型的系统上具有对拨出组的适当访问权限。
在 WSL 上,通常还需要在设备连接后设置端口,然后再尝试通过 SITL 与其交互。例如对于 COM22:
stty -F /dev/ttyS22 raw 115200
您可以在连接字符串中的 uart 上设置其他参数,例如,要仅以 115k 波特率使用 SERIAL1 上的设备,请指定:
sim_vehicle.py -v ArduCopter -A "--serial1=uart:/dev/ttyUSB0:115200" --console --map
与此类似,如果您在 Microsoft Windows 上通过 Cygwin 在 SITL 中运行车辆,并且您想通过 COM16 上连接的无线电将 MAVLink 输出发送到 AntennaTracker,您可以使用这样的命令 - 注意 Cygwin 下的通信端口是 ttyS,它们开始在 0 所以 15 相当于 COM16:
sim_vehicle.py -A "--serial1=uart:/dev/ttyS15" --console --map
使用不同的 GCS 而不是 MAVProxy
标签:10,Ardupilot,SITL,--,py,使用,vehicle,sim From: https://www.cnblogs.com/csymemory/p/17189460.html