Objectives

本教程将介绍 rcbenchmark _ros _pkg 中的 RCbenchmark ROS项目。 您需要以下内容才能完成本教程:

本教程的目标是:

  • 提供我们的ROS包的高级架构
  • 解释每个ROS节点背后的逻辑及其目的
  • 展示其可行性!

如图所示,两个Otus 跟踪器(带有ID)并在Gazebo模拟环境上运行,Gazebo是一个开源机器人模拟器,可以与ROS兼容并且提供强大的界面以用来在现实环境中模拟机器人。

高级架构(ROS/Gazebo)

在右侧,您可以看到本教程中使用的高级架构体系。 节点是:

  • rcbenchmark_client_udp = “Client Node”
  • rcbenchmark_pose_parser = “Pose Parser Node”
  • gazebo

Gazebo 节点并非通过源代码启动, Gazebo通过启动文件启动。

/gazebo/set_model_state 在Client Node里面. 一旦调用完成后,模型将更新 (/gazebo/model_states)在 Gazebo 世界中.

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

注意: 在本教程中,我们引用了在rcbenchmark_ros_pkg工作空间中使用C++编写的rcbenchmark项目(参见右侧)。

RCbenchmark客户端帮助程序代码(RCbenchmark client helper code)

RCbenchmark客户端帮助程序代码的目的是将ROS项目中所需的各种功能组合在一起。

代码包含以下功能:

  • 用于实现UDP通信的传输层
  • 验证机器字节顺序
  • 转换UDP字节包从服务器rcbenchmark_msg
  • rcbenchmark_msg解析为rcbenchmark_pose
  • 打印rcbenchmark_msg
  • 打印rcbenchmark_pose

可以在以下位置找到rcbenchmark客户端帮助程序代码的header文件(.h):

… > rcbenchmark_ros_pkg > rcbenchmark > include> rcbenchmark > rcbenchmark_client_udp.h

可以在以下位置找到rcbenchmark客户端帮助程序的C ++源代码(.cpp):

… > rcbenchmark_ros_pkg > rcbenchmark > src > rcbenchmark_client_helper.cpp

Client Node (ROS)

客户端节点的结构逻辑显示在右侧。 客户端节点的作用是从RCbenchmarkTrackingLab2017服务器获取UDP包构建rcbenchmark_msg。 构造的消息发布在/rcbenchmark主题上。同时, 我们使用gazebo_msgs/SetModelState 服务来设置在Gazebo模拟器中的控制机状态通过发布信息gazebo_msgs/ModelState.

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

…>rcbenchmark_ros_pkg>rcb_python>src>rcbenchmark_client_udp.py

您需要将UDP_IP变量设置为目标地址。

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

… > rcbenchmark_ros_pkg > rcbenchmark > src> rcbenchmark_client_udp.cpp

Pose Parser Node (ROS)

右图就是Pose parser node 的结构解析, pose parser node的功能在于解析rcbenchmark_msg同时获取 rcbenchmark_pose. 新信息不包含线性,角速度,加速度。 pose parser node 可以在以下位置找到: … > rcbenchmark_ros_pkg > rcb_python > src> rcbenchmark_pose_parser.py

注意: 由于Gazebo上的控制器模拟完全基于rcbenchmark节点,因此本教程中不需要pose parser node(姿势解析器节点),但为方便起见,我们添加了它。

RCbenchmark 启动 (ROS)

客户端节点和姿势解析器节点分别以黄色和绿色突出显示。 以橙色突出显示的代码段是创建Gazebo节点并启动空白世界所必需的。 以蓝色突出显示的代码段用于将机器人的描述加载到[ Parameter Server ](http://wiki.ros.org/Parameter Server)中。 节点使用此服务器在运行时存储和检索参数。 在我们的例子中,我们正在加载以下发现的Otus跟踪器的描述:

… > rcbenchmark_ros_pkg > urdf> tracker.urdf

Otus跟踪器使用[统一机器人描述格式\(URDF \)](http://wiki.ros.org/urdf)**表示。 用粉红色突出显示的两个区块代码将Otus跟踪器产生到Gazebo世界。 重要的是要注意节点名称必须是唯一的,模型**是我们案例中的Otus跟踪器的ID必须匹配。

通过shell执行 rcbenchmark.launch 的命令显示在右下角。

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

… > rcbenchmark_ros_pkg > rcbenchmark> launch

注意: 这里不需要运行 roscore ,因为.launch文件会自动运行它。

注意: 在启动文件中添加/修改模型 \(控制器ID \)参数时,添加/修改客户端节点的源代码也很重要。

results matching ""

    No results matching ""