我是靠谱客的博主 玩命巨人,最近开发中收集的这篇文章主要介绍在终端读取键盘事件 ros,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在终端读取键盘事件   

1.py文件 为一个节点

import rospy

import sys, select, tty, termios
from std_msgs.msg import String

def getKey():
    tty.setraw(sys.stdin.fileno())
    rlist, _, _ = select.select([sys.stdin], [], [], 0.1)
    if rlist:
        key = sys.stdin.read(1)
    else:
        key = ''
    termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
    return key
 

if __name__ == '__main__':

        key_pub = rospy.Publisher('keys', String, queue_size=1)
        rospy.init_node("keyboard_driver")
        rate = rospy.Rate(100)
        old_attr = termios.tcgetattr(sys.stdin)
        tty.setcbreak(sys.stdin.fileno())
        print "Publishing keystrokes. Press Ctrl-C to exit..."
        while not rospy.is_shutdown():
                if select.select([sys.stdin], [], [], 0)[0] == [sys.stdin]:
                        key_pub.publish(sys.stdin.read(1))
                rate.sleep()

        termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_attr)>

2.launch打开

<node pkg="cartographer_test_package" type="turtle_teleop.py" name="scripts"  />

3.订阅 

ros::Subscriber joy_sub = nh.subscribe("/keys",10,&joyCallBack);    //订阅

void joyCallBack( std_msgs::String str){    //回调
  if(str.data == "2"){
    mode = 1;
  }else{
    mode = 3;
  }
  cout<<"str.data : "<< str.data <<endl;
}

最后

以上就是玩命巨人为你收集整理的在终端读取键盘事件 ros的全部内容,希望文章能够帮你解决在终端读取键盘事件 ros所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部