使用rospy嵌套socket从工控机实时发送位姿信息给本机

实时的从rostopic中订阅数据(位姿信息)并且发送到另一台电脑上面,两台电脑使用socket进行通信,socket 服务端内部建立subscriber节点来订阅话题。设定为每隔1秒发送一次信息。

客户端:

import socket
client = socket.socket() # 有一些默认参数,即可使用ipv4,这一句是声明socket类型和返回socket连接对象
client.connect(("10.20.20.115",6666)) # 建立连接:传入服务器端IP号和要连接的应用程序的端口号

client.send(b'Start')#客户端发送命令开始
#关键在于接受服务端的消息
while 1:
    data = client.recv(200) #客户端可以接收服务器端的消息
    print(data.decode())

client.close()

服务端:

import socket
import rospy
from nav_msgs.msg import Odometry
import time


global asd


def poseCallback(msg):
    time.sleep(1)
    global asd
    print("aa")
    asd= msg.pose.pose
    print(asd)
    conn.send(str(asd))


def run(conn):
    global asd
    
    while not rospy.is_shutdown():
        rospy.Subscriber("/lidar_pose", Odometry, poseCallback,queue_size =10)
        rospy.spin()
        

server = socket.socket()
server.bind(("10.20.20.115",6666)) 
server.listen(25) 
print('waiting the call')
conn,addr = server.accept() 
print('the call has comming')


rospy.init_node('pose_subscriber')
run(conn)


#conn.send(msg)

slam刚入门小白,之前尝试微服务框架通信但是影响了ros环境没成功,不得已只能采用socket,没想到两天就跑通了。初学者还是先从简单的socket练起吧,同时还学了一些ros的基础知识,后面还需要深入学习。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值