2024最保姆的XTDrone,PX4,ROS,Gazebo环境教程

本文作者:shreddedginger 即 姜丝哥

特别鸣谢:rocket 即 游侠学长

推荐虚拟机:VMware 17 player或者pro都可以

推荐操作系统:Ubuntu 20.04

依赖的安装【千万别忘记,ginger在这里就漏了一次,导致后面一系列无效debug】

sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python3-pip gawk
pip3 install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml 

【注意:这一句如果不成功的话请升级一下numpy确保你numpy的版本在1.2以上】

pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse

【注:每个前面有git或者wget的指令请打开科学上网工具】

单独PX4 安装【注意如果需要装XTDrone的话请不要执行下面三个指令,去后面找XTDrone的PX4安装教程,装了也不要紧,删掉PX4文件夹即可】:

git clone https://github.com/PX4/PX4-Autopilot.git --recursive  
​
cd  PX4-Autopilot
​
bash ~/PX4-Autopilot/Tools/setup/ubuntu.sh

下面进行ROS的安装:

【注:安装ros前需打开“软件与更行”这个软件,替换代码源,一般让系统检索直接选择最好的源就行,然后重新载入】 ros安装:

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
​
​
sudo apt-get update
​
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
​
sudo apt update
​
sudo apt install ros-noetic-desktop-full
​
sudo wget http://fishros.com/install -O fishros && . fishros  //选3
​
rosdepc update
​
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
​
source ~/.bashrc

试试运行一下指令

roscore

若没报错就可以【linux结束指令ctrl+c】

至此ROS本体安装成功

配置mavros环境

sudo apt install ros-noetic-mavros ros-noetic-mavros-extras
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间

注:若无法执行wget指令则进行以下操作: { 回到home环境

    touch install_geographiclib_datasets.sh
    gedit install_geographiclib_datasets.sh

将下列代码粘进去然后保存

#!/bin/bash
​
Script to install the model datasets required
​
to GeographicLib apply certain conversions
​
if [[ $UID != 0 ]]; then
    echo "This script require root privileges!" 1>&2
    exit 1
fi
​
Install datasets
​
run_get() {
    local dir="$1"
    local tool="$2"
    local model="$3"
​
    files=$(shopt -s nullglob dotglob; echo /usr/share/GeographicLib/$dir/$model* /usr/local/share/GeographicLib/$dir/$model*)
    if (( ${#files} )); then
        echo "GeographicLib $tool dataset $model already exists, skipping"
        return
    fi
    
    echo "Installing GeographicLib $tool $model"
    geographiclib-get-$tool $model >/dev/null 2>&1
    
    files=$(shopt -s nullglob dotglob; echo /usr/share/GeographicLib/$dir/$model* /usr/local/share/GeographicLib/$dir/$model*)
    if (( ! ${#files} )); then
        echo "Error while installing GeographicLib $tool $model"
        return
    fi
​
}
​
check which command script is available
​
if hash geographiclib-get-geoids; then
    run_get geoids geoids egm96-5
    run_get gravity gravity egm96
    run_get magnetic magnetic emm2015
elif hash geographiclib-datasets-download; then # only allows install the goid model dataset
    geographiclib-datasets-download egm96_5;
else
    echo "OS not supported! Check GeographicLib page for supported OS and lib versions." 1>&2
fi

然后运行:sudo ./install_geographiclib_datasets.sh
}

创建工作空间

mkdir catkin_ws
cd catkin_ws/
mkdir src
cd src/
catkin_init_workspace

cd ..

【注意如果你能正常使用catkin_build还是建议build】

catkin_make 

注意:XTDrone的教程建议使用catkin_build指令进行工作空间的编译,但是笔者实测多次发现可能build指令报错较多,不适合小白debug【注意以后所有本工作空间下的编译都使用catkin_make,不能使用catkin_build,但是关于两个指令的深层区别大家可以进一步了解】

catkin_make install

编译一定要回到catkin_ws目录 然后设置环境变量

source devel/setup.bash

检查环境变量

echo $ROS_PACKGE_PATH

至此工作空间建立完成

下面我们进行Gazebo11的删除和Gazebo9的安装以及XTDrone源码的下载 【注意,这部分在XTDrone的语雀教程中写的比较混乱,可能很多人分不清到底执行顺序是什么,这里笔者全部整理好了】

进行Gazebo11的删除
sudo apt-get remove gazebo* 
sudo apt-get remove libgazebo*
sudo apt-get remove ros-noetic-gazebo* 
进行Gazebo9的安装
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

注:下面两步重新装上gazebo9

sudo apt-get install gazebo9
sudo apt-get install libgazebo9-dev

注:重装Gazebo9后需要更新依赖

sudo apt upgrade
下面进行XTDrone源码的下载
git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git submodule update --init --recursive
​
让我们再装亿点点依赖
sudo apt-get install ros-noetic-moveit-msgs ros-noetic-object-recognition-msgs ros-noetic-octomap-msgs ros-noetic-camera-info-manager  ros-noetic-control-toolbox ros-noetic-polled-camera ros-noetic-controller-manager ros-noetic-transmission-interface ros-noetic-joint-limits-interface
​
cd ~/catkin_ws
cp -r ~/XTDrone/sitl_config/gazebo_ros_pkgs src/

【注意如果下面catkin_make出现'em'模型未找到导致make失败的话(如上图)执行这两句】

pip uninstall em

pip install empy==3.3.4

注意下面要进行编译,XTDrone原话为 { catkin build #开发者测试使用catkin_make会出问题,因此建议使用catkin build } 但是ginger这里使用的是catkin_make

catkin_make

打开另一个终端运行

roscore

在原来终端运行

source ~/catkin_ws/devel/setup.bash
rosrun gazebo_ros gazebo

如果gazebo正常启动表明gazebo_ros安装成功

下面下载gazebo的模型,也可以去XTDrone上直接下载别人clone好的安装包
cd ~/.gazebo
git clone https://github.com/osrf/gazebo_models.git
mv gazebo_models models
接着我们开始XTDrone的PX4配置【如果你按照第一步安装了的话,请把原来的文件夹删掉就好】
git clone https://github.com/PX4/PX4-Autopilot.git
【注:如果下载的太慢可以去XTDrone上直接下载别人clone好的安装包】
mv PX4-Autopilot PX4_Firmware #重命名
cd PX4_Firmware
git checkout -b xtdrone/dev v1.11.0-beta1 #切分支1.11.0-beta1,命名分支为xtdrone/dev
git submodule update --init --recursive
make px4_sitl_default gazebo #20.04 conda deactivate再编译
下面修改bashrc文件

打开文件夹的主目录,按下ctrl+h显示隐藏文件,打开.bashrc文件,或者在终端使用这个命令 gedit ~/.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

ctrl+s保存回到终端

下面测试PX4固件
cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch

打开另一个终端

rostopic echo /mavros/state

若connected: True,则说明MAVROS与SITL通信成功。如果是false,一般是因为.bashrc里的路径写的不对,请仔细检查。

下面安装QGC地面站

打开梯子

然后去这个网站跟着Step by Step那个下

Download and Install | QGC Guide (master)

下面进行XTDrone的配置

cd XTDrone
git submodule update --init --recursive
cp sensing/gimbal/gazebo_gimbal_controller_plugin.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src/ #修改PX4 sitl_gazebo中的插件
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
rm -r build/
make px4_sitl_default gazebo

注意,在XTDrone对应本PX4版本的文件中漏掉了第二句删除原有build文件,shreddedginger在这里被折磨了好久,再次特别鸣谢rocket

下面试试用键盘控制仿真中无人机飞行?

第一个终端

cd ~/PX4_Firmware
roslaunch px4 indoor1.launch

当gazebo完全启动后 第二个终端

cd ~/XTDrone/communication/
python3 multirotor_communication.py iris 0

【注意,XTDrone语雀中使用的python指令而非python3指令,但是由于现在默认的linux是python3的环境,所以python指令无法使用,实测发现python3可以使用】

第三个终端

cd ~/XTDrone/control/keyboard
python3 multirotor_keyboard_control.py iris 1 vel

点开gazebo将第三个终端放在最上层,然后 便可以通过键盘控制1架iris的解锁/上锁(arm/disarm),修改飞行模式,飞机速度等。使用v起飞利用的是takeoff飞行模式,相关参数(起飞速度、高度)要在rcS中设置。一般可以使用offboard模式起飞,这时起飞速度要大于0.3m/s才能起飞(即:upward velocity 需要大于0.3)。注意,飞机要先解锁才能起飞!飞到一定高度后可以切换为‘hover’模式悬停,再运行自己的飞行脚本,或利用键盘控制飞机。

【推荐起飞流程,按i把向上速度加到0.3以上,再按b切offboard模式,最后按t解锁。】

【【到此,仿真平台基础配置完成!祝贺您完成了第一步!!!】】

参考资料链接: 仿真平台基础配置(对应PX4 1.13版) · 语雀 Download and Install | QGC Guide (master) XTDrone简明安装教程_xtdrone安装-CSDN博客

终极参考:rocket

  • 18
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
以下是Ubuntu 18.04上安装ROS(Robot Operating System)Gazebo、MAVROSPX4教程: 1. 首先,确保你的Ubuntu 18.04系统已经更新到最新版本。打开终端并运行以下命令来更新系统: ``` sudo apt update sudo apt upgrade ``` 2. 安装必要的依赖项。在终端中运行以下命令: ``` sudo apt install build-essential cmake curl git sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool python-catkin-tools sudo rosdep init rosdep update ``` 3. 创建并初始化一个catkin工作空间。在终端中运行以下命令: ``` mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin init ``` 4. 下载PX4代码和模拟器。在终端中运行以下命令: ``` cd ~/catkin_ws/src git clone https://github.com/PX4/Firmware.git --recursive ``` 5. 安装PX4依赖项。在终端中运行以下命令: ``` cd ~/catkin_ws/src/Firmware ./Tools/setup/ubuntu.sh --no-nuttx ``` 6. 编译PX4。在终端中运行以下命令: ``` cd ~/catkin_ws catkin build px4 -j4 ``` 7. 安装Gazebo和相关插件。在终端中运行以下命令: ``` sudo apt install gazebo9 libgazebo9-dev sudo apt install ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-ros-control ``` 8. 安装Mavros。在终端中运行以下命令: ``` sudo apt install ros-melodic-mavros ros-melodic-mavros-extras ``` 9. 配置序列设备。在终端中运行以下命令: ``` wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh chmod +x install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.sh ``` 10. 测试安装是否成功。在终端中运行以下命令,启动Gazebo仿真环境和Mavros节点: ``` roslaunch px4 mavros_posix_sitl.launch ``` 希望以上教程对你有所帮助!如果有任何问题,请在评论中提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值