🏡作者主页:点击!
🤖编程探索专栏:点击!
⏰️创作时间:2024年12月3日10点24分
神秘男子影,
秘而不宣藏。
泣意深不见,
男子自持重,
子夜独自沉。
论文链接
点击开启你的论文编程之旅https://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图形界面就可以看到无人机飞出的四方形了。
成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"
"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"
神秘泣男子