当前位置:首页 » 编程软件 » px4编译环境

px4编译环境

发布时间: 2022-04-23 07:53:06

① 如何用开源飞控Pixhawk进行二次开发

以下所描述的都是针对px4原生固件,此外,由于固件更新过于频繁,本文描述的是15年7月的固件,主要是举例,有改动的话,自己再研究研究吧(后面换cmake编译方式了,改动蛮大)。

既然要做开发,第一步就是搭好开发环境,根据我的经验,最好是在linux环境下编译,这样效率会很快,以前在windows下编译,经常40分钟以上,这样就太影响开发了;
第二步,大概了解下固件的架构,

如果只涉及应用层的开发,那底层的nuttx系统就可以绕过去了,一般,最好先把uorb模块的机制整明白就好了,从uorb入手,了解每个话题的来源以及作用,整理数据流,清楚每个模块之间的关系即可,比如,要实现手动模式,哪些模块互相交互,auto模式,又有哪些模块起作用,
如果涉及相应算法的开发,要学会定位到相应的算法模块,甚至具体到哪些代码,比如,你想试验你的姿态估计算法,那你就将姿态估计模块替换掉即可,不过相应的接口仍需要和px4环境一样,以姿态估计为例,最后要发布你的vehicle_attitude话题,不然无法与其他模块交互;

另外,不要试图在代码中找main函数,那是单片机思维,你只需看启动脚本即可,\ROMFS\px4fmu_common\init.d\rcs;
第三步,针对你的具体情况,定位相应的模块,进行精读研究,虽然模块基本是用C++写的,但是不会C++也没关系,毕竟又不是让你写,本人倒目前为止,也不会C++,配合注释,看明白就好了,比如,整理下mavlink的控制流程;

px4原生固件模块列表:
系统命令程序
mavlink –通过串口发送和接收mavlink信息
sdlog2 –保存系统日志/飞行数据到SD卡
tests –测试系统中的测试程序
top –列出当前的进程和CPU负载
uORB – 微对象请求代理器-分发其他应用程序之间的信息
驱动
mkblctrl–blctrl电子模块驱动
esc_calib –ESC的校准工具
fmu –FMU引脚输入输出定义
gpio_led –GPIOLED驱动
gps –GPS接收器驱动
pwm –PWM的更新速率命令
sensors –传感器应用
px4io –px4io驱动
uavcan –uavcan驱动
飞行控制的程序
飞行安全和导航
commander –主要飞行安全状态机
navigator –任务,失效保护和RTL导航仪
估计姿态和位置
attitude_estimator_ekf –基于EKF的姿态估计
ekf_att_pos_estimator –基于EKF的姿态和位置估计
position_estimator_inav–惯性导航的位置估计
multirotor姿态和位置控制器
mc_att_control–multirotor姿态控制器
mc_pos_control –multirotor位置控制器
fixedwing姿态和位置控制器
fw_att_control –固定翼飞机的姿态控制
fw_pos_control_l1 –固定翼位置控制器
垂直起降姿态控制器
vtol_att_control –垂直起降姿态控制器
最后提一句,多看看官网的说明,另外根据本人的经验来看,由于大框架,代码人家都写好了,通常你要加功能,所修改的也就几行代码而已,举例说明,比如px4固件只能在手动模式解锁,假如我要修改成定高模式解锁

② pixhawk 开发环境要安装ubuntu吗

1.首先安装Ubuntu 14.04 LTS,一路默认安装就可以了,具体的过程可以自己上网查询,64位与32位没有区别。Linux下是区分大小写的,在使用过程中一定注意大小写字母,安装过程中分多次要求输入密码!
安装可选软件:(终端启用键Ctrl+Alt+T)
安装五笔输入法软件
sudo apt-get install ibus-table-wubi
安装NotePad++,查看源码工具,我是在Linux下查看代码用的,你可以自己选择其它的
sudo add-apt-repository ppa:notepadqq-team/notepadqq
sudo apt-get update
sudo apt-get install notepadqq
NotePad++的卸载方法:
sudo apt-get remove notepadqq
sudo add-apt-repository --removeppa:notepadqq-team/notepadqq

其它软件根据自己的情况自己安装。
2.将当前用户添加进dialout组中,应该是获取一定的权限
sudo usermod -a -G dialout $USER
3.git源码到本地
首先安装git软件
sudo apt-get install git
创建源码目录
mkdir -p~/src
cd ~/src
git软件源码

cd Firmware
git submole update --init--recursive
cd ..
4.安装cmake,这个很重要,安装完成后可以使用cmake -v来查看是否成功!
sudo add-apt-repository ppa:george-edison55/cmake-3.x -y
sudo apt-get update
sudo apt-get install cmake
5.安装python相关,注意“\”是续行符号,与下一行是一个命令
sudo apt-get install python-argparse git-core wget zip \
python-empy qtcreator cmake build-essential -y
6.删除串口模式管理器
sudo apt-get remove modemmanager
7.更新软件包
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded -y
sudo apt-get update
注意:下在这些是一个命令,“\”是续行符号,与下一行是一个命令,千万不能分开,复制命令时可以不复制 \,自己手工加上\
sudo apt-get install python-serial openocd \
flex bison libncurses5-dev autoconf texinfobuild-essential \
libftdi-dev libtool zlib1g-dev genromfs \
python-empy
8.安装对应的GCC
Ubuntu 14.04 (Trusty) and 14.10,执行以下命令,其它版本暂时不了解,自己Bai吧
sudo apt-get install gcc-arm-none-eabi -y

编译源码,V2是指的Pixhawk
cdFirmware
makepx4fmu-v2_default
首先编译需要时间20分钟,网速决定!
显示以下为编译成功:

LinkingCXX executable firmware_nuttx
[100%]Built target firmware_nuttx
Scanningdependencies of target build_firmware_px4fmu-v2
[100%]Generating nuttx-px4fmu-v2-default.px4
[100%]Built target build_firmware_px4fmu-v2

执行make px4fmu-v2_default 进行编译,过程中会自动git需要的文件。

备注,下面命令与此编译无关

安装交叉编译环境

sudo apt-get install rpm
sudo apt-get install gdb
sudo apt-get install genromfs

③ 自己画的px4需要刷bootloader吗

在这里我不特别区分 APM, ArCopter, pixhawk, PX4, PIX。
实际上 pixhawk可以在 Windows, Linux, MAC上编译。这里选择 xubuntu作为开发环境为个人意愿,个人比较钟情与 Linux中简单而高效的命令行。有人做过测试,MAC编译代码只需几分钟,但是我毕竟没有 MAC也就只好退而求其次。
但其实我编译源码使用的也只是虚拟机而已。但即便是虚拟机也比在 Windows编译要高效得多。

④ 关于linux系统搭建飞控系统时遇到的一堆红字报错的问题

  • 你用的是python2.7?

  • 这个报错是安装的时候请求超时

  • 建议下载离线包 安装

  • 希望可以帮助你 请采纳

⑤ 怎样用eclipse编译 pixhawk px4飞控源码

在window->proferences的设置对 project不起作用需要在 project-> properties 中对 c/c++ make project 的 binary parse 进行设置到 win 下。

⑥ 如何升级px4-toolchin中的arm-none-eabi

eabi是arm新的二进制文件接口的标准,elf是二进制目标文件的格式,而名称为arm-elf的编译器一般是老的OABI接口,裸奔程序到影响不大,在嵌入式linux中,要注意系统的接口,是老的oabi还是eabi,新的内核一般是eabi接口,但编译内核时会有兼用oabi接口的选项,默认是没选择的,需要的话编译时需要手动选上

⑦ 关于上位机如何控制pixhawk

商业转载请联系作者获得授权,非商业转载请注明出处。
链接:
来源:知乎
以下所描述的都是针对px4原生固件,此外,由于固件更新过于频繁,本文描述的是15年7月的固件,主要是举例,有改动的话,自己再研究研究吧(后面换cmake编译方式了,改动蛮大)。

既然要做开发,第一步就是搭好开发环境,根据我的经验,最好是在linux环境下编译,这样效率会很快,以前在windows下编译,经常40分钟以上,这样就太影响开发了;
第二步,大概了解下固件的架构,

如果只涉及应用层的开发,那底层的nuttx系统就可以绕过去了,一般,最好先把uorb模块的机制整明白就好了,从uorb入手,了解每个话题的来源以及作用,整理数据流,清楚每个模块之间的关系即可,比如,要实现手动模式,哪些模块互相交互,auto模式,又有哪些模块起作用,
如果涉及相应算法的开发,要学会定位到相应的算法模块,甚至具体到哪些代码,比如,你想试验你的姿态估计算法,那你就将姿态估计模块替换掉即可,不过相应的接口仍需要和px4环境一样,以姿态估计为例,最后要发布你的vehicle_attitude话题,不然无法与其他模块交互;

另外,不要试图在代码中找main函数,那是单片机思维,你只需看启动脚本即可,\ROMFS\px4fmu_common\init.d\rcs;
第三步,针对你的具体情况,定位相应的模块,进行精读研究,虽然模块基本是用C++写的,但是不会C++也没关系,毕竟又不是让你写,本人倒目前为止,也不会C++,配合注释,看明白就好了,比如,整理下mavlink的控制流程;

px4原生固件模块列表:
系统命令程序
mavlink –通过串口发送和接收mavlink信息
sdlog2 –保存系统日志/飞行数据到SD卡
tests –测试系统中的测试程序
top –列出当前的进程和CPU负载
uORB – 微对象请求代理器-分发其他应用程序之间的信息
驱动
mkblctrl–blctrl电子模块驱动
esc_calib –ESC的校准工具
fmu –FMU引脚输入输出定义
gpio_led –GPIOLED驱动
gps –GPS接收器驱动
pwm –PWM的更新速率命令
sensors –传感器应用
px4io –px4io驱动
uavcan –uavcan驱动
飞行控制的程序
飞行安全和导航
commander –主要飞行安全状态机
navigator –任务,失效保护和RTL导航仪
估计姿态和位置
attitude_estimator_ekf –基于EKF的姿态估计
ekf_att_pos_estimator –基于EKF的姿态和位置估计
position_estimator_inav–惯性导航的位置估计
multirotor姿态和位置控制器
mc_att_control–multirotor姿态控制器
mc_pos_control –multirotor位置控制器
fixedwing姿态和位置控制器
fw_att_control –固定翼飞机的姿态控制
fw_pos_control_l1 –固定翼位置控制器
垂直起降姿态控制器
vtol_att_control –垂直起降姿态控制器
最后提一句,多看看官网的说明,另外根据本人的经验来看,由于大框架,代码人家都写好了,通常你要加功能,所修改的也就几行代码而已,举例说明,比如px4固件只能在手动模式解锁,假如我要修改成定高模式解锁

希望可以帮助你,欢迎采纳

⑧ ubuntu 环境下怎样编译pixhawk px4源码

Ubuntu环境下Pixhawk原生固件PX4的编译
分类:无人机ubuntu代码编译Pixhawk
(3946) (6)
Ubuntu下Pixhawk原生固件PX4的编译这个问题困扰了两天时间,可能是博主脑力不够,主要是环境搭建不起来,主要原因应该是路径的原因,最后在大师傅的帮助下还好成功将路径搭建好,成功编译。

下面就跟大家分享一下环境搭建的过程。

1.操作环境

每次写文章,环境一定要介绍的,不同的环境总会出现不同的问题

我的环境是Windows下面安装虚拟机,虚拟机跑Ubuntu

Windows:win10 64位

虚拟机:VMware Workstation 12 Pro 12.1.0 build-3272444

Ubuntu:Ubuntu15.10

2.编译环境搭建

(1)权限设置

官方提示:

Warning Never ever fix permission problems by using 'sudo'. It will create more permission problems in the process and require a system reinstallation to fix them.
意思是你会遇到权限问题,不要用sudo解决,那样会带来更多问题,但是我没听他的,我没用,最后也是实现了

官方提供指令

[plain] view plain

然后注销,重新登录生效

(2)安装

更新包列表,安装下面编译PX4的依赖包。PX4主要支持的系列:

NuttX based hardware: Pixhawk, Pixfalcon
Snapdragon Flight hardware: Snapdragon
Raspberry Pi hardware: Raspberry Pi 2
Host simulation: jMAVSim SITL and Gazebo SITL

注意:安装Ninja Build System可以比make更快进行编译。如果安装了它就会自动选择使用它进行编译。

[plain] view plain
卸载模式管理器

[plain] view plain

更新包列表和安装下面的依赖包。务必安装指定的版本的包

[plain] view plain

上面代码中红色部分大家需要一高警惕,gcc-arm-none-eabi版本导致PX4/Firmware编译错误,现在apt-get安装的gcc-arm-none-eabi基本上是4.9的版本,但是这个固件需要gcc-arm-none-eabi 4.8de 版本,所以最后安装好以后,查看你的gcc-arm-none-eabi版本,如果是4.9需要手动安装4.8的版本,安装gcc-arm-none-eabi 4.8的版本的方法如下:

[plain] view plain

【Warning】上面红色的路径一定要添加正确,不然问题很多,我第一次就输入错误,结果结果开不了机了,反复输入密码。博主装的是Ubuntu 64位系统,而上述arm-none-eabi是直接下载的编译好的32位,还需要安装一个东西
[plain] view plain
可以检查arm-none-eabi 4.8.4是否安装成功,输入以下指令:

[plain] view plain
如果出现如上信息,交叉编译环境搭建就搭建成功了
(3)代码编译
根据PX4中文维基官网教程。
安装Git

[plain] view plain
下载代码

[plain] view plain
初始化
先进入Firmware文件夹,进而进行初始化、更新子模块操作,耐心的等待……

[plain] view plain
权限
编译时会遇到权限问题,执行指令

[plain] view plain
-R 是对文件下面包含的子文件权限问题,* 是对所有文件的权限问题
编译

[plain] view plain
注意到“make”是一个字符命令编译工具,“px4fmu-v2”是硬件版本,“default”是默认配置,所有的PX4编译目标遵循这个规则。
最后附一张编译成功的代码,如果这样你还有问题,请给我留言。

[plain] view plain
-- nuttx-px4fmu-v2-default
-- The ASM compiler identification is GNU
-- Found assembler: /opt/gcc-arm-none-eabi-4_8-2014q3/bin/arm-none-eabi-gcc
-- Found PythonInterp: /usr/bin/python (found version "2.7.10")
-- Using C++03
-- Release build type: RelWithDebInfo
-- Adding UAVCAN STM32 platform driver
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lihongwei/Documents/Firmware/build_px4fmu-v2_default
#+@Tools/check_submoles.sh
PX4 CONFIG: px4fmu-v2_default
Scanning dependencies of target git_mavlink
Scanning dependencies of target git_uavcan
Scanning dependencies of target git_gencpp
Scanning dependencies of target git_genmsg
[ 0%] Generating git_init_mavlink_include_mavlink_v1.0.stamp
[ 0%] Generating git_init_src_moles_uavcan_libuavcan.stamp
[ 0%] Generating git_init_Tools_genmsg.stamp
[ 0%] Generating git_init_Tools_gencpp.stamp
[ 0%] Built target git_uavcan
[ 0%] Built target git_mavlink
[ 0%] Built target git_genmsg
[ 0%] Built target git_gencpp

⑨ linux程序编译px4,怎么找原因

大部分linux系统都安装了g++(gcc) 可以在linux命令行模式下用g++ 的方法编译 其实有很多跨平台的IDE如codeblocks,还有一些强大的文本编辑器如gvim都可以在linux下输入,编译,调试 linux是许多oier的选择

⑩ 怎么将编译过的px4固件还原成原生固件

按以下步骤可以恢复: ①抬起打印头 ②按〈i〉键,等待蜂鸣声 ③快速按以下键〈▼〉→〈▲/ESC〉→〈▲/ESC〉→〈 〉 ④此时将显示以下信息:FACTEOY DEFOULT?(出厂默认值) ENTER=YES ESC=NO (ENTER=是,ESC=否) ⑤在10秒钟内按〈ENTER〉可以将打印机重置为出厂默认值,参数将被重置,打印机将正常启动。 如果按了 〈▲/ESC〉,或等到10秒超时以过,则正常启动将继续,而不进行重置。 注意:出厂默认值将删除所有用于存储设置的文件,删除文件时他不会重置已读取的设置。这表示EASY LAN、WIRE—LESS设置(SSID,密码等)会保持其上次启动时的值。但是下次重新引导时会将它们重置为出厂默认值。 其他问题找 深圳万盛泽电子公司可以帮您!

热点内容
google地球无法连接到数据库 发布:2025-04-04 22:57:24 浏览:960
安卓的耳机孔在哪里 发布:2025-04-04 22:57:21 浏览:14
酷我听书外置存储卡 发布:2025-04-04 22:52:50 浏览:612
编译比赛 发布:2025-04-04 22:49:51 浏览:135
苹果一键清理缓存软件 发布:2025-04-04 22:34:44 浏览:415
手机uc浏览器缓存电影怎么删除 发布:2025-04-04 22:21:12 浏览:271
theandroid作文 发布:2025-04-04 22:20:23 浏览:11
安卓电视盒子如何看翡翠台 发布:2025-04-04 22:15:14 浏览:71
php函数中的函数 发布:2025-04-04 22:10:04 浏览:600
等值面算法 发布:2025-04-04 22:05:51 浏览:627