目标

这篇教学是用来展示一下Otus追踪器基本使用方法。我们将向您展示如何通过远程控制控制机器人,机器人自身已经写好了代码可以自动追随无人机位置。 如果您也想这么做, 您不需要写任何代码, 因为所有的源代码都可以从这个tutorial中学习,你可以购买其他的组件来模拟我们视频展示的场景。 一旦您学习完这篇教学, 您会明白如何在您的产品中使用我们的Otus 跟踪器。

Cherokey ROS Project 是这篇教学的核心, 您可以在rcbenchmark_ros_pkg/rcb_python中找到它。 你需要以下操作来完成这篇教学:

  • ROS安装在Linux机器上
  • RCbenchmark Tracking Lab 2017 软件安装在您的windows机器上(点击 此处 进行下载安装和使用, 可以点击此处
  • RCbenchmark 客户下载代码 (访问下载页面后下载链接在页面底部).
  • Otus 跟踪器 x2 和其他硬件设备可以在此处找到
  • Cherokey 4WD (or your own robot but the code for the controller will have to be modified)
  • XBee x2 (请参阅 part 4)
  • Arduino (请参阅 part 5)

本部分教学目的为:

  • 安装和配置XBee设备
  • 解释设置在机器人上Arduino代码
  • 提供我们的ROS包的高级架构
  • 解释每个ROS节点背后的逻辑及其目的
  • 展示其可以运行! 我们正在使用ROS,但同样的原理适用于许多其他软件包。

安装XBee (1/2)

Digi International的Digi XBee无线电通信模块是机器人开发的得力助手。 它们是其他类型的网络通信协议(如Wi-Fi和蓝牙)的替代品。 要查找有关Digi XBee设备的更多信息,请查看这里.

在使用XBee模块之前,您需要安装XCTU software可以在Digi网站上找到。 XCTU是一个免费软件,允许您配置XBee模块。

安装XBee (2/2)

要在Linux和ROS上使用和编程XBee模块,您必须安装一些依赖项,如右图所示:

  • 安装 Python Package Manager pip (1/4)
  • 安装 Python tools for working with XBee radios (2/4)
  • 更新 pip Packages (3/4)
  • 授予当前用户访问串行端口的权限 (4/4)
sudo apt install python-pip
pip install xbee --user
pip install --upgrade pip
sudo adduser @USER dialout

请务必重新登录以获取这些权限。

1/4

2/4

3/4

4/4

配置XBee

对于本教程,您必须使用2个XBee模块(802.15.4通信协议) 例如,我们正在使用 XBee S1 802.15.4 , 这里还有 其他更多的 组件可以购买。XCTU软件用于设置每个XBee模块。 您不需要自己配置设备,因为我们为您提供了如右图所示的XBee配置文件:

… > rcbenchmark_ros_pkg > rcb_python > other > Xbee Config

这里有两个文件:

  • xbee_coordinator.xml = Coordinator XBee = Transmitter
  • xbee_endDevice.xml = End Device XBee = Receiver

你需要将配置文件加载到相应的XBee设备,然后按Write按钮。 协调员将在XCTU中以字母“C”表示。 终端设备将在XCTU中用字母“E”表示。

Arduino代码

为了控制我们的机器人我们使用了 Arduino Romeo V2主板。该主板有两个正极,对于机器人来讲是其集成的2路直流电机驱动器和XBee插座。如果您打算购买Arduino板,请确保其板上集成了XBee socket,否则您需要购买 XBee shield

在本教程中,Arduino主要用于接收和解码XBee数据包并将命令发送到电机。 在右侧,您可以看到Arduino代码中找到的void loop() 的简化流程图.Arduino源代码已为您提供的,可以在以下位置找到:

… > rcbenchmark_ros_pkg > rcb_python > src> Arduino Code

您可以下载并安装Arduino IDE这里.

高级架构 (ROS)

正如您在右侧所看到的,使用ROS的一个优点是它提供了模块化。本教程使用的ROS系统分为各种模块,称为[ nodes ](http://wiki.ros.org/Nodes)。 节点是执行计算的过程。 例如,节点是:

  • rcbenchmark_client_udp = “Client Node”
  • rcbenchmark_pose_parser = “Pose Parser Node”
  • cherokey_autonomous_publisher = “Controller Node”
  • cherokey_xbee_XXXXX_XXXXXXXXXXXXX = “Xbee Node”

在这里,每个节点通过称为[ topics ](http://wiki.ros.org/Topics)的东西连接到另一个节点。 主题被命名为总线,节点交换[ messages ](http://wiki.ros.org/Messages)。 消息是一种简单的数据结构,包括类型字段。 我们系统中使用的主题是:

  • /rcbenchmark
  • /rcbenchmark_pose_ctr1/rcbenchmark_pose_ctr2
  • /cherokey_motors

节点通过发布或订阅这些主题来相互通信。 比如,“Controller Node” 发布信息,被命名为“cherokey_msg.msg” 到话题 “/cherokey_motors”,同时Xbee Node”通过“/ cherokey \ _motors”主题订阅名为“cherokey \ _msg.msg”的消息。

本教程中使用的所有消息都可以在以下位置找到: … > rcbenchmark_ros_pkg > rcb_python > msg

注意: 在这个教程中, 我们正在引用 cherokey project 以 Python语言编写,可以从 rcbenchmark_ros_pkg工作区中找到 (请看右边).

Client Node (ROS)

客户端节点的逻辑显示在右侧。 客户端节点的作用是根据从 RCbenchmark Tracking Lab 2017 服务器获取的UDP包构建 rcbenchmark \ _msg 。 构造的消息发布在 / rcbenchmark 主题上。

client node客户端节点可在以下位置找到:

… > rcbenchmark_ros_pkg > rcb_python > src> rcbenchmark_client_udp.py

您需要将UDP \ _IP变量设置为目标地址。

Pose Parser Node (ROS)

右图就是Pose parser node 的结构解析, pose parser node的功能在于解析rcbenchmark_msg同时获取 rcbenchmark_pose. 新信息不包含线性,角速度,加速度。

构造的消息发布在 / rcbenchmark \ _pose \ _ctr \#主题上。 因为,我们可能有多个控制器将数据流传输到ROS,我们必须在不同的主题上发布 rcbenchmark \ _pose (每个控制器的主题\)。 例如,如果我们有2个控制器,我们将发布到 / rcbenchmark \ _pose \ _ctr1 /rcbenchmark_pose_ctr2topics. pose parser node 可以在以下位置找到: … > rcbenchmark_ros_pkg > rcb_python > src> rcbenchmark_pose_parser.py

您需要更改“if else if”语句中的行,以便它们包含控制器的ID而不是默认值。

Controller Node (ROS)

控制器节点的逻辑显示在右侧。 控制器节点的作用是计算必须发送给机器人的电机命令的值。 该节点构造 cherokey \ _msg 并在 / cherokey \ _motors 主题上发布它。

本教程中介绍的控制器是一种简单的算法,可以自动控制机器人位置。 这样,机器人可以跟随另一个机器人,不需要人为直接控制。这个节点可以被移除修改或者以您想要的方式实施, 但它提供了使用 Cherokey 机器人可以实现的功能的示例。不需要太多的数学公式就可完成,但代码有很好的注释。

控制器节点可在以下位置找到: … > rcbenchmark_ros_pkg > rcb_python > src> cherokey_autonomous_publisher.py

XBee Node (ROS)

XBee节点的逻辑显示在右侧。 XBee节点的作用是序列化 cherokey \ _msg 并将其发送到位于机器人上的终端设备XBee。 需要注意的一件重要事情是,一旦连接XBee设备,您必须知道它已连接到哪个USB端口。 默认情况下,代码将端口号定义为: / dev / ttyUSB0 **。 要验证XBee正在使用哪个端口,您可以运行右侧显示的命令。

可以在以下位置找到XBee节点:

… > rcbenchmark_ros_pkg > rcb_python > src> cherokey_xbee.py

注意: XBee通常连接到/ dev / ttyUSBX端口,其中X是整数。

在RCbenchmark跟踪实验室中启动服务器

获取目标IP地址。 您可以在目标上的终端中使用命令/ sbin / ifconfig来获取IP地址。 使用默认端口5400并激活服务器。

Cherokey 自动启动 (ROS)

roslaunch 是一个工具,可以通过SSH本地和远程轻松启动多个ROS节点,以及设置参数在parameter server. 而不是通过 rosrun 在当时启动节点

如右图所示,我们一次启动4个节点。 通过shell执行 cherokey \ _autonomous.launch 的命令显示在右下角。

启动文件可在以下位置找到:

… > rcbenchmark_ros_pkg > rcb_python > launch

注意: 没有必要运行 roscore ,因为.launch文件会自动运行它。

results matching ""

    No results matching ""