Configuring xESC
The xESC motor controllers can be configured to work with many BLDC and DC motors. The firmware for the controllers is based on the open source VESC project and therefore, the controllers can be configured using the VESC Configuration Tool.
Prerequisites
- Windows or Linux computer to run the VESC Configuration Tool
- VESC Tool (https://vesc-project.com/vesc_tool) You can download the tool for free by adding the “free” version in your cart and proceeding to checkout.
- OpenMower Firmware needs to be successfully installed in the xCore board. This is needed because the xCore bridges the connection between your computer and the xESC. If you haven’t done it, follow the Firmware Update guide.
- Optional (but makes your life easier):
Configuration files for the mower you are using.
Look in the OpenMower repository for the files suited for your mower.
You will need three files:- App configuration XML (sets the baud rate, etc. Same for all three xESC controllers)
- Mower Motor configuration XML (motor parameters for the mower motor)
- Drive Motor configuration XML (motor parameters for the wheel motors)
Configuration Process
Stop ROS from interfering with the controllers
openmower stop to stop ROS from interfering with the controllers during configuration.
Expose the ESC to the network
Run openmower expose-esc [left|right|mower] to expose the xESC controller (choose left, mower or right).
The controller is then reachable in your local network on openmower:65102 until you hit Ctrl + C.
Connect to the xESC
Open the VESC Configuration Tool and connect to the xESC controllers by clicking:
Connection -> TCP[1]- Insert the IP address of your mower or
openmowerinto the Address field [2]. - Set the port to
65102[3] - Click
Connect[4]
Information
If you encounter this warning message:

you can safely ignore it. The VESC tool is backward compatible with the firmware version used on the xESC controller.
Configure xESC
Upload the configurations
With the VESC Configuration Tool connected, you can now upload the configuration to your xESC controllers:
- [Image 1]: Click
File -> Load Motor Configuration XML - [Image 2]: Select the motor configuration XML file for your motor (different for mowing motor and the drive motors)
- [Image 3]: Ignore the version message, if it appears
- [Image 4]: Click
Write Motor configuration. The green banner will appear on success. - [Image 5]: Click
File -> Load App Configuration XML. Ignore the version message, if it appears - [Image 6]: Click
Write App configuration. The green banner will appear on success. - Hit Ctrl + C in the openmower terminal to stop exposing the xESC controller.
Repeat these steps for all three of the three xESC controllers.
Required preparations
- Remove the mower blade.
- Really, remove the blade! This is a huge mower with a strong motor and large blade! 💀
- Lift the mower’s rear so wheels can spin freely (use a carton, block or stand).
- Unmount the mower blade!
- Use battery power for calibration (not dock power), and ensure the battery has sufficient charge.
- Check if you disassembled the mower blade!
Drive motor calibration (left then right)
Perform calibration for left drive first, then repeat the procedure for the right drive.
Enable realtime data: Later on, we wanna validate our calibration with a known reference value, but also during calibration it’s interesting to see the displayed values in the marked 2 window. That’s why we enable real-time data first:

Start the FOC Calibration Wizard:

Now we need to provide some specs of our motor. These are the specs for the left and right drive motors, for the mow motor, we need to use other specs:
🡆
🡆 
🡆
🡆 
Once calibration has been done, do not change the direction (even though the left wheel turns forward during calibration, whereas the right one backwards):

Now that the calibration succeed, lets test the result:

Test with “D 0,4” (1) and press the “Duty cycle” play button (2). If it draw <= 0.15A (3) and sound healty, it is calibrated well.
Test with some higher duty settings. It will become more loud for sure, but should always spin smooth and sound healty. If not, press the STOP sign (4).As a last important step, load the correct ESC-App config via: File → Load App Configuration XML, choose
SABO_Drive-App.xml(see SABO ESCs configs) and finally press the↧Aicon (Write app configuration) on the right side.Optional misc settings which you might align to be within the motor/battery specs:

Done 😆
… but not finished ✌️ … you need to do the whole procedure again, but with the right drive side.
So, Ctrl+c your openmower expose-esc left, and do it again but with openmower expose-esc right and with port 65104 for the right site drive.
Mow Motor Calibration
For the mow motor ESC calibration, you do the same workflow, but with adapted values:
openmower expose-esc mowerand VESC connect to port 65103During FOC Calibration Wizard use the following values:
- Tab “Motor” = Medium Inrunner ~750g
- Advanced: Max Power Loss = 200, Motor Poles = 8
- Tab “Battery”
- Battery Capacity = 3.9Ah (same as before)
- Tab “Setup”
- Gear Ratio = Check Direct Drive
- Motor Poles = 8
- Motor Temp. Sensor = disabled
- Tab “Motor” = Medium Inrunner ~750g
Test with “D 0,08” which should draw <= 0.52A (without assembled blade)
Check/Adjust blade rotation direction:
We need to ensure that the blade rotate CCW (when watching from downside onto the axis). Do this with a slow rotation speed like “D 0,08”.If it rotates CW, change direction via: Motor Settings → General → Tab General → Invert Motor Direction. Do not forget to do: “Write motor configuration” via
↧MLoad the correct ESC-App config via: File → Load App Configuration XML, choose
SABO_Mower-App.xml(see SABO ESCs configs) and finally press the↧Aicon (Write app configuration) on the right side.Limit blade RPM:
It’s important to limit the max. RPM to the one like OEM is running it! Otherwise you risk your motor bearings or more dangerous: Your blade might fly away 💀
Optional misc settings which you might align to be within the motor/battery specs:

Choose your adventure. Your build, your rules.