概述
在终端读取键盘事件
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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复