Is Luos for me? 🤔

Command and object dictionary

Each message includes a command value that defines the content's type of the message's data.

Another feature included in Luos technology is the Object Dictionary (OD), which aims to maintain interoperability of data format and command's type between servicesSoftware element run by Luos that can communicate with other services. It can be a driver or an app..

Commands

Commands is a simple enum list from 0 to N allowing you to choose the data format you want to use on your message. Internally, Luos also uses some messages to manage and detect your system That's why Luos has some reserved commands at the begining of this list. User's commands start at LUOS_LAST_RESERVED_CMD.

Common registers for all services

CommandFunction
GET_CMDasks a service to publish its data
SET_CMDsets some undefined data

Generic data

CommandFunction
COLORcolor_t (R, G, B)
IO_STATEchar (True/False)
RATIOratio_t (percentage %)
PEDOMETERlong[2] (step number, step time millisecond)
ILLUMINANCEilluminance_t (lx)
VOLTAGEvoltage_t (Volt)
CURRENTcurrent_t (Ampere)
POWERpower_t (Watt)
TEMPERATUREtemperature_t (°C)
TIMEtime Second (float)
FORCEforce_t (Newton N)
MOMENTmoment_t (Newton meter N.m)
CONTROLcontrol_mode (control_mode_t)

Configuration commands

CommandFunction
REGISTERa registered data [reg_add, data]
REINITchar (True/False)
PIDpid_t float[3] = {p, i, d}
RESOLUTIONresolution parameter for a sensor float
REDUCTIONreduction factor float (e.g. mechanical)
DIMENSIONdimension of an element m linear_position_t
OFFSETdecay float
SETIDsets Dynamixel ID

Space positioning

CommandFunction
ANGULAR_POSITIONangular_position_t (deg)
ANGULAR_SPEEDangular_speed_t (deg/s)
LINEAR_POSITIONlinear_position_t (m)
LINEAR_SPEEDlinear_speed_t (m/s)
ACCEL_3Dlong[3](X, Y, Z axis linear acceleration data in Gees)
GYRO_3Dlong[3](X, Y, Z axis rotational acceleration data in degrees per second)
QUATERNIONlong[4] (sensor fused w, x, y, z rotational angles)
COMPASS_3Dlong[3](magnetic field data in micro tesla on each axis)
EULER_3Dlong[3](Pitch, roll, yaw based in degrees with frame reference)
ROT_MATshort[9] (linear math 9 element matrix representation)
LINEAR_ACCELfloat[3] (linear acceleration in body frame coordinates)
GRAVITY_VECTORfloat[3] (Which access gravity effects)
HEADINGlong (360 degrees from North with Y+ axis as the pointer)

Space positioning limits

CommandFunction
ANGULAR_POSITION_LIMITmin angular_position_t (deg), max angular_position_t (deg)
LINEAR_POSITION_LIMITmin linear_position_t (m), max linear_position_t (m)
RATIO_LIMITfloat(%)
CURRENT_LIMITfloat(A)
ANGULAR_SPEED_LIMITmin angular_speed_t (deg/s), max angular_speed_t (deg/s)
LINEAR_SPEED_LIMITmin linear_speed_t (m/s), max linear_speed_t (m/s)
TORQUE_LIMITmax moment_t (Nm)
TEMPERATURE_LIMITmax temperature_t (°C)

Specific register

CommandFunction
PARAMETERSdepends on the service. It can be: servo_parameters_t, imu_report_t, motor_mode_t
ERROR_CMD

You can find the complete list of commands here ↗.

If you want to create new commands for your custom services, you can create and add your own starting at LUOS_LAST_STD_CMD. See how.