jmavsim软件在环仿真
jmavsim软件在环仿真
1. jmavsim环境的安装
软件在环仿真是一种以软件虚拟硬件的形式来仿真自驾仪的。搜索px4源码,可以发现大量的sitl关键字,几乎所有的设备驱动都具有软件仿真能力。
jmavsim的运行依赖于java 8。。。。。。。。。。
2. jmavsim的使用
在安装完java 8以后,我们就可以用make命令来进行仿真了。
首先打开终端,切换至firmware的下载路径,如:cd ~/downloads/px4/firmware
然后输入一下指令
make posix_sitl_default jmavsim
这句代码的意思是,编译firmware 目标代码编译为posix系统软件仿真代码,并用仿真器打开编译好的目标文件。
如果编译且运行成功,终端会出现以下信息
______ __ __ ___
| ___ \ \ \ / / / |
| |_/ / \ V / / /| |
| __/ / \ / /_| |
| | / /^\ \ \___ |
\_| \/ \/ |_/
px4 starting.
3. 在仿真环境中添加自己的代码
和普通编译一样,仿真模式也可以添加自己的模块。
路径同样在firmware/cmake/configs
在此文件夹下找到文件 posix_sitl_default.cmake
在此文件中添加自己的模块名就可以编译了。
4. 仿真环境中的启动脚本
仿真环境下,也需要有启动脚本来启动进程,如果已经编译了自己的模块,但是没有在启动脚本中启动自己的模块,模块依然是无法自动运行的。
仿真环境的启动脚本位置,会因为px4源码的版本不一样而放在不同的路径,不过不用担心,启动脚本存放的地方,仿真系统启动后会明确表示出所在路径。
首先,启动仿真器
make posix_sitl_default jmavsim
如果成功可以看到上文中描述的图案,然后我们往上搜寻,可以发现某行有如下形式的信息:
rcS_dir: posix-configs/SITL/init/lpe
这句话是说目前启动的仿真器使用的启动脚本是
posix-configs/SITL/init/lpe
所以以后我们只需要启动仿真器 然后查看rcS_dir就可以知道目前使用的启动脚本了,然后我们打开此文件,添加我们的模块启动代码,就可以在仿真器中使用我们自己写好的模块了。
5. 自定义模块在仿真器中的注意事项。
- 填坑1:自定义模块中 千万不要使用exit(0)来结束进程,在nuttx中每个模块是一个进程,使用exit没有什么影响,但是仿真环境中,整个px4固件整个是一个基于posix系统的x86构架的进程,每个模块只是一个子线程,所以如果使用exit将会直接结束仿真器的进程,我们应该把exit的地方用return 0;来代替。
- 填坑2:如果使用的是mac系统,想要用地面站的摇杆来命令仿真器中的无人机飞行的话,解锁后,一定要先讲方向摇杆旋转几圈,否则无人机会朝前方45度飞行。