40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
import rospy
|
|
from pynput import keyboard
|
|
from threading import Thread
|
|
from nav_msgs.msg import Odometry
|
|
|
|
class Rebpublic:
|
|
def __init__(self):
|
|
self.is_pub = True
|
|
self.lidar_odom1_pub = rospy.Publisher("/m2/gpsOdom1", Odometry, queue_size=1)
|
|
|
|
def on_press(self, key):
|
|
try:
|
|
if key.char == "q":
|
|
self.is_pub = not self.is_pub
|
|
print(self.is_pub)
|
|
except:
|
|
print("error")
|
|
|
|
def odom_callback(self, data):
|
|
if self.is_pub:
|
|
self.lidar_odom1_pub.publish(data)
|
|
print("publish", rospy.get_time())
|
|
else:
|
|
print("not publish", rospy.get_time())
|
|
|
|
def key_listen(self):
|
|
with keyboard.Listener(on_press=self.on_press) as listener:
|
|
listener.join()
|
|
|
|
def listen(self):
|
|
rospy.Subscriber("/m2/gpsOdom", Odometry, self.odom_callback, queue_size=1)
|
|
rospy.spin()
|
|
|
|
if __name__ == "__main__":
|
|
rospy.init_node("republic", anonymous=True)
|
|
rebpublic = Rebpublic()
|
|
thread_key_listern = Thread(target=rebpublic.key_listen, args=())
|
|
thread_key_listern.start()
|
|
rebpublic.listen()
|