Ubuntu18.04 PX4环境搭建
设备
参考链接
XTDrone团队的:仿真平台基础配置(PX4 1.11版)
https://www.yuque.com/xtdrone/manual_cn/basic_config_1.11
CSDN网友的:Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建(参考的XTDrone)
https://blog.csdn.net/qq_45067735/article/details/107303796?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.control
UAV环境搭建(虚拟机18.04)
温馨提示:每个人安装都会遇到不一样的问题,遵循一句话:遇到啥问题,就解决啥问题,干就完事了
依赖安装
按步骤执行
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
sudo apt install python3-pip
pip3 install packaging numpy empy toml pyyaml jinja2 -i https://pypi.tuna.tsinghua.edu.cn/simple
ROS
设置源
这里需要设置源:有清华的、中科大的、官方的
我使用的是官方的
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
设置key
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
安装
sudo apt update
sudo apt install ros-melodic-desktop
这里安装的不是full版本,因为这个版本自带的gazebo会有一些问题,所有后面单独装
设定环境
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
构建软件包的依赖关系
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo apt install python-rosdep
初始化
sudo rosdep init
执行rosdep update更新
rosdep update
启动roscore测试
roscore
输出下面,说明成功:
... logging to /home/robin/.ros/log/a5118af0-5474-11ea-8b86-e454e828c524/r
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://robin-G3-3590:34223/
ros_comm version 1.12.14
SUMMARY
========
PARAMETERS
* /rosdistro: kinetic
* /rosversion: 1.12.14
NODES
auto-starting new master
process[master]: started with pid [30244]
ROS_MASTER_URI=http://robin-G3-3590:11311/
setting /run_id to a5118af0-5474-11ea-8b86-e454e828c524
process[rosout-1]: started with pid [30261]
started core service [/rosout]
建立工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source devel/setup.bash
ROS安装成功!
Gazebo
一部分参照官网的步骤,一部分参考网友链接
设置计算机以接受来自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
#如果出现下面:
deb http://packages.osrfoundation.org/gazebo/ubuntu-stable bionic main
#说明正确
设置密钥
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
安装gazebo9.1指令
sudo apt-get update
sudo apt-get install gazebo9=9.1*
在终端输入gazebo,能打开,说明gazebo安装成功
安装ROS的Gazebo插件
sudo apt install ros-melodic-gazebo9-*
sudo apt install ros-melodic-gazebo-*
测试gazebo
roscore
rosrun gazebo_ros gazebo
能打开说明ros和gazebo插件安装成功
使用
gazebo --version
查看gazebo版本,我安装的是9.16版本
Gazebo安装成功!!
MAVROS
MAVROS的本质是ROS的一个功能包,其作用就是ROS与PX4平台的通信桥梁。
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
#最后一步需要等待一段时间,网络要好一点,请耐心等待
源码安装
-
参考链接
主要参考链接https://blog.csdn.net/zouxu634866/article/details/106526769
官网链接:https://docs.px4.io/master/en/ros/mavros_installation.html
阿木实验室提供安装链接:https://bbs.amovlab.com/forum.php?mod=viewthread&tid=688&highlight=mavros
-
安装依赖项
sudo apt-get install python-catkin-tools python-rosinstall-generator -y
mkdir -p ~/mavros_ws/src
cd ~/mavros_ws
catkin init
wstool init src
rosinstall_generator --rosdistro melodic mavlink | tee /tmp/mavros.rosinstall
rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall
git clone https://gitee.com/zhuleilei33/mavros.git
#这一步是从gitee拷贝zhuleilei大神仓库的mavros源码包
#也可以直接从官网的github链接拷贝,如下
#git clone https://github.com/mavlink/mavros.git
这里我有一个小疑问,官网github的源码安装说明和px4官网的安装说明,都没有进行git clone操作,但是如果不拷贝代码的话,就没有下面(/catklin_ws/src/mavros/mavros/scripts/install_geographiclib_datasets.sh)这个脚本,很奇怪,如有大神知道,不吝赐教,感谢!
- 创建工作区和部门
回到mavros_ws目录下运行:
wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j4
rosdep install --from-paths src --ignore-src -y
- 安装GeographicLib数据集:
在mavros_ws目录下运行:
sudo ./src/mavros/mavros/scripts/install_geographiclib_datasets.sh
catkin build
这个过程要等待一段时间,请耐心等待
gedit ~/.bashrc
在.bashrc文件最后加上下面这句话:
source ~/mavros_ws/devel/setup.bash
#这里,mavros_ws是你自己工作空间的名字
保存后退出
这里mavros的通信测试需要相应的px4仿真或者硬件环境,请安装下面PX4环境的之后,再验证mavros是否安装成功。
PX4
这部分的操作按照xtdrone团队的方法来就好了,尽量选择从xtdrone的gitee拷贝代码,官方的github太慢。这里我直接贴过来:
git clone https://gitee.com/robin_shaun/PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.11.0-beta1
bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools #安装python依赖
修改.gitmodules(在PX4_Firmware文件夹中ctrl+h查看隐藏文件可以找到 图左下角第一个)
打开之后将内容替换成如下:
[submodule "mavlink/include/mavlink/v2.0"]
path = mavlink/include/mavlink/v2.0
url = https://gitee.com/robin_shaun/c_library_v2.git
branch = master
[submodule "src/drivers/uavcan/libuavcan"]
path = src/drivers/uavcan/libuavcan
url = https://gitee.com/robin_shaun/uavcan.git
branch = px4
[submodule "Tools/jMAVSim"]
path = Tools/jMAVSim
url = https://gitee.com/robin_shaun/jMAVSim.git
branch = master
[submodule "Tools/sitl_gazebo"]
path = Tools/sitl_gazebo
url = https://gitee.com/robin_shaun/sitl_gazebo.git
branch = master
[submodule "src/lib/matrix"]
path = src/lib/matrix
url = https://gitee.com/robin_shaun/Matrix.git
branch = master
[submodule "src/lib/ecl"]
path = src/lib/ecl
url = https://gitee.com/robin_shaun/ecl.git
branch = master
[submodule "boards/atlflight/cmake_hexagon"]
path = boards/atlflight/cmake_hexagon
url = https://gitee.com/robin_shaun/cmake_hexagon.git
branch = px4
[submodule "src/drivers/gps/devices"]
path = src/drivers/gps/devices
url = https://gitee.com/robin_shaun/GpsDrivers.git
branch = master
[submodule "src/modules/micrortps_bridge/micro-CDR"]
path = src/modules/micrortps_bridge/micro-CDR
url = https://gitee.com/robin_shaun/micro-CDR.git
branch = px4
[submodule "platforms/nuttx/NuttX/nuttx"]
path = platforms/nuttx/NuttX/nuttx
url = https://gitee.com/robin_shaun/NuttX.git
branch = px4_firmware_nuttx-9.1.0+
[submodule "platforms/nuttx/NuttX/apps"]
path = platforms/nuttx/NuttX/apps
url = https://gitee.com/robin_shaun/NuttX-apps.git
branch = px4_firmware_nuttx-9.1.0+
[submodule "platforms/qurt/dspal"]
path = platforms/qurt/dspal
url = https://gitee.com/robin_shaun/dspal.git
[submodule "Tools/flightgear_bridge"]
path = Tools/flightgear_bridge
url = https://gitee.com/robin_shaun/PX4-FlightGear-Bridge.git
branch = master
[submodule "Tools/jsbsim_bridge"]
path = Tools/jsbsim_bridge
url = https://gitee.com/robin_shaun/px4-jsbsim-bridge.git
[submodule "src/examples/gyro_fft/CMSIS_5"]
path = src/examples/gyro_fft/CMSIS_5
url = https://gitee.com/mirrors/CMSIS_5
再次执行子模块更新指令
git submodule update --init --recursive
编译
make px4_sitl_default gazebo
在PX4_Firmware中修改 ~/.bashrc,加入以下代码,注意路径匹配
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
然后运行如下命令,此时会启动Gazebo,如下图所示
cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch
并运行
rostopic echo /mavros/state
若connected: True,则说明MAVROS与SITL通信成功。说明mavros和px4环境都搭建完成。
---
header:
seq: 11
stamp:
secs: 1827
nsecs: 173000000
frame_id: ''
connected: True #这里显示True 表明连接成功
armed: False
guided: False
manual_input: True
mode: "MANUAL"
system_status: 3
---
后面的进一步学习使用,请参考XTdrone团队链接https://www.yuque.com/xtdrone,在这里也感谢XTdrone团队的指引。QGC地面站的安装较简单,这部分就不详细说明了。
整个流程是自己学习的一个记录和总结,有学习的小伙伴欢迎一起交流。
如果有侵权的地方,请联系我!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)