赞
踩
欢迎关注公众号:编程外星人,加入技术交流群
一、使用jmavsim仿真程序
无人机半物理仿真程序就是通过软件程序模拟无人机的实际飞行状态,这使得我们可以在计算机上直接运行飞控程序,使得程序编写、测试工作省时省力。在PX4飞控程序中提供了一种简单有效的半物理仿真程序jMavSim。它使用Java程序模拟并运行无人机的仿真程序,并提供一个可视化的窗口程序方便使用者进行查看。 对于PX4飞控程序需要使用Posix编译选项,运行在普通PC电脑上,并使用jMavSim编译选项。具体命令如下:
make posix_sitl_default jmavsim
编译完成后就会在build/posix_sitl_default目录下生成一个可以在PC电脑上运行的可执行程序px4,并通过jMavSim模拟器进行运行。其运行效果如下图所示:
启动jMavSim半物理仿真之后可以在px4程序控制台下执行自动起飞命令:
- pxh> commander takeoff
- INFO [navigator] RTL HOME activated
- INFO [navigator] RTL: climb to 55 m (5 m above home)
- INFO [navigator] RTL: return at 55 m (5 m above home)
- INFO [navigator] RTL: descend to 55 m (5 m above home)
- INFO [navigator] RTL: loiter 5.0s
- INFO [navigator] RTL: land at home
- INFO [commander] Landing detected
执行上面命令之后,无人机会自动起飞,悬停5秒之后自动着陆。我们可以通过jMavSim仿真窗口看到无人机的整个起飞、悬停、降落的全部过程。 此外,我们还可以为jMavSim仿真程序设定起飞点,并通过地面站进行航迹点任务规划和执行。首先在Linux系统中的终端中设置环境变量,指定无人机的起飞点:
- export PX4_HOME_LAT=41.7028393070
- export PX4_HOME_LON=122.8985487988
- export PX4_HOME_ALT=500.000
- make posix_sitl_default jmavsim
其中,PX4_HOME_LAT为起飞点纬度,PX4_HOME_LON为起飞点经度,PX4_HOME_ALT为起飞点海拔高度。最后,再次执行编译并启动半物理仿真程序,然后打开地面站程序,就可以看到当前无人机所在的位置了,如下图所示:
注意,此时PX4程序是使用Posix标准编译并运行在普通PC电脑上的,并没有烧写到Pixhawk当中,PX4程序与地面站程序采用的是UDP网络通信来传输的Mavlink消息。
我们可以通过地面站程序在地图上设定几个航迹点,并上传到无人机,然后通过鼠标在“Start Mission”上由左至右滑动启动航迹点任务。于是PX4飞控程序则可以通过jMavSim仿真程序执行航迹点任务,如下图所示:
二、自己编写半物理仿真程序
在上一节中我们已经介绍了动力学建模的相关内容,在本节只给出仿真程序的实现代码:
上期错误更正:
由角速度乘以时间间隔得到角增量:
将角增量转为四元数增量,再由上一时刻的四元数和四元数增量得到当前时刻的四元数,最后将四元数转为欧拉角:
欢迎关注公众号:编程外星人,加入技术交流群
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。