Ubuntu18.04安装mavros

Ubuntu18.04安装mavros

    • 参考:
  • 我的过程:
        • 安装Bootstrap依赖项:
        • 安装rosdep(包管理器):
        • 检查ros环境:
        • 安装mavros的依赖:
        • 安装mavros:
        • 添加一下px4源码的路径:
        • 运行测试mavros

本来想在树莓派3B上安mavros,但是因为某些原因没成功,下一篇应该会写写这个的经历。这一次用的是ubuntu18.04的电脑,已经有ros melodic的环境。话不多说,请看下文。

参考:

1.ubuntu18.04配置px4编译环境及mavros环境
2.ubuntu下使用GeographicLib库
3.PX4 [FATAL] [1595519040.562797928]: UAS: GeographicLib exception: File not readable /usr/share/Geogr
4.TX1上安装mavros时,出现UAS:GeographicLib exception: File not readable…错误
5.Linux下复制文件夹下所有东西到另一个文件夹(包括隐藏文件)
6.wstool的安装
7.Linux系统下如何运行.sh文件
8.Building mavros failed (Having tried three ways)
9.在树莓派上ROS MAVROS的安装使用
10.树莓派连接pixhawk

我的过程:

我的ros melodic是之前就安好的。因为参考了很多博客,所以下面这个步骤里有哪些是必要的,哪些是不必要的我也不太确定。但是安了也不会出问题。。。

安装Bootstrap依赖项:

$ sudo apt-get install python-rosdep python-rosinstall-generator python -wstool python-rosinstall build-essential cmake

安装rosdep(包管理器):

$ sudo rosdep init
$ rosdep update

检查ros环境:

$ export | grep ROS

安装mavros的依赖:

sudo apt-get install python-catkin-tools python-rosinstall-generator
sudo apt-get install libgeographic-dev
sudo apt-get install geographiclib-tools
sudo apt install python-future

安装mavros:

我没有用源文件安装,找到了两种方法,都贴在这里,我本人1,2方法都用了,2没全用,用了安装和装依赖的部分。
方法1:

sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras

方法2:
不知道和1有什么差别。

# Mavlink
rosinstall_generator --rosdistro melodic mavlink | tee /tmp/mavros.rosinstall
#MAVROS
rosinstall_generator --upstream 
mavros | tee -a /tmp/mavros.rosinstall
wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j4
rosdep install --from-paths src --ignore-src -y

此时如果缺少依赖,可以:

rosinstall_generator --rosdistro melodic $XXX | tee -a /tmp/mavros.rosinstall

然后再运行:

wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j4
rosdep install --from-paths src --ignore-src -y
catkin  build

如果说没有wstool,可以:

 sudo apt-get install python-wstool

不行的话就:

 sudo pip install -U wstool

此处参考上面列的第6篇博客。

还有一个可能的错误,我没遇到,Mavros_extra compile error

tf2_eigen/tf2_eigen.h: No such file or directory
 #include 

这个时候需要在CMakeList中添加tf2_eigen

find_package(catkin REQUIRED COMPONENTS
  mavros
  roscpp
  mavros_msgs
  sensor_msgs
  geometry_msgs
  std_msgs
  visualization_msgs
  urdf
  tf
  tf2_eigen
)

添加一下px4源码的路径:

安装好mavros后,需要添加一下px4源码的路径,否则不能使用px4的launch文件,在终端一打开的那个目录下输入

gedit .bashrc

如果Firmware在home目录下,则在.bashrc中添加如下

source ~/Firmware/Tools/setup_gazebo.bash ~/Firmware/ ~/Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/Firmware/Tools/sitl_gazebo

这里的路径是每次ros启动的时候会从这里启动无人机的模型,因此只有修改这个路径下的固件,在通过roslaunch启动无人机的时候,对应的修改才会对仿真的无人机有效。
我的Firmware在/home/src,所以我添加的是

source /home/src/Firmware/Tools/setup_gazebo.bash ~/Firmware/ /home/src/Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/src/Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/src/Firmware/Tools/sitl_gazebo

如果要用python3,记得在.bashrc里再加上

alias python=python3

保存后,在终端里:

 source .bashrc

运行测试mavros

roslaunch mavros px4.launch

这里有错误

[FATAL] [1595519040.562797928]: UAS: GeographicLib exception: File not readable /usr/share/GeographicLib/geoids/egm96-5.pgm | Run install_geographiclib_dataset.sh script in order to install Geoid Model dataset!

按着指示,应该需要运行install_geographiclib_dataset.sh这个文件。
我们在终端输入:

sudo /opt/ros/melodic/lib/mavros/install_geographiclib_datasets.sh

如果是用源文件安装的mavros,则去mavros那个文件夹搜索install_geographiclib_datasets.sh文件,然后用 sudo权限运行即可。
但是问题还没完,运行这个脚本会提醒我们没有文件夹/usr/share/GeographicLib,我的解决办法是安装这个库。
首先要下载文件:下载地址
我下载的是Geographiclib-1.4.8.tar.gz,这里是百度网盘链接,如果失效了就去上面的官网下载吧。Geographiclib库
然后解压

tar xfpz GeographicLib-1.48.tar.gz

进入文件目录

cd GeographicLib-1.48

创建build文件夹并且进入

mkdir build
cd build 

配置(使用库中自带文件)

../configure

编译+安装

sudo make
sudo make install

接下来在要使用的项目文件的cmakelist.txt加入GeographicLib需要的依赖,

LIST(APPEND LINK_LIBS
${OpenCV_LIBS}
#$ENV{HOME}/ScaViSLAM/svslocal/lib/libGeographic.so
#${Geographic_LIBS}/usr/local/lib/libGeographic.a
/usr/local/lib/libGeographic.so.17.1.1 
/usr/local/lib/libGeographic.so.17 
/usr/local/lib/libGeographic.so
)

考虑到上面要求我们运行的那个.sh脚本应该已经添加了这些依赖,所以这一步我跳过了。
再次运行那个.sh脚本,发现这次它找到了对应的文件夹,开始安装相关的文件,也就是px4.launch启动报错时缺少的/usr/share/GeographicLib/geoids/egm96-5.pgm。如果查看这个.sh脚本,我们会发现它一共想安装3个这样的文件。
如果不用脚本安装,其实我们也可以这样安装:
进入GeographicLib文件夹下,然后用这个格式安装.sh文件最后要求的三个文件,注意,这个语句中gravity,egm96这两个词要根据.sh来替换成需要的那个。

sudo geographiclib-get-gravity egm96

安装完成后会提示类似下面这个:

Installed magnetic dataset emm2015 in/usr/local/share/GeographicLib/magnetic.

注意此处的安装目录与问题报错目录不同,需要把手动转移

在/usr/local/share/目录下:

sudo cp -r GeographicLib /usr/share/

再次运行

roslaunch mavros px4.launch

这次没有问题了。我的飞控是pixhawk2.4.8,用一个usb线连接飞控侧面的usb口和电脑。

你可能感兴趣的:(ubuntu)