This repo is forked of https://github.com/cloudn1ne/Mowgli to folllow his great job.
It should work on the Yardforce Classic 500 and LUV1000RI
Please adjust the configuration in board.h
The documentation on this fork is mostly not up to date - we will try to update it.
The current way to build a mowgli mower is to flash ros_usbnode to the mainboard and use mowgli-docker.
- Basic overview of the mainboard, Datasheets for ICs
- Motor Drivers for both Drive Motors and Blade Motor can be controlled
- Mainboard (GForce) Firmware dump and restore via an ST Link or other (e.g. JLink Segger) tools
- Panel (GForce) Firmware dump and restore via an ST Link or other (e.g. JLink Segger) tools
- Demo Python code to control the Mower via a Joystick (needs "test_code" STM32 code flashed)
- ROS Serial node via CDC USB Port with full hardware support
- Serial debugging on the unused (red) J18 header
- Software I2C on the unusued (red) J18 header - used for external IMU
- Raspi, IMU, GPS Mounting Options
- onboard Buzzer
- onboard IMU (accelerometer) for tilt protection
- Safety switches (Hall Sensors) for STOP button
- Rain Sensor
Do the correct topics to remove the mowgli proxy in openmower ros and so be plug & play with openmower.
see Updates
This is the software that needs to be compiled and flashed onto the STM32 on the Geforce Mainboard
Currently supported IMUs:
- Pololu AltIMU 10v5 other LSM6DS33 based should work too
- WT901
- MPU6050
Don't hesisate to ask if you want use another IMU
Check in board.h for the connected PIN, as I used PB3 for debug purposes, the pinning is different as the original repo.
- /mowgli/MowerControlSrv - enabled/disable blade
- /mowgli/GetCfg - read SPI flash config var
- /mowgli/SetCfg - write SPI flash config var
- /mowgli/Reboot - reboot Mowgli
- /mowgli/ResetEmergency - Reset emergency state
- /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
- /cmd_vel - geometry_msgs::Twist (compatible with teleop twist messages, so you can drive the bot)