首先,我购买的是树莓派3B+,比较新款,所以装不了太老的树莓派系统,安装的是树莓派官方提供的Raspbian Stretch系统。树莓派系统安装过程较为简单,且官网教程详细,这里不做累述。
在PX4官网上,树莓派上安装mavros还写的是适用于Raspbian "JESSIE",这是Stretch的前一个版本。并且在官网上,并没有写ros可以支持Stretch系统。经本人测试,在Stretch上还是可以装上 ROS和MAVROS。
1.调整交换文件大小,主要是为了方便之后的安装,MAVROS同样需要这样的操作。
sudo vim /etc/dphys-swapfile
# 将100改为1024
CONF_SWAPSIZE=1024
# save and exit
#开关一下,使之生效
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
如果1024还不够,可以改成4028,注意,安装完后记得修改回100.
2.
在Raspbian Stretch中,有丢失包错误,我们需要首先通过安装“dirmngr”进行证书管理来修复它。
$ sudo apt-get install dirmngr
3.将ROS repo添加到apt列表
$ sudo sh -c'echo“deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc)main”> /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
4.更新Debian包:
$ sudo apt-get update
$ sudo apt-get upgrade
5.安装Bootstrap依赖项:
$ sudo apt-get install python-rosdep python-rosinstall-generator python -wstool python-rosinstall build-essential cmake
6.安装rosdep(包管理器):
$ sudo rosdep init
$ rosdep update
7.创建一个catkin工作区:
$ mkdir~ / ros_catkin_ws
$ cd~ / ros_catkin_ws
8.构建包和库:
我选择安装ROS-Comm以实现最小化安装。
ROS-Comm:ROS包,构建和通信库。没有GUI工具。
$ rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar> kinetic-ros_comm-wet.rosinstall
$ wstool init -j8 src kinetic-ros_comm-wet.rosinstall
-j8”用于加快处理速度。
如果“wstool init”失败或被中断,您可以通过运行恢复下载(此步骤可能不是必需的):
$ wstool update -j4 -t src
确保安装了所有依赖项:
$ rosdep install --from-paths src --ignore-src --rosdistro kinetic -y
9.建立ROS:
$ sudo mkdir -p /opt/ros/kinetic
$ sudo chown pi:pi /opt/ros/kinetic
$ ./src/catkin/bin/catkin_make_isolated -j2 --install --install-space /opt/ros/kinetic -DCMAKE_BUILD_TYPE=Release
10.Source the new installation:
$ source /opt/ros/kinetic/setup.bash
检验ros环境
$ export | grep ROS
1.安装必要的依赖
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
2.创建catkin工作区
mkdir - p ~/catkin_ws/src
cd catkin_ws
catkin init
3.安装mavlink和mavros
# Mavlink
rosinstall_generator --rosdistro kinetic 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
这个时候会遇到一些报错
类似于缺少依赖
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
mavros: No definition of [geographic_msgs] for OS [debian]
mavros_extras: No definition of [tf] for OS [debian]
test_mavros: No definition of [control_toolbox] for OS [debian]
mavros_msgs: No definition of [geographic_msgs] for OS [debian]
一个个安装它们,你会发现环环相扣,安装好一些,又会有新的依赖缺少,只能一个个好好安装,大概感觉有50多个
安装依赖的命令为:
rosinstall_generator --rosdistro kinetic $XXX | tee -a /tmp/mavros.rosinstall
$XXX填入你要安装的依赖名
这里可以写一个脚本来进行安装,当然这也只是一部分。
.sh文件
for file_name in {geographic_msgs,uuid_msgs,nav_msgs,tf,control_toolbox,actionlib_msgs,realtime_tools,diagnostic_msgs,urdf,eigen_conversions,tf2_ros,dynamic_reconfigure,tf2_eigen,rosconsole_bridge,orocos_kdl,visualization_msgs,angles,tf2_py,tf2,tf2_msgs,urdf_parser_plugin,diagnostic_updater,control_msgs,trajectory_msgs,actionlib,rosbag_migration_rule}
do
rosinstall_generator --rosdistro kinetic $file_name | tee -a /tmp/mavros.rosinstall
done
有的时候由于网络原因,安装会失败,得反复安装。
评论区中有朋友说下面一条命令可以解决所以依赖安装的问题,可以尝试一下:
rosinstall_generator --upstream mavros --deps | tee -a /tmp/mavros.rosinstall
4.安装完所有依赖后,再次运行
wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j4
rosdep install --from-paths src --ignore-src -y
catkin build
还有一个可能的错误,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
)
安装好后,我们来介绍树莓派连接pixhawk的实例
https://blog.csdn.net/Lin_QC/article/details/90373992