Ubunutu18.04 ROS melodic 无人机 XTDrone PX4 仿真平台配置
一、依赖安装
sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python-pip python3-pip gawk
pip2 install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml
pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse
安装catkin-tools:(之后可以单独编译工作空间中的功能包,便于排查错误)
sudo apt install python3-catkin-tools
新建一个工作空间:
mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts
cd catkin_ws && catkin init
catkin build
二、Gazebo重新安装
2.1卸载之前的gazebo
sudo apt-get remove gazebo*
sudo apt-get remove libgazebo*
sudo apt-get remove ros-melodic-gazebo*
2.2安装gazebo 9.1
(1)设置计算机以接受来自package.osrfoundation.org的软件
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
cat /etc/apt/sources.list.d/gazebo-stable.list
#出现deb http://packages.osrfoundation.org/gazebo/ubuntu-stable xenial main表示没问题
(2)设置密钥
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update
(3)安装gazebo9.1
sudo apt-get install gazebo9=9.1*
sudo apt install ros-melodic-gazebo9-*
sudo apt install ros-melodic-gazebo-*
(4)XTDrone中对Gazebo的ROS插件做了修改,因此需要源码编译 :
安装依赖:
sudo apt-get install ros-melodic-moveit-msgs ros-melodic-object-recognition-msgs ros-melodic-octomap-msgs ros-melodic-camera-info-manager ros-melodic-control-toolbox ros-melodic-polled-camera ros-melodic-controller-manager ros-melodic-transmission-interface ros-melodic-joint-limits-interface
XTDrone源码下载
git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git submodule update --init --recursive
安装编译插件
cd ~/catkin_ws
cp -r ~/XTDrone/sitl_config/gazebo_ros_pkgs src/
catkin build
之后验证是否安装成功:
roscore
source ~/catkin_ws/devel/setup.bash
rosrun gazebo_ros gazebo
三、MAVROS安装
在安装之前,请先更新软件库:
sudo apt-get update
sudo apt-get upgrade
开始安装:
sudo apt install ros-melodic-mavros ros-melodic-mavros-extras
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间
四、PX4配置
git clone https://github.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.11.0-beta1
git submodule update --init --recursive
sudo make px4_sitl_default gazebo
编译完成后,会弹出Gazebo界面,将其关闭即可。
gedit ~/.bashrc
之后打开~/.bashrc,加入以下代码,注意路径匹配,前两个source顺序不能颠倒。
source ~/catkin_ws/devel/setup.bash
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo
之后再source一下:
source ~/.bashrc
然后运行如下命令,此时会启动Gazebo,如下图所示。
cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch

但是大概率会报这个错:
ERROR [px4] is_server_running: failed to create lock file: /tmp/px4_lock-0, reason=Permission denied
ERROR [px4_daemon] error binding socket /tmp/px4-sock-0, error = Address already in use
ERROR [px4] is_server_running: failed to create lock file: /tmp/px4_lock-0, reason=Permission denied
ERROR [px4] Failed to communicate with daemon: Permission denied
原因是锁的权限不够。注意下面的usename 是自己的用户名
cd /tmp
sudo chmod 777 px4_lock-0
sudo chmod 777 px4-sock-0
sudo chown username px4_lock-0
sudo chown username px4-sock-0
成功打开gazebo后,我们检查与mavros连接是否正常
rostopic echo /mavros/state
若connected: True,则说明MAVROS与SITL通信成功。如果是false,一般是因为.bashrc里的路径写的不对,仔细检查。
五、安装地面站QGroundControl
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 -y
下载QGroundControl.AppImage
下载完成后,进入到QGroundControl.AppImage相应的目录,修改QGroundControl.AppImage权限:
chmod +x ./QGroundControl.AppImage
然后双击QGroundControl.AppImage或者在终端切换到QGroundControl.AppImage目录后,输入以下命令即可打开地面站:
./QGroundControl.AppImage
六、XTDrone替换模型
cp sensing/gimbal/gazebo_gimbal_controller_plugin.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src/
cp sitl_config/init.d-posix/rcS ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models/
cp -r sitl_config/launch/* ~/PX4_Firmware/launch/
cd ~/.gazebo/models/
rm -r stereo_camera/ 3d_lidar/ 3d_gpu_lidar/ hokuyo_lidar/
由于修改了PX4 sitl_gazebo中的gazebo_gimbal_controller_plugin.cpp(源代码不能控制多无人机的云台),要再编译一次。
cd ~/PX4_Firmware
sudo make px4_sitl_default gazebo
每次编译PX4后都要重新添加锁的权限:(username是自己的用户名)
cd /tmp
sudo chmod 777 px4_lock-0
sudo chmod 777 px4-sock-0
sudo chown username px4_lock-0
sudo chown username px4-sock-0
七、键盘控制飞行
source ~/.bashrc
cd ~/PX4_Firmware
roslaunch px4 indoor1.launch
Gazebo启动后,在另一个终端运行(注意要等Gazebo完全启动完成,或者可能脚本会报错)
cd ~/XTDrone/communication/
python multirotor_communication.py iris 0
终端出现: iris_0: communication initialized ,则表示与0号iris成功建立通信,之后在另一个终端运行
cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel
此时上面的终端出现:iris_0:HOVER,则表示准备成功
起飞方式:
- t 解锁
- i 不断加速z方向的速度直到 > 0.3
- b 起飞至适合的高度
- s 悬停
相关文章:
Ubunutu18.04 ROS melodic 无人机 XTDrone PX4 仿真平台配置
一、依赖安装 sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python-pip python3-pip gawk pip2 install pandas jinja2 pyserial cerberus pyulog0.7.0 n…...
JVM 命令行监控及诊断工具
面试题 你使用过Java虚拟机性能监控和故障处理工具吗?(美图) 怎么打出线程栈信息。(字节跳动) JVM诊断调优工具用过哪些? (京东) 怎么获取 Java 程序使用的内存?堆使用…...
飞天使-linux操作的一些技巧与知识点2
TCP 的三次握手 第一次,客户端与服务端建立链接,需要发送请求连接的消息 第二次,服务端接口到数据后,返回一个确认的操作*(至此客户端和服务端链路建立成功) 第三次,服务端还需要发送要与客户端…...
Android : 篮球记分器app _简单应用
示例图: 1.导包 在build.gradle 中 加入 // 使用androidx版本库implementation androidx.lifecycle:lifecycle-extensions:2.1.0-alpha03 2. 开启dataBinding android{...// 步骤1.开启data bindingdataBinding {enabled true}...} 3.写个类继承 ViewModel pac…...
音视频之旅 - 基础知识
图像基础知识 像素 像素是图像的基本单元,一个个像素就组成了图像。你可以认为像素就是图像中的一个点。在下面这张图中,你可以看到一个个方块,这些方块就是像素 分辨率 图像(或视频)的分辨率是指图像的大小或尺寸。…...
分类预测 | SSA-HKELM-Adaboost麻雀算法优化混合核极限学习机的数据分类预测
分类预测 | SSA-HKELM-Adaboost麻雀算法优化混合核极限学习机的数据分类预测 目录 分类预测 | SSA-HKELM-Adaboost麻雀算法优化混合核极限学习机的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.SSA-HKELM-Adaboost麻雀算法优化混合核极限学习机的数据分类…...
如何使用 Zotero 导出所选条目的 PDF 文件
如何使用 Zotero 导出所选条目的 PDF 文件 Zotero 是一款强大的参考文献管理工具,但它并不直接提供将整个文件夹导出为 PDF 的选项。不过,您可以使用以下步骤来导出您所选的 Zotero 条目中的 PDF 文件,无需额外的插件。 选择所需的 Zotero 条…...
minio的k8s的单机部署
minio的k8s的单机部署 apiVersion: apps/v1 kind: Deployment metadata:name: minionamespace: itshare spec:replicas: 1selector:matchLabels:app: miniotemplate:metadata:labels:app: miniospec:containers:- name: minioimage: minio/minio:RELEASE.2022-10-15T19-57-03Z…...
Git 更改remote repo 地址
Git 更改remote repo 地址 我们想更换远程 repo 地址, 因为我们仓库更换了名称. git remote rename origin 查看现在的 romote 地址 # 查看 remote 地址 git remote -v origin gitgitee.com:changyubiao/attrdict.git (fetch) origin gitgitee.com:changyubiao/attrdict.gi…...
24、文件上传漏洞——Apache文件解析漏洞
文章目录 一、环境简介一、Apache与php三种结合方法二、Apache解析文件的方法三、Apache解析php的方法四、漏洞原理五、修复方法 一、环境简介 Apache文件解析漏洞与用户配置有密切关系。严格来说,属于用户配置问题,这里使用ubantu的docker来复现漏洞&am…...
使用Go快速开发TCP公共服务
使用Go快速开发TCP公共服务 文章目录 使用Go快速开发TCP公共服务一、前言二、实现思路三、源码四、测试使用五、最后 一、前言 之前使用的公共TCP服务无法使用了,想了一下整个实现原理不是很复杂,就利用Go快速开发了一个,利用公网服务器可以…...
QEMU环境调试方法
目录 1.如何查看makefile构建过程执行的命令? 2.如何使用GCC生成C程序的宏展开文件? 3.如何在qemu中执行特定的可执行程序? 4.如何在qemu中直接运行可执行程序? 5.如何在qemu中调试某个可执行程序? 本文从调试的角…...
京东数据运营(京东API接口):10月投影仪店铺数据分析
鲸参谋监测的京东平台10月份投影仪市场销售数据已出炉! 10月份,环同比来看,投影仪市场销售均上涨。鲸参谋数据显示,今年10月,京东平台投影仪的销量为16万,环比增长约22%,同比增长约8%࿱…...
Aloha 机械臂的学习记录2——AWE:AWE + ACT
继续下一个阶段: Train policy python act/imitate_episodes.py \ --task_name [TASK] \ --ckpt_dir data/outputs/act_ckpt/[TASK]_waypoint \ --policy_class ACT --kl_weight 10 --chunk_size 50 --hidden_dim 512 --batch_size 8 --dim_feedforward 3200 \ --n…...
Spring Boot 项目的创建、配置文件、日志
文章目录 Spring Boot 优点创建 Spring Boot 项目创建项目认识目录网页创建(了解) 约定大于配置Spring Boot 配置文件配置文件格式读取配置项properties 配置文件yml 配置文件基本语法进阶语法配置对象配置集合yml 设置不同环境的配置文件 Spring Boot 日…...
MySQL:drop、delete与truncate区别
一、用法不同 1、drop(丢弃数据): drop table 表名 ,直接将表都删除掉,在删除表的时候使用。 2、truncate (清空数据) : truncate table 表名 ,只删除表中的数据,再插入数据的时候自增长 id 又从 1 开始,在清空表中数…...
2024年顶级的9个 Android 数据恢复工具(免费和付费)
不同的事情可能会损坏您的Android手机并导致您丢失数据。但大多数时候,您可以使用取证工具恢复部分或全部文件。 问题可能来自手机的物理损坏、磁盘的逻辑故障、完整的系统擦除,或者只是简单的粗心大意。 但是,无论数据丢失的原因是什么&am…...
c# Aspose.Cells 导出Excel表格 使用随记
/// <summary>/// 导出Excel表格/// </summary>/// <param name"list">数据集合</param>/// <param name"header">数据表头</param>/// <param name"sumColumn">求和列</param>/// <param n…...
SAP UI5 walkthrough step3 Controls
在上一步,我们是直接用index.html 中的body 里面的DIVision去输出 hello world, 在这个章节,我们将用SAP UI5 的标准控件 sap/m/Text 首先,我们去修改 webapp/index.html <!DOCTYPE html> <html> <head><…...
【分布式微服务专题】从单体到分布式(一、SpringCloud项目初步升级)
目录 前言阅读对象阅读导航前置知识笔记正文一、单体服务介绍二、服务拆分三、分布式微服务升级前的思考3.1 关于SpringBoot/SpringCloud的思考【有点门槛】 四、SpringCloud升级整合4.1 新建父子项目 学习总结感谢 前言 从本节课开始,我将自己手写一个基于SpringC…...
MySQL报错注入实战:从错误信息读取到文件写入
1. 这不是“SQL注入教程”,而是一次真实渗透测试中的边界突破实践很多人看到“基于报错的SQL注入”第一反应是:老掉牙的技术,现在还有用?我去年在给一家本地政务系统做授权渗透时,就遇到了一个看似完全无感的登录接口—…...
虚拟化与加密环境下勒索软件检测的IO模式识别与模型泛化实践
1. 项目概述:当勒索软件检测遇上虚拟化与加密在存储安全领域,勒索软件检测一直是个“猫鼠游戏”。传统的检测方法,尤其是那些依赖文件熵值(Entropy)突变的方案,在过去几年里确实立下了汗马功劳。其原理很直…...
从λκ观测量到喷注鉴别:探索夸克与胶子分类的最优尺度
1. 项目概述与核心问题在大型强子对撞机(LHC)上,我们每秒要处理数以亿计的质子-质子对撞事件。这些对撞产生的绝大多数产物,是量子色动力学(QCD)主导的强子化过程所形成的“喷注”——即高度准直的强子流。…...
智慧医院边缘计算架构:QoS驱动的低延迟医疗物联网实践
1. 项目概述:当智慧医院遇上边缘计算在智慧医院的日常运营中,我们正面临一个日益尖锐的矛盾:一边是海量医疗物联网设备产生的实时数据洪流,另一边是云端数据中心在处理这些数据时难以逾越的延迟与带宽瓶颈。想象一下,一…...
电池阻抗测量技术:伪随机序列与信号处理应用
1. 电池阻抗测量技术概述电池阻抗测量作为电化学系统状态监测的核心手段,其原理基于对电池施加特定激励信号并测量响应信号,通过分析两者的幅值和相位关系来获取阻抗谱。这种频域分析方法能够反映电池内部电荷转移、扩散过程等动力学特性,为电…...
JWT签名机制与常见攻击实战:从PortSwigger靶场12关学透算法混淆、密钥混淆与JWKS劫持
1. 为什么JWT不是“加密令牌”,而是“签名凭证”——从PortSwigger靶场第一关开始讲起很多人一看到JWT就下意识觉得:“这是个加密的token,只要我拿到它,就等于拿到了用户密码或者敏感密钥。”这种误解直接导致他们在实战中反复碰壁…...
CVE、CNVD、CNNVD、NVD四大漏洞编号体系深度解析
1. 这些字母组合不是密码,而是漏洞世界的“身份证号” 刚入行做安全运维那会儿,我在日报里看到一条告警:“检测到 CVE-2021-44228 漏洞利用尝试”,顺手抄下来准备查资料,结果一搜发现——同一款 Log4j 组件,…...
openEuler 22.03 LST上安装RealVNC 6.11,我踩过的那些依赖坑(附离线包下载方法)
在openEuler 22.03 LST离线环境中部署RealVNC 6.11的完整指南当我们需要在隔离网络的生产环境中部署远程桌面服务时,依赖管理往往成为最棘手的挑战。本文将分享我在openEuler 22.03 LST系统上安装RealVNC 6.11时积累的实战经验,特别是如何处理复杂的离线…...
SLAM技术路线收敛?不,多模态融合正在重启路线之争
过去几年,SLAM技术路线确实呈现出明确的收敛趋势:纯视觉SLAM逐渐成熟,基于3DGS的实时建图成为新范式,激光SLAM也固化为工业场景的稳健选择。大家一度认为,算法架构的选择题已经做完。然而,多模态融合的深入…...
大数据+大模型=乘法效应?6个场景告诉你,大模型如何让你的数据平台“活”起来!
本文探讨了大数据与大模型的关系,提出大模型是大数据平台的“发动机”。文章重点介绍了六个必须使用大模型才能解放双手的场景,包括数据血缘解析、Text2SQL、数据质量智能巡检、调度任务智能运维、元数据管理和报告自动生成。这些场景展示了大模型如何通…...
