ROS 与 SITL

ROS 与 SITL

将 ArduPilot 连接到 ROS

首先,一个好的 ROS 习惯是始终在工作区目录中工作,因此创建一个: 打开终端

mkdir -p ardupilot_ws/src
cd ardupilot_ws
catkin init
cd src

好的 ROS 已准备就绪,让我们启动一个 SITL 实例。 请参阅在 Linux 上设置 SITL 以了解如何安装 SITL。 导航到您的 SITL 安装并启动直升机会话:

sim_vehicle.py -v ArduCopter --console --map

(–控制台显示 mavproxy 控制台,–地图以在地图上显示直升机)

现在你有一个使用 TCP 和 UDP 访问启动的 SITL 实例,你应该有一些这样的行:

"mavproxy.py" "--master" "tcp:127.0.0.1:5760" "--sitl" "127.0.0.1:5501" "--out" "127.0.0.1:14550" "--out" "127.0.0.1:14551" "--map" "--console"

这两个“–out”都是指由MAVProxy创建的UDP连接。我们将使用马夫罗斯的UDP访问。

回到您的 ROS 终端。让我们为启动文件创建一个新目录。

mkdir launch
cd launch

提示

编写启动文件比记住 ROS 命令更简单。

让我们复制 ArduPilot 的 MAVROS 默认启动文件:

您的目录中应该有一个名为“apm.launch”的新文件。“roscp”命令只是在ROS包上调用系统命令的助手。 用你最喜欢的编辑器打开它,我的是 gedit。

To connect to SITL we just need to modify the first line to . save you file and launch it with<arg name="fcu_url" default="udp://127.0.0.1:14551@14555" />

You should see some verbose from MAVROS that read its configuration and some line that indicate a connexion:

连接完成!

让我们使用 RQT 来了解 ArduPilot 信息在 ROS 中的显示方式。通常,MAVROS 将完成大部分翻译 MAVLink <–> ROS 打开另一个终端并启动 RQT

转到插件/主题/主题监视器 嘭! !!!!您会看到 mavros 必须从 ArduPilot 信息中创建的所有主题,单击该框以查看当前值。 您可以在插件/机器人工具/运行时监视器中看到一切正常!

让我们尝试使用 mavros 更改模式: 转到插件/服务/服务调用方 将服务设置为 /mavros/set_mode 将custom_mode设置为“引导”,然后单击呼叫按钮 响应应该是真的,你可以在 /mavros/state 主题上查看该模式现在是 GUIDED 的。它应该在您的MAVProxy控制台中相同。

现在,您知道了使用 ArduPilot 的 ROS 的基础!ROS还有很多其他功能,您可以使用,例如绘图,3D可视化等。

Last updated