当前位置: 首页 > article >正文

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

🏡作者主页:点击! 

🤖编程探索专栏:点击!

⏰️创作时间: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.kler.cn/a/422063.html

相关文章:

  • 【测试工具JMeter篇】JMeter性能测试入门级教程(六):JMeter中实现参数化的几种方式
  • 利用Python爬虫获取淘宝关键词接口的深入解析
  • LeetCode78:子集
  • unity与android拓展
  • 量化交易系统开发-实时行情自动化交易-8.8.同花顺 SuperMind 平台
  • 【Oracle11g SQL详解】子查询的分类与嵌套查询实例
  • Typora设置自动上传图片到图床
  • Linux查看系统基本信息
  • 推荐文章:FLUI Framework——打造流畅的微软界面体验
  • Mysql外键约束与关联表操作
  • 讯方智汇云校HarmonyOS培训,培养鸿蒙原生应用开发人才
  • TypeScript (一)运行环境配置,数据类型,可选类型,联合类型,type与interface,交叉类型,断言as,字面量类型,类型缩小
  • 【青牛科技】超低功耗混合信号处理器由多种设备组成的流量计电路芯片——D8331
  • Linux之信号集基础
  • 怎么自己创建一个网站? 开发语言首选 java,使用CMS网站内容管理系统是不错的选择
  • Redis设计与实现第17章 -- 集群 总结2(执行命令 重新分片)
  • 能源投资工程VS智能驾驶,DolphinScheduler如何当好传统行业与前沿科技的桥梁?
  • [网络] UDP通信接口及一些简易项目
  • vue 通过 mqtt 实现实时接收消息
  • 算法笔记:力扣24. 两两交换链表中的节点