Ubuntu 16.04 ROS Kinect 安装 mavros实现无人机外部控制


做无人机有一段时间了,下面讲一下无人机运用ros进行外部控制的mavros功能包的安装过程。
用的飞控是Pixhawk 4 ,飞控的固件是PX4。对于APM的固件也可以用,理论上来说对于使用mavlink协议的无人机都可以使用mavros功能包,只是对于PX4和APM固件的支持比较好。这个功能包的使用范围广,对于ARM和x86架构的处理器都可以运行。
mavros的作用就是一个连接ros和飞控的一个桥梁。
安装方法有两种任选一种就可以。

二进制文件安装mavros

通过二进制安装相对来说比较简单,但是扩展性比较差,如果后面要更改mavros的一些东西就不推荐用这种方式安装。
apt-get直接安装

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

还需要安装一个GeographicLib库才可以运行

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

源码编译安装

以下是我个人比较推荐的一种安装方式,对以后的无人机开发很方便。

安装依赖

sudo apt-get install python-catkin-tools python-rosinstall-generator -y

创建工作空间

接下来为mavros创建一个工作空间

mkdir -p ~/mavros_ws/src
cd ~/mavros_ws
catkin init
wstool init src

安装mavlink

kinetic版本以外的ros也可以安装,改一下版本就可以了

rosinstall_generator --rosdistro kinetic mavlink | tee /tmp/mavros.rosinstall

下载mavros

可以选择稳定版和最新版,下面的命令选择一个执行即可
稳定版

rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall

最新版

rosinstall_generator --upstream-development mavros | tee -a /tmp/mavros.rosinstall

补全依赖

-j4改为你电脑的CPU核数

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

安装GeographicLib

sudo ./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

编译

这个过程有可能比较长。

catkin build

添加环境变量

将环境变量添加到.bashrc,方便以后使用。

echo "source ~/mavros_ws/devel/setup.bash" >>  ~/.bashrc

使用

安装完成过后就可以使用了。
mavros可以通过串口、tcp、udp多种方式连接到飞控。
下面介绍一下通过串口的方式连接到mavros,对于通过tcp、udp方式在后面的为pixhawk添加WiFi的教程里面会有介绍。
通过一个USB转串口模块连接飞控的串口二,飞控的串口二为高速串口,在进行外部控制mavros运行的时候和飞控会有很多的数据传输,所以需要高速串口才可以。
USB转串口在淘宝上很多,买一个波特率支持大一点的,要至少支持921600.我用的是下面这种。
USB转飞控模块
在飞控将飞控上端口的TX和USB转串口上的RX接在一起,飞控上端口的RX和USB转串口上的TX接在一起,GND也接在一起共地减少噪声。对于飞控的引脚的定义查阅飞控的手册即可。
接好线过后把飞控的SYS_COMPANION 参数设置为Companion Link (921600 baud, 8N1)
参数设置好了过后把线连接到电脑上,我们会在、/dev/ttyUSB下面看到这个设备。
运行mavros

roslaunch mavros px4.launch fcu_url:=/dev/ttyUSB0:921600

对于这个USB端口好可能会变,这个可以参考我之前的博客用udev的方式解决这个问题。
接下来就可以根据mavros的ros话题说明编写程序了

Ubuntu 16.04安装ROS Kinetic(假设你指的是ROS Kinetic Kame),你可以按照以下步骤进行: 1. 首先,设置你的sources.list文件以包括“debxenial main”(注意Ubuntu 16.04的代号是Xenial Xerus): ``` sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' ``` 2. 添加ROS的密钥: ``` sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 ``` 3. 更新你的软件包索引: ``` sudo apt-get update ``` 4. 安装ROS: ``` sudo apt-get install ros-kinetic-desktop-full ``` 5. 设置ROS环境变量,这样ROS可以在你的终端自动设置,当你打开一个新的终端时自动生效: ``` echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc ``` 6. 安装依赖项用于rosinstall,这是一个ROS的文件自动生成工具: ``` sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential ``` 对于Kinect传感器的支持,你需要安装相应的驱动和软件包。以下是一般步骤: 1. 安装OpenNI驱动,这些驱动是与Kinect硬件通信所必需的: ``` sudo apt-get install ros-kinetic-openni-launch ``` 2. 安装Kinect相关的其他软件包(例如kinect节点): ``` sudo apt-get install ros-kinetic-kinect-camera ``` 3. 初始化rosdep,这样你就能够使用某些硬件功能: ``` sudo apt-get install python-rosdep sudo rosdep init rosdep update ``` 4. 如果你打算使用kinect,你可能还需要安装一些额外的依赖,例如: ``` sudo apt-get install libopenni2-dev ``` 请确保你安装的驱动和软件包版本与ROS Kinetic版本兼容。安装完所有软件包后,你可能需要重新启动你的计算机。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值