English
登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
原创商城
官方淘宝
二手市场
学院
云课堂
考试
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
联机
航空人生(连飞)
飞行人生(虚航)
空管人生(虚管)
空战人生(对战)
工具
联飞地图
航路查询
航图查询
气象报文
资源
插件库
素材库
云网盘
企业
飞行者联盟
»
论坛
›
【模拟飞行】
›
FlightGear
›
问答专区
›
Linux系统ubuntu20.04 无人机PX4 开发环境搭建(失败率很 ...
返回列表
发新帖
查看:
855
|
回复:
0
Linux系统ubuntu20.04 无人机PX4 开发环境搭建(失败率很低)
[复制链接]
我什么都不知道
我什么都不知道
当前离线
UID
4928
注册时间
2014-4-13
在线时间
小时
最后登录
1970-1-1
精华
阅读权限
30
听众
收听
雷达卡
发表于 2024-7-15 08:13:51
|
显示全部楼层
|
阅读模式
PX4固件下载
PX4的源码处于GitHub,因为众所周知的原因git clone经常失败,此处从Gitee获取PX4源码和依赖模块。
git clone https://gitee.com/voima/PX4-Autopilot.git
正克隆到 ‘PX4-Autopilot’…
remote: Enumerating objects: 454209, done.
remote: Total 454209 (delta 0), reused 0 (delta 0), pack-reused 454209
接收对象中: 100% (454209/454209), 215.48 MiB | 2.32 MiB/s, 完成.
处理 delta 中: 100% (334699/334699), 完成.
使用cd命令切换到 px4项目文件目录:
cd ~/PX4-Autopilot
使用以下命令切换版本,以V1.14.0为例:
git checkout v1.14.0 #切换到1.14.0分支,当然也可以尝试其他版本
因为PX4的完整项目是嵌套子模块存储的,以上命令只下载了px4的基本代码,所以我们要进行子模块的下载,运行下列命令:
git submodule update --init --recursive # 在~/PX4-Autopilot目录下执行
以上命令中,submodule是子模块的意思, —init 选项会初始化,并注册子模块的地址,—recursive选项会递归克隆子模块。
此更新的链接来源于
~/PX4-Autopilot/.gitmodules(注意是隐藏文件)
将文件打开,粘贴到下面,可以看到里面都github的地址,直接用上面的命令,会很难成功
[submodule "src/modules/mavlink/mavlink"] path = src/modules/mavlink/mavlink url = https://github.com/mavlink/mavlink.git branch = master[submodule "src/drivers/uavcan/libuavcan"] path = src/drivers/uavcan/libuavcan url = https://github.com/dronecan/libuavcan.git branch = main[submodule "Tools/simulation/jmavsim/jMAVSim"] path = Tools/simulation/jmavsim/jMAVSim url = https://github.com/PX4/jMAVSim.git branch = main[submodule "Tools/simulation/gazebo-classic/sitl_gazebo-classic"] path = Tools/simulation/gazebo-classic/sitl_gazebo-classic url = https://github.com/PX4/PX4-SITL_gazebo-classic.git branch = main[submodule "src/drivers/gps/devices"] path = src/drivers/gps/devices url = https://github.com/PX4/PX4-GPSDrivers.git branch = main[submodule "platforms/nuttx/NuttX/nuttx"] path = platforms/nuttx/NuttX/nuttx url = https://github.com/PX4/NuttX.git branch = px4_firmware_nuttx-10.3.0+-v1.14[submodule "platforms/nuttx/NuttX/apps"] path = platforms/nuttx/NuttX/apps url = https://github.com/PX4/NuttX-apps.git branch = px4_firmware_nuttx-10.3.0+[submodule "Tools/
flightgear
_bridge"] path = Tools/simulation/flightgear/flightgear_bridge url = https://github.com/PX4/PX4-FlightGear-Bridge.git[submodule "Tools/simulation/jsbsim/jsbsim_bridge"] path = Tools/simulation/jsbsim/jsbsim_bridge url = https://github.com/PX4/px4-jsbsim-bridge.git[submodule "src/drivers/cyphal/libcanard"] path = src/drivers/cyphal/libcanard url = https://github.com/opencyphal/libcanard.git[submodule "src/drivers/cyphal/public_regulated_data_types"] path = src/drivers/cyphal/public_regulated_data_types url = https://github.com/opencyphal/public_regulated_data_types.git[submodule "src/drivers/cyphal/legacy_data_types"] path = src/drivers/cyphal/legacy_data_types url = https://github.com/PX4/public_regulated_data_types.git branch = legacy[submodule "src/lib/crypto/monocypher"] path = src/lib/crypto/monocypher url = https://github.com/PX4/Monocypher.git branch = px4[submodule "src/lib/events/libevents"] path = src/lib/events/libevents url = https://github.com/mavlink/libevents.git branch = main[submodule "src/lib/crypto/libtomcrypt"] path = src/lib/crypto/libtomcrypt url = https://github.com/PX4/libtomcrypt.git branch = px4[submodule "src/lib/crypto/libtommath"] path = src/lib/crypto/libtommath url = https://github.com/PX4/libtommath.git branch = px4[submodule "src/modules/uxrce_dds_client/Micro-XRCE-DDS-Client"] path = src/modules/uxrce_dds_client/Micro-XRCE-DDS-Client url = https://github.com/PX4/Micro-XRCE-DDS-Client.git branch = px4
将其更新为 gitee 的地址,已经整理测试好了,直接替换掉文件的内容即可
[submodule "src/modules/mavlink/mavlink"] path = src/modules/mavlink/mavlink url = https://gitee.com/wtp95/mavlink.git branch = master[submodule "Tools/flightgear_bridge"] path = Tools/simulation/flightgear/flightgear_bridge url = https://gitee.com/seokhb/PX4-FlightGear-Bridge.git[submodule "Tools/simulation/gazebo-classic/sitl_gazebo-classic"] path = Tools/simulation/gazebo-classic/sitl_gazebo-classic url = https://gitee.com/seokhb/PX4-SITL_gazebo-classic.git branch = main[submodule "Tools/simulation/jmavsim/jMAVSim"] path = Tools/simulation/jmavsim/jMAVSim url = https://gitee.com/seokhb/jMAVSim.git branch = main[submodule "Tools/simulation/jsbsim/jsbsim_bridge"] path = Tools/simulation/jsbsim/jsbsim_bridge url = https://gitee.com/seokhb/px4-jsbsim-bridge.git[submodule "platforms/nuttx/NuttX/apps"] path = platforms/nuttx/NuttX/apps url = https://gitee.com/seokhb/NuttX-apps.git branch = px4_firmware_nuttx-10.3.0+[submodule "platforms/nuttx/NuttX/nuttx"] path = platforms/nuttx/NuttX/nuttx url = https://gitee.com/seokhb/NuttX.git branch = px4_firmware_nuttx-10.3.0+-v1.14[submodule "src/drivers/cyphal/public_regulated_data_types"] path = src/drivers/cyphal/public_regulated_data_types url = https://gitee.com/seokhb/public_regulated_data_types.git[submodule "src/drivers/cyphal/legacy_data_types"] path = src/drivers/cyphal/legacy_data_types url = https://gitee.com/jiyuanwangxs/legacy_data_types.git branch = legacy[submodule "src/drivers/cyphal/libcanard"] path = src/drivers/cyphal/libcanard url = https://gitee.com/seokhb/libcanard.git[submodule "src/drivers/gps/devices"] path = src/drivers/gps/devices url = https://gitee.com/seokhb/PX4-GPSDrivers.git branch = main[submodule "src/drivers/uavcan/libuavcan"] path = src/drivers/uavcan/libuavcan url = https://gitee.com/seokhb/libuavcan.git[submodule "src/lib/crypto/libtomcrypt"] path = src/lib/crypto/libtomcrypt url = https://gitee.com/seokhb/libtomcrypt.git branch = px4[submodule "src/lib/crypto/libtommath"] path = src/lib/crypto/libtommath url = https://gitee.com/seokhb/libtommath.git branch = px4[submodule "src/lib/crypto/monocypher"] path = src/lib/crypto/monocypher url = https://gitee.com/seokhb/Monocypher.git branch = px4[submodule "src/lib/events/libevents"] path = src/lib/events/libevents url = https://gitee.com/seokhb/libevents.git branch = main[submodule "src/modules/uxrce_dds_client/Micro-XRCE-DDS-Client"] path = src/modules/uxrce_dds_client/Micro-XRCE-DDS-Client url = https://gitee.com/seokhb/Micro-XRCE-DDS-Client.git branch = px4
然后执行下面的命令,就可以
git submodule update --init --recursive
有的子模块还是走的github,失败了就多试几次,直到用上面命令不再下载东西了就可以了
开发环境搭建
PX4的完整代码已经下载完了,接下来就是配置开发环境。PX4源码中已经提供了开发环境配置的脚本,在/PX4-Autopilot/Tools/setup目录中,该目录下的文件如下:
可以看到里面有Arch/Macos和ubuntu系统的配置脚本。
ubuntu系统,运行ubuntu.sh文件
这是一个脚本文件,里面是一些bash命令,可以理解为一系列下载px4开发环境的代码。在上图界面右键选择在终端打开,使用下列命令运行:
bash ubuntu.sh
如果出现很多错误,和镜像源有关,那么则手动安装一些模块
sudo apt install python3-pippip3 install kconfiglibpip3 install --user jinja2pip3 install --user jsonschemasudo apt-get updatesudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
然后需配置~/.bashrc文件,打开该文件,在底部添加如下内容,保存。
# >>> PX4 initialize >>>source ~/PX4-Autopilot/Tools/simulation/gazebo-classic/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_defaultexport ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilotexport ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic# <<< PX4 initialize <<<
然后进行编译
cd ~/PX4-Autopilot # 也可以 roscd px4make px4_sitl_default gazebo```cd ~/PX4-Autopilot 如果出现下面的错误,一直在等待master
> [Msg] Waiting for master.[Err] [ConnectionManager.cc:121] Failed to connect to master in 30 seconds.[Err] [gazebo_shared.cc:78] Unable to initialize transport.[Err] [gazebo_client.cc:56] Unable to setup Gazebo![](https://guyueju.oss-cn-beijing.aliyuncs.com/Uploads/Editor/202405/20240531_41722.png)
则需要在.bashrc文件的最后一行加入
```csource /opt/ros/noetic/setup.bash
然后再启动
终端出现如下,gazebo启动,中间有个小飞机,则代表开发环境搭建成功
MAVROS安装
安装geographiclib数据库(GeographicLib是一个用于解决地理坐标转换、大地测量(geodesy)和地图投影等问题的库,广泛用于航空航天和GIS(地理信息系统)领域)
安装MAVROS
sudo apt install ros-noetic-mavros ros-noetic-mavros-extras
准备解压 …/ros-noetic-mavros_1.18.0-1focal.20240304.150259_amd64.deb …
正在解压 ros-noetic-mavros (1.18.0-1focal.20240304.150259) 并覆盖 (1.15.0-1focal
.20230216.003459) …
准备解压 …/ros-noetic-mavros-extras_1.18.0-1focal.20240304.151354_amd64.deb .
..
正在解压 ros-noetic-mavros-extras (1.18.0-1focal.20240304.151354) 并覆盖 (1.15.0
-1focal.20230216.014052) …
正在设置 ros-noetic-mavros (1.18.0-1focal.20240304.150259) …
正在设置 ros-noetic-mavros-extras (1.18.0-1focal.20240304.151354) …
安装geographiclib数据库(GeographicLib是一个用于解决地理坐标转换、大地测量(geodesy)和地图投影等问题的库,广泛用于航空航天和GIS(地理信息系统)领域)
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.shsudo chmod a+x ./install_geographiclib_datasets.shsudo ./install_geographiclib_datasets.sh
检查MAVROS是否安装成功可输入如下命令:
roslaunch px4 mavros_posix_sitl.launch
新打开一个终端,输入:
rostopic echo mavros/state
header:
seq: 27
stamp:
secs: 27
nsecs: 524000000
frame_id: ‘’
connected: True
armed: False
guided: True
manual_input: False
mode: “AUTO.LOITER”
system_status: 3
看到connected为True 则 MAVROS安装成功
安装地面站QGC
首先执行下面指令
sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
安装一些依赖库
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -ysudo apt install libfuse2 -ysudo apt install libxcb-xinerama0 libxkbcommon-x11-0 libxcb-cursor0 -y
然后系统登出再登入,确定改变了用户权限
下面开始安装QGC
下载QGroundControl.AppImage,
下载链接(https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage)
将该文件移动到主目录下面
通过指令更改权限,和运行
chmod +x ./QGroundControl.AppImage./QGroundControl.AppImage
然后会运行QGC的软件
之后双击 QGroundControl.AppImage 图标也可以运行该软件
点击“阅读原文”查看详情
flightgear
相关帖子
•
【源码】FlightGear操纵杆控制的F16非线性六自由度模型
•
当飞机驾驶员是种什么感觉? 在 Linux 下体验飞行模拟器
•
FlightGear 用什么平台写的?VC,Qt,...
•
FlightGear V1.91.中飞机怎么起飞?
•
关于Flight Gear
•
开源科学工程技术软件介绍 – 飞行模拟器FlightGear
•
使用FlightGear 翱翔天空
•
flight gear 支持机械/结构故障模拟吗?
•
如何修改FlightGear里的飞行器模型(导弹,火箭)
•
...一个飞行员模型怎样把驾驶信号输入给flightgear呢
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表