class Rplidar::ScanDataResponse

Data response for one scan measurement

Public Instance Methods

angle() click to toggle source
# File lib/rplidar/scan_data_response.rb, line 35
def angle
  ((raw_response[2] << 7) + (raw_response[1] >> 1)) / 64.0
end
check_header() click to toggle source
# File lib/rplidar/scan_data_response.rb, line 4
def check_header
  unless correct_start_bit?
    raise 'Inversed start bit of the data response ' \
      'is not inverse of the start bit'
  end

  raise 'Check bit of the data response is not equal to 1' \
    unless correct_check_bit?
end
correct_check_bit?() click to toggle source
# File lib/rplidar/scan_data_response.rb, line 23
def correct_check_bit?
  raw_response[1][0] == 1
end
correct_start_bit?() click to toggle source
# File lib/rplidar/scan_data_response.rb, line 14
def correct_start_bit?
  # start bit
  start = raw_response[0][0]
  # inversed start bit
  inversed = raw_response[0][1]

  (start == 1 && inversed.zero?) || (start.zero? && inversed == 1)
end
distance() click to toggle source
# File lib/rplidar/scan_data_response.rb, line 39
def distance
  ((raw_response[4] << 8) + raw_response[3]) / 4.0
end
quality() click to toggle source
# File lib/rplidar/scan_data_response.rb, line 31
def quality
  raw_response[0] >> 2
end
response() click to toggle source
# File lib/rplidar/scan_data_response.rb, line 43
def response
  {
    start: start?,
    quality: quality,
    angle: angle,
    distance: distance
  }
end
start?() click to toggle source
# File lib/rplidar/scan_data_response.rb, line 27
def start?
  raw_response[0][0] == 1
end