RflySimSDK v4.10
RflySimSDK说明文档
载入中...
搜索中...
未找到
UdpRosBridge类 参考

Public 成员函数

 __init__ (self, copter_id=1, target_ip="127.0.0.1", ros_node=None)
 构造函数
 start (self)
 启动桥接线程
 stop (self)
 停止桥接线程并清理资源

Public 属性

 copter_id = copter_id
 target_ip = target_ip
 ros_node = ros_node
bool running = True
int recv_port = 30100 + copter_id * 2 - 1
int send_port = 30100 + (copter_id - 1) * 2
str base_topic = 1 else f"/mavros{copter_id}"
 recv_socket = None
 send_socket = None
 pub_sim = None
 pub_pose = None
 pub_vel = None
 pub_gps = None
 sub_setpoint = None
 srv_param = None
 srv_mode = None
 srv_arm = None
 recv_thread = None
 ros_thread = None
bool norm_warning_printed = True

Protected 成员函数

 _init_socket (self)
 初始化UDP套接字
 _init_ros (self)
 初始化ROS发布者、订阅者和服务
 _handle_param_set (self, req, res=None)
 处理ROS参数设置请求的服务回调
 _handle_set_mode (self, req, res=None)
 处理模式设置请求的服务回调
 _handle_arm (self, req, res=None)
 处理解锁/上锁请求的服务回调
 _handle_setpoint (self, msg)
 处理接收到的ROS控制指令并转发给CopterSim
 _parse_s_out2_simulator (self, data)
 解析从CopterSim接收到的数据并发布为ROS消息
 _recv_loop (self)
 UDP接收循环线程函数
 _ros_loop (self)
 ROS事件处理循环线程函数

构造及析构函数说明

◆ __init__()

__init__ ( self,
copter_id = 1,
target_ip = "127.0.0.1",
ros_node = None )

构造函数

  • 参数
    copter_id无人机ID,默认值为 1。
    target_ip目标IP地址,默认值为 '127.0.0.1'。
    ros_nodeROS2节点对象(仅ROS2需要),默认值为 None。
    解析
        初始化UDP端口、ROS相关发布者/订阅者/服务,并启动监听线程。
        根据 copter_id 自动计算监听端口 (30100 + id*2 - 1) 和发送端口 (30100 + (id-1)*2)。
    
函数调用图:

成员函数说明

◆ _handle_arm()

_handle_arm ( self,
req,
res = None )
protected

处理解锁/上锁请求的服务回调

  • 参数
    req请求数据
    res响应数据(ROS2使用)
    返回
    ROS1返回(success, result),ROS2返回res对象
这是这个函数的调用关系图:

◆ _handle_param_set()

_handle_param_set ( self,
req,
res = None )
protected

处理ROS参数设置请求的服务回调

  • 参数
    req请求数据
    res响应数据(ROS2使用)
    返回
    ROS1返回元组,ROS2返回res对象
这是这个函数的调用关系图:

◆ _handle_set_mode()

_handle_set_mode ( self,
req,
res = None )
protected

处理模式设置请求的服务回调

  • 参数
    req请求数据
    res响应数据(ROS2使用)
    返回
    ROS1返回bool,ROS2返回res对象
这是这个函数的调用关系图:

◆ _handle_setpoint()

_handle_setpoint ( self,
msg )
protected

处理接收到的ROS控制指令并转发给CopterSim

  • 参数
    msgROS消息对象 (PositionTarget)
    处理接收到的 /mavros/setpoint_raw/local 话题消息
    根据 type_mask 判断控制模式,填充 SILIntFloat 结构体
    通过 UDP 发送给 CopterSim
    
这是这个函数的调用关系图:

◆ _init_ros()

_init_ros ( self)
protected

初始化ROS发布者、订阅者和服务

  • 参数
函数调用图:
这是这个函数的调用关系图:

◆ _init_socket()

_init_socket ( self)
protected

初始化UDP套接字

  • 参数
这是这个函数的调用关系图:

◆ _parse_s_out2_simulator()

_parse_s_out2_simulator ( self,
data )
protected

解析从CopterSim接收到的数据并发布为ROS消息

  • 参数
    data接收到的二进制数据
    解析 CopterSim 的 168 字节 SOut2Simulator 数据包
    使用 DllSimCtrlAPI 的 Data3D 类进行解析
    直接映射到标准 ROS 消息并发布
    
这是这个函数的调用关系图:

◆ _recv_loop()

_recv_loop ( self)
protected

UDP接收循环线程函数

  • 参数
函数调用图:
这是这个函数的调用关系图:

◆ _ros_loop()

_ros_loop ( self)
protected

ROS事件处理循环线程函数

  • 参数
    处理 ROS 订阅和服务的事件循环
这是这个函数的调用关系图:

◆ start()

start ( self)

启动桥接线程

  • 参数
函数调用图:
这是这个函数的调用关系图:

◆ stop()

stop ( self)

停止桥接线程并清理资源

  • 参数
    停止所有线程并清理资源
这是这个函数的调用关系图:

该类的文档由以下文件生成: