#!/usr/bin/env python PACKAGE = "yesense_imu" NODE_NAME = "Yesense_puber" PARAMS_NAME = "YesenseNode" from math import pi from dynamic_reconfigure.parameter_generator_catkin import * PRODUCT_INFOMATION = 0x00 PARAM_SETTING = 0x01 UART_BAUDRATE = 0x02 OUTPUT_FREEQUENCY = 0x03 OUTPUT_CONTENT = 0x04 CALIBRATION_PARAM_SET = 0x05 MODE_SETTING = 0x4d NEMA0183_OUTPUT_CONTENT = 0x4e PROTOCAL_ID = 0xff def gengerate_level(class_type,id): return class_type << 8 | id gen = ParameterGenerator() # Name Type Level Description Default Min Max #gen.add("time_offset", double_t, 0, "A manually calibrated offset (in seconds) to add to the timestamp before publication of a message.", 0.0, -1.0, 1.0) enum_id = gen.enum([ gen.const("ConfigStatusMemery", int_t, 0x01, "Set Param of the IMU temporary"), gen.const("ConfigStatusFlash", int_t, 0x02, "Set Param of the IMU permanent")], "An enum of ID") gen.add("id", int_t, gengerate_level(PROTOCAL_ID,0), "A size parameter which is edited via an enum", 0x01 , edit_method=enum_id) #Product Information 0x00 #enum_product = gen.enum([ gen.const("ProductVersion", int_t, 0x02, "Query product version"), # gen.const("ProductInformation", int_t, 0x04, "Query product information")], # "An enum of product information") #gen.add("product", int_t, gengerate_level(PRODUCT_INFOMATION,0), "A size parameter which is edited via an enum", 0x02 , edit_method=enum_product) gen.add("param_setting", bool_t, gengerate_level(PARAM_SETTING,0), "Reset yaw to zero", False) # baudrate 0x02 size_baudrate = gen.enum([ gen.const("9600_bps", int_t, 0x01, "set baudrate as 9600 bps"), gen.const("38400_bps", int_t, 0x02, "set baudrate as 38400 bps"), gen.const("115200_bps", int_t, 0x03, "set baudrate as 115200 bps"), gen.const("460800_bps", int_t, 0x04, "set baudrate as 460800 bps"), gen.const("921600_bps", int_t, 0x05, "set baudrate as 921600 bps"), gen.const("19200_bps", int_t, 0x06, "set baudrate as 19200 bps"), gen.const("57600_bps", int_t, 0x07, "set baudrate as 57600 bps"), gen.const("76800_bps", int_t, 0x08, "set baudrate as 57600 bps"), gen.const("230400_bps", int_t, 0x09, "set baudrate as 230400 bps")], "An enum to set baudrate") gen.add("baudrate", int_t, gengerate_level(UART_BAUDRATE,0), "A size parameter which is edited via an enum", 4, edit_method=size_baudrate) # output freequency 0x03 size_output_freequency = gen.enum([ gen.const("1_Hz", int_t, 0x01, "set output freequency as 1 Hz"), gen.const("2_Hz", int_t, 0x02, "set output freequency as 2 Hz"), gen.const("5_Hz", int_t, 0x03, "set output freequency as 5 Hz"), gen.const("10_Hz", int_t, 0x04, "set output freequency as 10 Hz"), gen.const("20_Hz", int_t, 0x05, "set output freequency as 20 Hz"), gen.const("25_Hz", int_t, 0x06, "set output freequency as 25 Hz"), gen.const("50_Hz", int_t, 0x07, "set output freequency as 50 Hz"), gen.const("100_Hz", int_t, 0x08, "set output freequency as 100 Hz"), gen.const("200_Hz", int_t, 0x09, "set output freequency as 200 Hz"), gen.const("250_Hz", int_t, 0x0A, "set output freequency as 250 Hz"), gen.const("500_Hz", int_t, 0x0B, "set output freequency as 500 Hz"), gen.const("1000_Hz", int_t, 0x0C, "set output freequency as 1000 Hz")], "An enum to set output freequency") gen.add("freequency", int_t, gengerate_level(OUTPUT_FREEQUENCY,0), "A size parameter which is edited via an enum", 8, edit_method=size_output_freequency) # set output value 0x04 gen.add("speed_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,0), "Enable imu's speed output", True) gen.add("location_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,1), "Enable imu's location output", True) gen.add("UTC_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,2), "Enable imu's UTC output", True) gen.add("quaternion_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,3), "Enable imu's quaternion output", True) gen.add("euler_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,4), "Enable imu's euler angle output", True) gen.add("magnetic_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,5), "Enable imu's magnetic output", True) gen.add("angular_velicity_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,6), "Enable imu's angular velicity output", True) gen.add("acceleration_increament_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,7), "Enable imu's acceleration increament output", True) gen.add("velicity_increament_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,8), "Enable imu's velicity increament output", True) gen.add("quaternion_increament_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,9), "Enable imu's quaternion increament output", True) gen.add("imu_temp_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,10), "Enable imu's tempature output", True) gen.add("second_imu_angle_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,11), "Enable second imu's angle velocity output", True) gen.add("second_imu_accel_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,12), "Enable second imu's accel output", True) gen.add("second_imu_temp_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,13), "Enable second imu's tempature output", True) gen.add("free_accel_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,14), "Enable free accel output", True) gen.add("timestamp_output_switch", bool_t, gengerate_level(OUTPUT_CONTENT,15), "Enable timestamp output", True) # reset value 0x05 reset_param = gen.enum([gen.const("RESET_ROLL_PITCH", int_t, 0x11, "Reset Roll & Pitch"), gen.const("RESET_YAW", int_t, 0x12, "Reset Yaw")], "An enum to reset param") gen.add("reset_param", int_t, gengerate_level(CALIBRATION_PARAM_SET,0), "Reset imu's parameter", 0x11, edit_method=reset_param) #0x4d mode_set = gen.enum([ gen.const("ARHS_VRU_Handover", int_t, 0x02, "ARHS or VRU Handover"), gen.const("CUSTOMIZE_NEMA0183_Handover", int_t, 0x03, "CUSTOMIZE or NEMA0183 protocal Handover"), gen.const("HIHG_LOW_frequency_Handover", int_t, 0x04, "HIGH or LOW output freequency Handover"), gen.const("GYRO_BIAS_Initialization", int_t, 0x50, "GYRO BIAS Initialization")], "An enum of output mode") gen.add("mode_setting", int_t, gengerate_level(MODE_SETTING,0), "ARHS or VRU mode", 0x02, edit_method=mode_set) #0x4E gen.add("GPHPR_output_switch", bool_t, gengerate_level(NEMA0183_OUTPUT_CONTENT,0), "GPHPR output switch", False) gen.add("GPVTG_output_switch", bool_t, gengerate_level(NEMA0183_OUTPUT_CONTENT,1), "GPVTG output switch", False) gen.add("GPRMC_output_switch", bool_t, gengerate_level(NEMA0183_OUTPUT_CONTENT,2), "GPRMC output switch", False) gen.add("GPGSV_output_switch", bool_t, gengerate_level(NEMA0183_OUTPUT_CONTENT,3), "GPGSV output switch", False) gen.add("GPGSA_output_switch", bool_t, gengerate_level(NEMA0183_OUTPUT_CONTENT,4), "GPGSA output switch", False) gen.add("GPGGA_output_switch", bool_t, gengerate_level(NEMA0183_OUTPUT_CONTENT,5), "GPGGA output switch", False) exit(gen.generate(PACKAGE, NODE_NAME, PARAMS_NAME))