基于Python的turtlesim远程操作系统1.0
本帖最后由 KeyError 于 2023-3-5 00:25 编辑Turtlesim远程操作系统1.0隆重推出{:10_298:}
该系统采用类似CMD的方法,让用户输入指令后远程操控
基本思路
1.树莓派端
创建一个无限循环,
接受PC端的指令。
如果指令有效,
发送消息让小乌龟移动
2.PC端
无限循环接受指令,
并发送指令。
代码请自己创建程序包保存。
树莓派端代码:
#soc.py
from socket import *
import time
import rospy
from geometry_msgs.msg import Twist
HOST = ""# HOST 变量是空白的,表示它可以使用任何可用的地址。
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpSerSock = socket(family=AF_INET, type=SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)# 开始TCP监听,监听5个请求
def move_turtle(one, two): #定义启动函数
rospy.init_node("move") #创建节点名为"move"的节点
pub = rospy.Publisher("/turtle1/cmd_vel", Twist, queue_size=10)
vel = Twist()
vel.linear.x = one / 10
vel.linear.y = 0
vel.linear.z = 0
vel.angular.x = 0
vel.angular.y = 0
vel.angular.z = two / 10
rospy.loginfo("Linear Vel = %f:Angular Vel = %f", 0.1, 0.1) #发送消息,让乌龟移动
pub.publish(vel)
while True:
print("正在连接控制器...")
tcpCliSock, addr = tcpSerSock.accept()
print(f"...已成功连接IP地址为{addr}的控制器")
while True:
try:
data = tcpCliSock.recv(BUFSIZ)
except ConnectionResetError:
print("控制器已退出")
break
if not data:
break
try:
data = data.decode("utf-8") #将指令转为UTF-8编码
x = data.split(' ')
if x == "MOVE":
move_turtle(float(x), float(x))
except rospy.ROSInterruptException:
pass
except (TypeError, ValueError): #如果值无效
pass
tcpCliSock.close()
static/image/hrline/1.gif
PC端:
#pc.py
from socket import *
HOST = '192.168.10.34' #树莓派的IP,可在树莓派终端输入"ifconfig"查看
PORT = 21567 # 端口一定要一样
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
data = input('请输入指令: ')
if not data:
break
tcpCliSock.send(bytes(data, 'utf-8')) #send只能发送bytes,将指令转为bytes
tcpCliSock.close()
运行方法:
在终端里输入:
$ roscore
打开一个新终端,输入:
$ rosrun turtlesim turtlesim_node
再打开一个新终端,输入:
$ python soc.py
在PC的终端里,输入:
$ python pc.py
即可发送指令。
指令发送方法:
MOVE 线速度 角速度
比如让乌龟前进10像素,左转1弧度,要输入:
MOVE 10 10 如果我没看错的话,这应该需要一个公网IP把
不然就只能同一个局域网下使用 Mike_python小 发表于 2023-3-5 07:49
如果我没看错的话,这应该需要一个公网IP把
不然就只能同一个局域网下使用
对 中奖率10%……
至少10次吧 鱼币 {:10_254:} 厉害 鱼币 这概率也太低了吧{:10_266:}{:10_266:} 不对,不是说十楼才会有吗,为啥九楼也有? 感谢分享! 一点沙 发表于 2023-3-5 10:57
这概率也太低了吧
概率不一样 sfqxx 发表于 2023-3-5 11:15
概率不一样
好吧 一点沙 发表于 2023-3-5 11:20
好吧
1(灌水——) 再来 楼主666 概率太小会没人领的{:10_262:} 终于领到了{:10_254:} {:10_312:} {:5_106:}