基于dragonboard 410c的kobuki机器人控制——远程控制
来源:互联网 发布:方舟生存进化优化好吗 编辑:程序博客网 时间:2024/05/18 11:41
在http://blog.csdn.net/andymfc/article/details/55517380中已经告诉大家如何在没有ros系统的环境下实现对kobuki机器人的简单控制,今天再向大家介绍如何快的实现对kobuki机器人的远程控制。
图1 kobuki机器人底盘
这里我们主要是利用了前面blog提到过的TCP/IP服务器通信技术来实现,其实更加简单的方式可以通过ssh远程登录来实现对机器人的控制,但是从实际的测试效果来看,这种方式在电脑端控制机器人动作的时候非常不稳定,所以最终还是决定是用TCP/IP通信技术来实现对机器人的远程控制,这里我们主要的实现思路是在dragonboard 410c上构建一个控制服务器,接收控制上位机的连接,控制上位机连接成功后发送命令到dragonbaord 410c上,dragonboard 410c然后根据控制命令来控制kobuki的移动,具体思路如下图2所示。
图2 远程控制kobuki设计思路
这里我们还充分利用了kobuki官方提供的键盘控制程序,通过写一个简单的键盘模拟控制端就可以实现对kobuki的控制,核心代码如下:
import virtkey
import time
def simulate():
v = virtkey.virtkey()
time.sleep(3)
v.press_keysym(65363)
v.release_keysym(65363)
上述代码模拟方向右键按下和释放,其中65363表示方向右键,方向上为65362 下为65364,,左为65361,通过模拟按键,然后配合官方给出的按键控制kobuki程序就可以实现对kobuki的编程控制。
然后我们利用上述代码构建一个控制服务程序,具体代码如下:
def controlService(self,cmd,time):
if cmd=="a":#左
v.press_keysym(65361)
time.sleep(time)
v.release_keysym(65361)
elif cmd=="d":#右
v.press_keysym(65363)
time.sleep(time)
v.release_keysym(65363)
elif cmd=="w"#上
v.press_keysym(65363)
time.sleep(time)
v.release_keysym(65363)
elif cmd=="s"#下
v.press_keysym(65363)
time.sleep(time)
v.release_keysym(65363)
elif cmd==“s”:# 停
v.press_keysym(65363)
time.sleep(time)
v.release_keysym(65363)
else:
return -1
有了上述控制服务后,就可以构建通信服务了,在通信服务中调用该服务进行控制,具体代码如下:
def handle(socket,address):
while(1):
try:
report=socket.recv(BUFSIZE)
print(report)
if len(report)>reportLenMin:
slef.controlService(report)
socket.send("successful")
else:
print("recv report error")
socket.send("your cmd is error")
except:
print("service error")
socket.send("service error")
到这里我们就完成了整个远程控制的代码,我们只需要在客户端输入对应的控制字母就可以实现对kobuki的控制。
65362
- 基于dragonboard 410c的kobuki机器人控制——远程控制
- 基于dragonboard 410c的kobuki机器人简单控制——驱动安装
- 基于DragonBoard 410c的家庭智能环保卫士——(5)获取kobuki位置信息
- 基于DragonBoard 410c的家庭智能环保卫士——(6)kobuki位置信息传输及显示
- 基于Dragonboard 410c进行开发的远程遥控机器人(一)
- 基于Dragonboard 410c进行开发的远程遥控机器人(二)
- 基于Dragonboard 410c进行开发的远程遥控机器人(三)
- 基于DragonBoard 410c的家庭智能环保卫士——(13)融合多数据处理的运动控制
- 基于dragonboard 410c的智能魔镜设计(9)——UI交互控制逻辑实现
- 基于DragonBoard 410c的遥控炮台六之控制协议优化(上)
- 基于DragonBoard 410c的遥控炮台七之控制协议优化(中)
- 基于DragonBoard 410c的遥控炮台八之控制协议优化(下)
- 基于Dragonboard 410c的总线控制之I2C(一)
- 基于Dragonboard 410c的总线控制之I2C(二)
- 基于Dragonboard 410c的总线控制之I2C(三)
- 基于Dragonboard 410c的总线控制之UART(一)
- 基于Dragonboard 410c的总线控制之UART(二)
- 基于Dragonboard 410c的总线控制之SPI(一)
- VS2013 安装错误 Windows 程序兼容性模式已打开
- 第十二章 Spring组合注解
- swift 3.0 短信验证码倒计时实现
- DELPHI中MessageBox的用法 (转)
- 大龄码农的困惑
- 基于dragonboard 410c的kobuki机器人控制——远程控制
- struct usb_interface_descriptor
- 贝塞尔曲线
- 打开注册表
- 企业如何进行“对标”管理?
- java 蓝桥杯 回形取数
- Thinking In Java第十四章“Type Information”(1-10)
- nginx 日志分析及性能排查
- 1098. Insertion or Heap Sort (25)[插入和堆排序]