virtual_led_sensors.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 
4 from __future__ import print_function
5 import rospy, math
6 from sensor_msgs.msg import LaserScan
7 
8 
9 def range_to_led(range_value):
10  try:
11  distance = int(range_value[0] * 1000) # distance[mm]
12  if distance < 4: distance = 8 - distance
13  # This formula is calculated from the measurement result of actual sensor.
14  # http://products.rt-net.jp/micromouse/archives/3361
15  led_value = int(761000 / math.pow(distance, 1.66))
16  if led_value > 4000: led_value = 4000
17  if led_value < 15: led_value = 15
18  except:
19  led_value = 15
20  return led_value
21 
22 
23 def write_to_file(data):
24  try:
25  with open("/dev/rtlightsensor0", "w") as f:
26  print("%d %d %d %d" % tuple(data), file=f)
27  except:
28  rospy.logerr("failed to open rtlightsensor0")
29 
30 
31 def sensor1_callback(data):
32  led_val[0] = range_to_led(data.ranges)
33 
34 
35 def sensor2_callback(data):
36  led_val[1] = range_to_led(data.ranges)
37 
38 
39 def sensor3_callback(data):
40  led_val[2] = range_to_led(data.ranges)
41 
42 
43 def sensor4_callback(data):
44  led_val[3] = range_to_led(data.ranges)
45  write_to_file(led_val)
46 
47 
48 def listener():
49  rospy.Subscriber(rospy.get_namespace() + "rf_scan", LaserScan, sensor1_callback)
50  rospy.Subscriber(rospy.get_namespace() + "rs_scan", LaserScan, sensor2_callback)
51  rospy.Subscriber(rospy.get_namespace() + "ls_scan", LaserScan, sensor3_callback)
52  rospy.Subscriber(rospy.get_namespace() + "lf_scan", LaserScan, sensor4_callback)
53 
54 
55 if __name__ == "__main__":
56  led_val = [15, 15, 15, 15]
57  rospy.init_node("sensor_data_converter", anonymous=True)
58  listener()
59  rospy.spin()
def range_to_led(range_value)


raspimouse_control
Author(s): Daisuke Sato , Yuki Watanabe
autogenerated on Mon Jun 10 2019 14:36:49