/Mowgli

YardForce GForce Mainboard RE

Primary LanguageC

Mowgli

About

This repo tracks my progress in reverse engineering the Yardforce GForce mainbord as used in the Yardforce 500 (and others) Mower Robots.

Mowgli is compatible with OpenMower but without having to use that projects mainboard, instead recycling as much hardware as possible from the original GForce mainboard. There should are no irreversible modifications to the GForce board required.

Looking for MowgliRover ?

MowgliRover is the part of this project that needs to be deployed on the Raspi.

see here

Looking for MowgliBase ?

MowgliBase is the repo that contains the IMU Magnetometer calibration tooling. It is meant to be deployed onto a Linux ROS Noetic installation.

see here

Updates

see Updates

Safety

The custom firmware has no protections - no tilt sensing, no stop buttons will work. If you stick your finger in the wrong place, you will lose it.

  • Remove the razor blades
  • Dont be stupid
  • Dont blame me for your lost finger

Whats done ?

TODO

  • Move all UART functions use DMA as HAL_IT is a seriously broken API
  • Publish Blade Motor state
  • LEDs should be controllable via a Topic or Service

rosserial node

This is the software that needs to be compiled and flashed onto the STM32 on the Geforce Mainboard

Published Topics

  • /mowgli/status - Mowgli Status messages, simliar to Openmowers
  • /mowgli/odom - Mowgli ODOM (calculated onboard from wheel ticks)
  • /imu/data_raw - Mowgli IMU (the I2C attached one)
  • /imu_onboard/data_raw - Mowlgi (on YF Mainboard) IMU accelerometer only
  • /imu/mag_calibration - Mowgli IMU (the I2C attached on) - raw magnetometer data (uncalibrated)
  • /buttonstates - on supported panels

in case a supported I2C IMU is connected to J18

Currently only the Pololu IMU 10v5 is supported, but any I2C or SPI IMU should work.

Services

  • /mowgli/MowerControlSrv - enabled/disable blade
  • /mowgli/GetCfg - read SPI flash config var
  • /mowgli/SetCfg - write SPI flash config var
  • /mowgli/Reboot - reboot Mowgli
  • /mowgli/EnableTF - enable odom_dr -> base_link_dr transform (for /mowgli/odom) - used for Dead Reckoning - default ON
  • /mowgli/SetLed - enable LED (1-17), if the MSB is set (128), the bot will chirp too
  • /mowgli/ClrLed - disabled LED (1-17), if the MSB is set (128), the bot will chirp too

Subscribers

  • /cmd_vel - geometry_msgs::Twist (compatible with teleop twist messages, so you can drive the bot)

Serial Debugging

Serial Debug for ros_usbnode