ROS-Industrial 之 industrial_robot_client 分析理解(2)

本文深入剖析ROS-Industrial的industrial_robot_client包,重点探讨ROBOT_STATE_INTERFACE和JOINT_TRAJECTORY_INTERFACE。ROBOT_STATE_INTERFACE负责获取机器人状态信息,而JOINT_TRAJECTORY_INTERFACE则将ROS中的控制指令转化为机器人控制器可理解的格式。文章通过代码段解释了接口功能,包括数据转换、关节运动控制及轨迹规划等关键操作。
摘要由CSDN通过智能技术生成

在之前的ROS-Industrial 之 industrial_robot_client 分析理解(1)中分析过client包提供的共用的函数,还有将机器人的状态信息与关节信息转换到ROS进行发布的两个类,这里着重理解读取机器人状态信息的接口。

ROBOT_STATE_INTERFACE

先来看一下机器人状态信息接口的整个类结构:

#ifndef ROBOT_STATE_INTERFACE_H
#define ROBOT_STATE_INTERFACE_H

#include <vector>
#include <string>
#include "simple_message/smpl_msg_connection.h"
#include "simple_message/message_manager.h"
#include "simple_message/message_handler.h"
#include "simple_message/socket/tcp_client.h"
#include "industrial_robot_client/joint_relay_handler.h"
#include "industrial_robot_client/robot_status_relay_handler.h"

namespace industrial_robot_client
{
  namespace robot_state_interface
  {
    using industrial::smpl_msg_connection::SmplMsgConnection;
    using industrial::message_manager::MessageManager;
    using industrial::message_handler::MessageHandler;
    using industrial::tcp_client::TcpClient;
    using industrial_robot_client::joint_relay_handler::JointRelayHandler;
    using industrial_robot_client::robot_status_relay_handler::RobotStatusRelayHandler;
    namespace StandardSocketPorts = industrial::simple_socket::StandardSocketPorts;

    //从机器人控制中读取机器人状态数据并将信息发布到与之匹配的ROS话题中的通用模版
    class RobotStateInterface
    {
    public:
      RobotStateInterface();
      //用缺省的方法初始化机器人的通讯连接
      //default_ip: 用于对机器人进行连接的缺省IP地址[OPTIONAL]
      //default_port:用于机器人连接的缺省端口号[OPTIONAL]
      bool init(std::string default_ip = "", int default_port = StandardSocketPorts::STATE);

      //初始化通讯连接句柄
      bool init(SmplMsgConnection* connection);

      //初始化通讯连接句柄与关节名称
      bool init(SmplMsgConnection* connection, std::vector<std::string>& joint_names);

      //开始处理信息并发布到指定话题
      void run();

      //获取当前通讯句柄(通讯实例)
      SmplMsgConnection* get_connection()
      { return this->connection_; }

      //获取活动消息管理器对象
      MessageManager* get_manager()
      { return &this->manager_;   }

      //获取关节名称
      std::vector<std::string> get_joint_names()
      { 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值