无人机的计算机仿真模拟控制

🏡作者主页:点击! 

🤖编程探索专栏:点击!

⏰️创作时间:2024年12月3日10点24分


神秘男子影,
  秘而不宣藏。
泣意深不见,
男子自持重,
   子夜独自沉。

论文链接

点击开启你的论文编程之旅icon-default.png?t=O83Ahttps://www.aspiringcode.com/content?id=17269203938591&uid=f6960f8aee124b488acfa41b7d4a4a75

概述

所有的机械相关载具在投入到现实世界中应用或测试之前,为了节省制造成本和避免不必要的意外发生,都会先在仿真软件中先模拟设备的操作和流程。这一方面不仅减少了意外发生的可能,也大幅度的减低了测试的时间和成本,达到一个可以快速对代码测试、修改、重复的功效。这篇文章里着重会提到目前最主流的无人机仿真测试程序——新手友好的入门级Gazebo Classic Simulator。为了方便查看无人机在仿真环境中的运行过程以及它的路径,会再安装QGroundControl来方便查看无人机状态(包括位置数据,全球地图定点标记,无人机速度和高度等)

Gazebo Classic起飞展示

Gazebo Classic Simulator环境仿真图:

QGroundControl图形界面:

QGroundControl连接了仿真环境中的无人机后所显示的卫星地图和定点标记:

Gazebo Classic的安装

安装Gazebo Classic Simulation步骤如下:

sudo apt install curl wget python3
curl -sSL http://get.gazebosim.org | sh
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install gazebo11 libgazebo11-dev
gazebo    # 打开 Gazebo Classic 验证是否已成功安装

Gazebo Classic Simulation需要搭配PX4-Autopilot固件才能实现无人机的控制与仿真,所以PX4-Autopilot的安装如下:

sudo apt install git
cd ~    # 回到主目录里以便 PX4 的目录方便查找
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev -y

PX4-Autopilot需要用到GeographicLib的数据集,下载步骤如下:

wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo bash ./install_geographiclib_datasets.sh

实现无人机的自主操控通常会搭配ROS进行控制,所以ROS安装如下:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update
sudo apt install ros-noetic-desktop-full
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
echo "export ROS_DISTRO=noetic" >> ~/.bashrc    # 把 ROS 的版本放到 bashrc 里边以便后续使用
source ~/.bashrc

ROS安装完毕后可以开始编译PX4的固件了,需要先去到安装PX4的目录里面再进行固件编译:

cd ~/PX4-Autopilot
DONT_RUN=1 make px4_sitl_default gazebo
echo "source /home/${USER}/PX4-Autopilot/Tools/simulation/gazebo-classic/setup_gazebo.bash /home/${USER}/PX4-Autopilot /home/${USER}/PX4-Autopilot/build/px4_sitl_default" >> ~/.bashrc
echo "export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$/home/${USER}/PX4-Autopilot" >> ~/.bashrc
echo "export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/${USER}/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic" >> ~/.bashrc
source ~/.bashrc
roslaunch px4 mavros_posix_sitl.launch

经过如上步骤以后PX4,Gazebo Classic Simulation,ROS1 Noetic以及MAVROS就已经全部安装并编译完毕。后续要跑PX4和Gazebo Classic的时候只需要在终端敲下指令:

roslaunch px4 mavros_posix_sitl.launch

就可以打开Gazebo Classic,并自动连接PX4 SITL固件了。打开了Gazebo Classic和PX4 SITL后可以在另一个终端输入:

rostopic echo /mavros/local_position/odom

既可以通过ROS接受无人机在Gazebo Classic仿真环境中的位置数据。回到开启PX4 SITL固件的那个终端,pxh固件终端里面输入:

pxh> commander takeoff

既可以操控PX4无人机在仿真环境中起飞,可以通过添加 --help 来查看哪一些命令可以被使用。

QGroundControl的安装

在安装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
sudo apt install libfuse2 -y
sudo apt install libxcb-xinerama0 libxkbcommon-x11-0 libxcb-cursor-dev -y

依赖项处理完毕后再点击 QGroundControl 来下载Ubuntu AppImage程序包。下载完毕后需要去到下载目录里面并执行:

cd ~/Downloads
chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage    # 可以终端运行或者双击 AppImage 文件

QGroundControl用户见面就会弹出,并自动连接仿真环境中的无人机(若Gazebo Classic已经打开)。

ROS操控仿真无人机

从上面的步骤中,所有的环境包括Gazebo Classic仿真环境都已经设置完毕,下面开始展示如何通过ROS话题来操控Gazebo Classic里面的无人机。首先在终端启动PX4固件,Gazebo Classic,ROS Noetic以及MAVROS,运行以下指令即可:

roslaunch px4 mavros_posix_sitl.launch

去到QGroundControl.AppImage之前所在的下载目录里边双击文件打开QGroundControl图形界面就可以看到PX4仿真无人机成功连接到了仿真环境里。

在附件里面下载并解压SimulationCtrl.zip文件,打开SimulationCtrl文件夹并进到code文件夹里面将会看到PX4CtrlCommand.py文件以及main.py文件。右击code文件夹并选择在终端中打开,然后运行以下指令:

python3 ./main.py

回到Gazebo Classic的图形界面就可以看到PX4仿真无人机在MAVROS的操控下开始自检解锁,并用其走过的路径画出一个正四方形。可以打开QGroundControl图形界面就可以看到无人机飞出的四方形了。

成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

神秘泣男子

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/888402.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue+mars3d给影像底图叠加炫酷效果

话不多说,直接上效果图: 在这里墙体其实是有一个不太明显的流动效果 实现方式:这里我使用了PolylineEntityWallPrimitive,开始我用的是polygonEntity但是发现实现效果并不好,所有直接改用了线 map.vue文件&#xff1…

浅谈volatile

volatile有三个特性: (1)可见性 (2)不保证原子性 (3)禁止指令重排 下面我们一一介绍 (一)可见性 volatile的可见性是说共享变量只要修改,就可以被其他线…

Redis自学之路—高级特性(实现消息队列)(七)

目录 简介 Redis的Key和Value的数据结构组织 全局哈希表 渐进式rehash 发布和订阅 操作命令 publish 发布消息 subscribe 订阅消息 psubscribe订阅频道 unsubscribe 取消订阅一个或多个频道 punsubscribe 取消订阅一个或多个模式 查询订阅情况-查看活跃的频道 查询…

Java-09 深入浅出 MyBatis - 注解开发 注解映射 基本介绍 与 一对一模型

点一下关注吧!!!非常感谢!!持续更新!!! 大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了: MyBatis&#xff…

【k8s】kubelet 的相关证书

在 Kubernetes 集群中,kubelet 使用的证书通常存放在节点上的特定目录。这些证书用于 kubelet 与 API 服务器之间的安全通信。具体的位置可能会根据你的 Kubernetes 安装方式和配置有所不同,下图是我自己环境【通过 kubeadm 安装的集群】中的kubelet的证…

3.建立本地仓库及常用命令

1.建立本地仓库 要使用Git对我们的代码进行版本控制,首先需要获得本地仓库 1)在电脑的任意位置创建一个空目录,作为我们的本地Git仓库 2)进入这个目录,右键点击Git Bash 窗口 3)执行命令git init 4) 如果创…

Narya.ai正在寻找iOS工程师!#Mixlab内推

如果你对AI技术和iOS开发充满热情,这里有一个绝佳的机会加入一家专注于AI应用创新的初创公司。Narya.ai正在招聘iOS工程师,帮助他们开发下一代效率工具,旨在提升用户的日常生活效率与幸福感。 关于Narya.ai: 专注于AI应用层创新&a…

AI开发:生成式对抗网络入门 模型训练和图像生成 -Python 机器学习

阶段1:GAN是个啥? 生成式对抗网络(Generative Adversarial Networks, GAN),名字听着就有点“对抗”的意思,没错!它其实是两个神经网络互相斗智斗勇的游戏: 生成器(Gene…

039集——渐变色之:CAD中画彩虹()(CAD—C#二次开发入门)

(来左边儿 跟我一起画个龙,在你右边儿 画一道彩虹 ~~~~~~~~~~~ ) 效果如下: 以下展示部分颜色源码: namespace AcTools {public class Class1{public Wform.Timer timer;//定时器需建在类下面public s…

C++知识整理day3类与对象(下)——赋值运算符重载、取地址重载、列表初始化、友元、匿名对象、static

文章目录 1.赋值运算符重载1.1 运算符重载1.2 赋值运算符重载 2.取地址重载2.1 const成员函数2.2 取地址运算符重载 3.类与对象的补充3.1 再探构造函数---初始化列表3.2 类型转换3.3 static成员3.4 友元3.5 内部类3.6 匿名对象3.7 对象拷贝时的编译器优化 1.赋值运算符重载 赋…

web vue 滑动选择 n宫格选中 九宫格选中

页面动态布局经常性要交给客户来操作,他们按时他们的习惯在同一个屏幕内显示若干个子视图,尤其是在医学影像领域对于影像的同屏显示目视对比显的更为重要。 来看看如下的用户体验: 设计为最多支持5行6列页面展示后,右侧的布局则动…

解决idea使用maven打包时无法将本地lib库文件和resource目录中的资源文件打包进jar文件的问题!!!

一、问题复现 1)项目结构如下 我们看到项目中手动添加了本地lib资源,同时bootspring的配置文件和mapper文件也放在了resouces目录中。 2)上述结构的项目在使用maven打包时,最终生成的jar文件中将不包含lib库文件,甚…

【短视频矩阵系统==saas技术开发】

在数字媒体领域,短视频的崛起已不可忽视。对于商业实体而言,掌握如何通过短视频平台有效吸引潜在客户并提高转化率,已成为一项关键课题。本文旨在深入剖析短视频矩阵系统的构成与作用机制,以期为企业提供一套系统化的策略&#xf…

C_字符串的一些函数

1.字符串输入函数 scanf("%s",数组名)&#xff1b; gets(数组名)&#xff1b; 区别&#xff1a; scanf(“%s”,数组名); 把空格识别为输入结束 #include <stdio.h>int main() {char a[10];printf("输入&#xff1a;");scanf("%s",a)…

JavaScript实现tab栏切换

JavaScript实现tab栏切换 代码功能概述 这段代码实现了一个简单的选项卡&#xff08;Tab&#xff09;切换功能。它通过操作 HTML 元素的类名&#xff08;class&#xff09;来控制哪些选项卡&#xff08;Tab&#xff09;和对应的内容板块显示&#xff0c;哪些隐藏。基本思路是先…

《网络聊天室项目:全面分析测试报告》

目录 一、项目介绍二、项目功能三、测试计划1. 编写测试用例2. 实际执行测试的部分操作步骤3. 自动化测试 四、项目bug&#xff08;1&#xff09;bug描述&#xff08;2&#xff09;bug描述 五、项目总结 一、项目介绍 网络聊天室项目实现了一个网络交流平台&#xff0c;用户在w…

大数据新视界 -- 大数据大厂之 Hive 数据压缩:优化存储与传输的关键(上)(19/ 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

软通动力携子公司鸿湖万联、软通教育助阵首届鸿蒙生态大会成功举办

11月23日中国深圳&#xff0c;首届鸿蒙生态大会上&#xff0c;软通动力及软通动力子公司鸿湖万联作为全球智慧物联网联盟&#xff08;GIIC&#xff09;理事单位、鸿蒙生态服务&#xff08;深圳&#xff09;有限公司战略合作伙伴&#xff0c;联合软通教育深度参与了大会多项重磅…

动手学深度学习10.5. 多头注意力-笔记练习(PyTorch)

本节课程地址&#xff1a;多头注意力代码_哔哩哔哩_bilibili 本节教材地址&#xff1a;10.5. 多头注意力 — 动手学深度学习 2.0.0 documentation 本节开源代码&#xff1a;...>d2l-zh>pytorch>chapter_multilayer-perceptrons>multihead-attention.ipynb 多头注…

故障诊断 | Transformer-LSTM组合模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | Transformer-LSTM组合模型的故障诊断(Matlab) 源码设计 %% 初始化 clear close all clc disp(此程序务必用2023b及其以上版本的MATLAB!否则会报错!) warning off %