Skip to content

Latest commit

 

History

History
30 lines (20 loc) · 9.13 KB

msgs_package.md

File metadata and controls

30 lines (20 loc) · 9.13 KB

luci_messages

summary:

This is a custom message package for message types that are LUCI specific.

Package Message
luci_messages LuciJoystick

int32 forward_back
int32 left_right
string joystick_zone
LuciJoystickScaling

int32 forward_back (scaled forward back limit)
int32 left_right (scaled left right limit)
string joystick_zone
LuciZoneScaling

float front_fb
float front_rl
float front_right_fb
float front_right_rl
float front_left_fb
float front_left_rl
float right_fb
float right_rl
float left_fb
float left_rl
float back_right_fb
float back_right_rl
float back_left_fb
float back_left_rl
float back_fb
float back_rl
uint32 max_js_scale_increase
uint32 max_js_scale_decrease
bool luci_active
LuciDriveMode

enum

USER=1 ENGAGED=2 AUTO=3
LuciImu

std_msgs/Header header
float32 quaternion_x
float32 quaternion_y
float32 quaternion_z
float32 quaternion_w
float32 acceleration_x
float32 acceleration_y
float32 acceleration_z
float32 gyro_x
float32 gyro_y
float32 gyro_z
float32 euler_x
float32 euler_y
float32 euler_z
float32 accelerometer_x
float32 accelerometer_y
float32 accelerometer_z
float32 magnetometer_x
float32 magnetometer_y
float32 magnetometer_z
float32 gravity_x
float32 gravity_y
float32 gravity_z
int32 cal_system
int32 cal_gyroscope
int32 cal_accelerometer
int32 cal_magnetometer
int32 source
uint32 edge_timestamp
LuciEncoders

float left_angle
float right_angle
float fl_caster_degrees
float bl_caster_degrees
float fr_caster_degrees
float br_caster_degrees
uint32 edge_timestamp
LuciCameraInfo

float[4] intrinsics (fx,fy,ppx,ppy)
float[3] translation (x,y,z meters camera->chair center)
float[3] rotation (x,y,z radians) camera -> chair center
enum type RADIAN=0 DEGREE=1

The LUCI scaling zones message is based on the on the chair scaling LUCI uses. Scaling is broken up into 8 zones seen below. In each zone there also exists a scaling for forward/back and left/right. LUCI determines which zone the joystick is currently in based on the angle of the joystick per the image below. This indicates the upper limit the joystick would be allowed to be (forward back, left right) if the joystick is placed in one of the 8 zones.

For example if the joystick was at an angle of 5 degrees from center (placing it in the front zone) and LUCI had a front_fb scaling value of 0.5 and a front_rl scaling value of 1.0 then LUCI would allow the max joystick in the Y axis to be +/- 50 (or 50% of full throw) and would let the max js in the x axis to be +/- 100 (or 100% of full throw) (relative to chair coordinates).

For the encoder data stream the edge_timestamp is expected to be a constant timer from the encoder or processing board's clock. Ideally this clock is produced from as close to the source of the readings as possible. For example with the encoder setup described here https://github.com/lucimobility/luci-sdk-encoders the edge_timestamp will be the milliseconds since the arduino control board booted up. This is using the millis() call in arduino.

Note:

The LuciJoystickScaling message has the joystick values with the LUCI scaling applied. These are the values most recently used to control the chair and have already been sent to the wheelchairs drive controller. Please note this message also contains the scaling zone that was used for these outputs.

The LuciJoystick message also has the LUCI scaling zone that the input JS would fall in.

luci scaling image luci zone image