Footswitch硬件的使用

  • 1. Footswitch介绍
  • 2. Footswitch触发按键配置
    • 2.1 软件下载
    • 2.2 软件设置
  • 3. 键盘监听程序
    • 3.1 python 配置
    • 3.2 python 程序
  • 4. 可能的疑问
    • 4.1 为什么不直接在软件上设置单触发?
    • 4.2 如何将其封装成ROS接口?

1. Footswitch介绍

Footswitch实际上可以看作一个超大号的键盘按键,或者是鼠标按键。它可以作为一个USB口外接设备人为产生触发信号给被控的设备,如常见的例子有激光发射或超声设备录制图像等的触发信号。那么如果我们需要把这个硬件用起来,接入到ROS中,作为机械臂切换交互还是不交互模式的触发信号,应该怎么使用?这就是这篇博文的写作动机。

2. Footswitch触发按键配置

简单的理解,Footswitch的基本原理其实就是向系统发送键盘指令,或者鼠标指令。因此在使用前,我们需要对刚买回来的footswtich做一个键盘的映射,这就需要用到厂家提供的配套软件了。

2.1 软件下载

下载地址: https://pcsensor.com/article1/download-footswitch , 下载之后解压安装即可,由于没有Linux的版本,所以需要先在windows系统下配置好,再切回到Linux系统下编写代码接入到ROS中。

2.2 软件设置

软件的设置逻辑是需要将按键映射到一个键盘上不存在的按键,可以是F13到F24的任意一个按键,这里我们映射到F13。 此外,Footswitch是一个常开按键,所以触发方式选择按下触发,至于为什么4中我们选择持续触发,在下文的可能的疑问中我们会做相应的解释。

3. 键盘监听程序

3.1 python 配置

python需要安装一个包:

pip install pynput

3.2 python 程序

所有准备工作完成后,可以编写代码,所监听到的按键值的数据类型为pynput.keyboard.Key, 如果令flag_onlyfw=True则会监听所有的按键,按下Esc键可退出程序。

# !/usr/bin/env python
# --*--coding=utf-8--*--
# author: Dianye Huang
from pynput import keyboard
from pynput.keyboard import Keyclass FootSwitchListener:def __init__(self,target_key=Key.f13,flag_onlyfw=False) -> None:self.count = 0self.target_key = target_keyself.flag_onlyfw = flag_onlyfwdef on_press(self, key):self.process_key(key, 'press')def on_release(self, key):self.process_key(key, 'release')if key == keyboard.Key.esc:  # Stop listener when press key.escreturn Falsedef process_key(self, key, prompt:str):if self.flag_onlyfw:if key == self.target_key:self.count += 1print(f'<FootSwitchListener> {self.count} {prompt}: {key}')else:self.count += 1print(f'<FootSwitchListener> {self.count} {prompt}: {key}')def run(self):with keyboard.Listener(on_press=self.on_press,on_release=self.on_release) as listener:listener.join()if __name__ == '__main__':footswitch = FootSwitchListener(target_key=Key.f13, flag_onlyfw=True)print('Start listening footswitch!')footswitch.run()

4. 可能的疑问

4.1 为什么不直接在软件上设置单触发?

因为经过试验,我们所购买的FS22-PM型号的footswitch选择触发信号为单触发后,按下按键后on_press和on_release函数会先后触发,而选择触发信号为持续触发后,按下按键会一直触发on_press函数,直到释放按键后才会触发一次on_release函数。这与需求是一致的,例如按下footswitch后超声设备持续录像,松开后停止录像。

4.2 如何将其封装成ROS接口?

上述程序是不完整的,如,没有必要一直读取触发的信号,可以增加一个标志位判断按下状态和释放状态。除了比较懒的原因,还有一点是,不希望直接提供off the shelf 的代码,直接复制粘贴容易误人子弟。而ROS接口,可以声明一个publisher 发送一个以std_msg::UInt8为数据类型的话题。或者在参数服务器rosparam中设置一个参数,改变该参数的值供调用程序参考。又或者是开一个service,这种方法我觉得效率比较低,不建议采用。

以上,希望对大家有所帮助,祝周末愉快!

Dianye Huang
2022年8月20日

Footswitch应用之Python键盘按键监听程序相关推荐

  1. ROS中 Python/C++ 键盘按键监听事件

    ROS中 Python/C++ 键盘按键监听事件 这几天在肝全国智能驾驶大赛,真就挺累的:抓狂思考,手搓代码,疯狂编译,要命运行.在这趟火车上,被各种各样的问题卡住甚至卡死,就很难受好吧.至今,我深深 ...

  2. Python 键盘鼠标监听

    异想天开的想记录一下自己每天的键盘键位走向,于是就在网上搜索了一下相关的实现,然后就发现了一个第三方的库pyHook.封装的很好,我们只需要傻瓜式的调用里面的API就可以了. 下面是我在使用pyHoo ...

  3. android 后台键盘按键监听,android键盘的监听

    android 键盘监听 从知乎上看到的一种解决方案,目前还没发现有什么坑. public class SoftKeyBroadManager implements ViewTreeObserver. ...

  4. JS键盘按键监听-多个按键同时按下

    两个按键一起按下时,两个事件都会被监听到,但是只有后面一个事件会被响应. document.onkeydown = function (event) {console.log(event.ctrlKe ...

  5. jquery实现上下左右键盘监听_基于 jQuery 实现键盘事件监听控件

    最近项目里要做一个画板,需要对键盘事件进行监听,来进行诸如撤回.重做.移动.缩放等操作,因此顺手实现了一个键盘事件监听控件,期间略有收获,整理出来,希望对大家有所帮助,更希望能获得高手的指点. 1. ...

  6. JS:打字游戏_键盘事件监听

    1. 打字游戏 屏幕随机出现字母或数字 用户按下键盘,屏幕显示回答正确与否 当用户按下ESC时游戏结束 <!DOCTYPE html> <html lang="en&quo ...

  7. 对EditText的软键盘进行监听-----android:imeOptions

    在android发开过程中,有时候需要对EditText的软键盘进行监听. 当点击软键盘回车位置按键的时候,需要实现 完成.前进.下一项.搜索.发送或其他功能,这就需要开发者对软键盘回车的点击事件进行 ...

  8. Tkinter键盘敲击监听小工具

    Tkinter键盘敲击监听小工具 1. 用到的库 tkinter # Python自带的GUI库 pynput # 具有键盘监听和控制功能的库 2. 代码 import threading impor ...

  9. 键盘事件监听_键盘事件

    键盘事件监听 There are 3 types of events when interacting with keyboard events: 与键盘事件进行交互时,有3种类型的事件: keydo ...

最新文章

  1. python ftp文件传输客户端
  2. Async_Await;
  3. ASP.NET 2.0 - 如何把上传的文件保存到数据库字段 (转自章立民CnBlogs)
  4. java 一些常用的代码(转载)
  5. 电影院票务管理系统数据库设计(1)
  6. laravel 导出插件
  7. javascript单元测试:jasminejs 2.0的烦恼
  8. camera(19)---camera 客观测试 Imatest教程
  9. jsp页面科学计数法显示问题的解决办法
  10. 史上最全android分辨率
  11. mysql 表格入门_MySQL-快速入门(1)基本数据库、表操作语句
  12. 微分几何笔记(2) —— 曲线的参数化
  13. 女性睾酮水平高(High Testosterone Levels in Women)
  14. fishtank 测试 linux,Fishtank fitts:a desktop VR testbed for evaluating 3D pointing techniques
  15. 图像编辑系列之(2)基于StyleGAN(3)GAN逆映射(4)人脸 (5)语义生成 | ICCV2021生成对抗GAN梳理汇总...
  16. 2021年秋招面经分享·地平线【芯片设计研发工程师】
  17. 渗透测试:密码破解小结
  18. 将dropbear SSH移植到arm9开发板
  19. winrar 去广告_winRAR去广告版软件安装教程
  20. otg烧写linux内核,Linux——OTG方式烧写镜像文件步骤总结

热门文章

  1. 烟用香精计算机辅助调香,GC/MS结合计算机辅助调香系统在烟用香精配方解析中的应用...
  2. 架构建模利器- Archimate 规范以及其实现工具Archi 4.x
  3. 5分钟搭建SpringCloud Eureka服务注册中心
  4. selenium-java之浏览器截屏
  5. vagrant 安装centos7后,安装 docker, mysql redis nginx 开发环境
  6. OPPO 手机如何录入门禁卡
  7. 磊科 虚拟服务器在哪,【图解教程】磊科(Netcore)NW717端口映射怎么设置教程
  8. 微信小程序scroll-view详解及案例
  9. 谨慎使用QueryParser.escape,可能导致错误转义短横线符号
  10. 适合小白的Python学习教程:Python有什么用?数据化运营怎么做?