Saturday, April 29, 2017


Project Rover is officially starting!

I've selected these first few components due to their unique features:

- Rugged 4WD with 130mm wheels, I've selected it because of the large wheels and base plate since I wasn't sure how much hardware I wanted on it but at some stage I want it outside and 4 separate motors are nice to have.

- WingXine APO-L1 - works up to 30v, 10A (with current limiter), PWM 1ms - 2ms (1.5ms zero) which should work with APM controller, I've selected it because I wanted the motors to self balance but each one is 12v, so if one motor stalls, the other will push harder, a theory which I did not put to the test yet, think of it as an electronic differential.

I've wanted to power the rover with standard LIPOs so I had to boost the power to 24v or use two batteries, in the end I've selected a boost converter instead, which makes the power source more flexible.

DC-DC boost converter - 8.5-48v to 10-50v, which should get me a stable 24v out of whichever LIPO I have laying around.

For now I'm concentrating on a combination of hardware and software, I've made a USB joystick to PPM converter, which I've gotten fried due to human error, I've made a serial TFT LCD and PPM generator to be connected to a companion computer along with a mavlink connection and I'm reviewing a few npm packages for later use, you'd be surprised how many potential problems can be found before even running a single test just by converting the project to typescript and imposing a few basic types and interfaces not to mention the learning curve to the package internals and functions is reduced to minimum.

- dns-packet and multicast-dns - originally by Mathias Buus
- ip/node-ip  - originally by Fedor Indutny

and today I've checked out mavlink package, originally by Owen McAree, I've just seen the data flowing from APM, great!

message AHRS { omegaIx: 0.0003541054902598262,
  omegaIy: 0.0006027567433193326,
  omegaIz: -3.3141745348075347e-7,
  accel_weight: 0,
  renorm_val: 0,
  error_rp: 0.0018874505767598748,
  error_yaw: 1 }
message HWSTATUS { Vcc: 4349, I2Cerr: 1 }
message SYSTEM_TIME { time_unix_usec: 0, time_boot_ms: 16363 }
message ATTITUDE { time_boot_ms: 16402,
  roll: 0.018413120880723,
  pitch: 0.01433389913290739,
  yaw: -0.0002040785038843751,
  rollspeed: 0.00037805165629833937,
  pitchspeed: 0.0006373348878696561,
  yawspeed: 0.00040407307096756995 }
message VFR_HUD { airspeed: 0,
  groundspeed: 0,
  alt: 0.07000000029802322,
  climb: 0,
  heading: 0,
  throttle: 100 }
message RAW_IMU { time_usec: 16643270,
  xacc: 20,
  yacc: -10,
  zacc: -986,
  xgyro: 0,
  ygyro: 0,
  zgyro: 0,
  xmag: 0,
  ymag: 0,
  zmag: 0 }
message SYS_STATUS { onboard_control_sensors_present: 2153475,
  onboard_control_sensors_enabled: 2129923,
  onboard_control_sensors_health: 2153475,
  load: 371,
  voltage_battery: 0,
  current_battery: -1,
  drop_rate_comm: 0,
  errors_comm: 0,
  errors_count1: 0,
  errors_count2: 0,
  errors_count3: 0,
  errors_count4: 0,
  battery_remaining: -1 }
message MEMINFO { brkval: 6629, freemem: 1519 }
message MISSION_CURRENT { seq: 0 }
message ATTITUDE { time_boot_ms: 16644,
  roll: 0.01850038766860962,
  pitch: 0.014476700685918331,
  yaw: -0.00014243528130464256,
  rollspeed: -0.00006719821249134839,
  pitchspeed: 0.0005361465737223625,
  yawspeed: 0.00013777358981315047 }