【总结好文】【新手避坑指南】Ubuntu18.04 轻松愉快的安装ROS并带你仿真个无人机飞行


Ubuntu18.04 ROS无人机PX4仿真环境搭建

引用文章

  1. 环境搭建总流程
  2. [indoor1.launch] is neither a launch file。。。。的解决办法(在最后)
  3. Gazebo模型大全下载方式
  4. 无人机上添加激光雷达、双目相机和下视摄像头的方法
  5. catkin init/build 遇到catkin:command not found 亲测有效的解决办法。
  6. 键盘控制无人机飞行

注意事项及说明

  1. 纯净的Ubuntu上来先sudo apt-get update一下再进行其他的操作。
  2. 做无人机仿真的ROS安装时,不要安装完整版。这一点在环境搭建总流程的链接里有明显提示,注意!
  3. 第七步XTDrone源码下载期间的命令:cp -r sitl_config/models/{3d_gpu_lidar,3d_lidar,hokuyo_lidar,kinect,stereo_camera} ~/.gazebo/models/
    如果这一步出现了报错,说明Gazebo的模型没有导入成功,需要看引用文章的第3篇,成功添加后别忘了更新环境,具体看第2篇
  4. 第8步使用键盘飞行无人机时,cd ~/XTDrone/communication/这一步路径有错,在cd进一层就好了,忘记是哪一层了,在里面找一找就可以了。

阉割版安装流程

安装依赖
sudo apt-get update
sudo apt install -y ninja-build exiftool python-argparse python-empy python-toml python-numpy python-yaml python-dev python-pip ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
pip2 install pandas jinja2 pyserial cerberus pyulog numpy toml pyquaternion  -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install packaging numpy empy toml pyyaml jinja2 -i https://pypi.tuna.tsinghua.edu.cn/simple
ROS安装
  1. 软件与更新中点击源代码
    在这里插入图片描述
  2. 清华镜像
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'
  1. 设置Key
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  1. 安装
sudo apt update
sudo apt install ros-melodic-desktop
  1. 环境设定
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
  1. 构建软件包的依赖关系
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo apt install python-rosdep
sudo rosdep init
  1. 执行rosdep update更新
rosdep update
Gazebo安装
  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
  1. 设置密钥
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update
  1. 安装gazebo9.1
sudo apt-get install gazebo9=9.1*
  1. 插件安装
sudo apt install ros-melodic-gazebo9-*
sudo apt install ros-melodic-gazebo-*
MAVROS安装
sudo apt install ros-melodic-mavros ros-melodic-mavros-extras
roscd mavros
sudo 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 

原文说的这一步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

原文中有更快的解决方案,详细请看原文,引用文章的第一篇。

安装必要的python依赖

cd ~/PX4_Firmware
bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools

编译

make px4_sitl_default gazebo

修改环境变量

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

运行

cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch

再运行

rostopic echo /mavros/state

若connected: True 则说明MAVROS与SITL通信成功。

QGC地面站安装

只有一个安装链接,本人未亲自尝试,但是好像路径规划来看,这个还是挺重要的,未深入了解过,做路径规划避障的一定要下载。
安装链接

XTDrone源码下载
git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git submodule update --init --recursive
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/models/{3d_gpu_lidar,3d_lidar,hokuyo_lidar,kinect,stereo_camera} ~/.gazebo/models/
cp sitl_config/launch/* ~/PX4_Firmware/launch/

若期间有报错,请看注意事项中的第三条。
修改之后重新编译

cd ~/PX4_Firmware
make px4_sitl_default gazebo

编译不过更新环境再编译
更新环境:

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
用键盘控制无人机飞行

在一个终端运行

cd ~/PX4_Firmware
roslaunch px4 indoor1.launch

第二个终端运行
这一步在注意事项里有具体描述!详查!

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

第三个终端运行

cd ~/XTDrone/control/
python multirotor_keyboard_control.py iris 1 vel

之后可以查看引用文章来通过键盘操控无人机了。

一点小概念

PX4_SITL为PX4软件的仿真模块。PX4_SitL相当于在PC上运行的PX4代码,区别在于单片机运行的PX4代码传感器数据来自于真实的传感器数据, PX4_SitL的传感器数据来自于软件仿真。