<br />
__start函数调用Firmware/NuttX/nuttx/sched/os_start.c中的os_start函数,负责os的底层初始化,包括队列和进程结构等。
<br />
os_start函数调用Firmware/NuttX/nuttx/sched/os_bringup.c中的os_bringup函数,负责os基本进程的启动和用户进程的启动。用户启动入口由CONFIG_USER_ENTRYPOINT宏定义进行指定。
<br />
FMU和IO的启动入口不同,分别为:
(1)FMU中CONFIG_USER_ENTRYPOINT宏定义为nsh_main:
[1] 调用nsh_main函数。
[2] nsh_main函数调用Firmware/NuttX/apps/nshlib/竖并nsh_consolemain.c中nsh_consolemain函余乱迹数。
[3] nsh_consolemain函数调用nsh_initscript函数。
[4] nsh_initscript函数所执行的脚本即为FMU的启动脚陪孝本rcS。
[5] rcS脚本中负责挂载Sd卡,启动uorb,加载参数配置文件,启动dataman数据管理,启动各传感器,commander,执行rc.io,执行rc.interface(混控器),执行rc.mc_app(飞控姿态与位置算法)等。
(2)IO中CONFIG_USER_ENTRYPOINT宏定义为user_main:
调用src/modules/px4iofirmware/px4io.c中的user_start函数,负责IO基础环境的初始化,包括PWM,串口,ADC等,最后进入死循环,用于遥控器输入和与FMU通信的内容。
我们来看下Ubuntu各版本对应的gazebo关系,安装时要注意各版本的对应关系如下:请注意ubuntu18对应melodic,ubuntu16对应kinetic
Ubuntu 14.04 Trusty Tahr - ROS Indigo Igloo - Gazebo 2.X 2014-2019
Ubuntu 16.04 Xenial Xerus - ROS Kinetic Kame - Gazebo 7.X 2016-2021
Ubuntu 18.04 Bionic Beaver - ROS Melodic Morenia - Gazebo 9.X 2018-2023
我采用的是塌颂渗Ubuntu18.04 安装ROS melodic
要先换源,包括source.list和source.list.d文件夹下面的ros-latest.list(没有就创建)
实测发现,Ubuntu的源用清华的,ROS源用中科大的,综合效果最好
换完源以后安装ROS,直接装的是desktop-full,这样自动装了gazebo9
ROS安装完毕,安装mavros,直接用二进制安装,最方便
mavros负责master和px4之间的通信,接下来安装编译px4,这是最慢也是最容易出错的一步,一定要确保网络良好,第一步一般要花一个多小时、后面稍微快一点
这时px4就安装好了,这个文件夹叫Firmware,但实际上编译以后会生成一个可执行文件叫px4,所以都是roslaunch px4 什么什团脊么
接下来,修改环境变量
环樱逗境变量修改好了,source ~/.bashrc以后通过gazebo看看可不可以启动
第一行会d出此时选择的px4的版本,建议用1.8.0,在前一个虚拟机上试过1.9.0但是跑不起来
如果成功出现gazebo,里面看上去是荒芜的一望无垠的世界停着一架小飞机,那么px4的仿真环境就安装完成了,可以关掉,然后roslaunch启动
在rostopic list里看到有个/mavros/state 用echo查看 connect为true 则mavros和px4通信成功
若添加权限以后仍报错,则考虑修改Cmakelist添加include包含库
打开CMakeList文件看看include_directories列表
include_directories(
include
../riki_msgs
${catkin_INCLUDE_DIRS}
)
将riki_base.h中的分号位置做如下修改
这个是别人的报错,他的git网络配置出现问题,显示git拒绝连接
使用git config --global设置用户名和邮件
使用-l查看配置 --edit编辑配置
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)