If you have any question on MJ-VESC, please leave a topic on 'Board' or send a email to dongilc@mju.ac.kr.
1. What is MJ-VESC?
The MJ-VESC Project was launched to apply the VESC, which is commonly used in electric-skating board, to "the Robotics area".
The unique thing of MJ-VESC is stack-able design. The board form factor is Arduino Shield Type. So, it can be stacked on the Arduino.
The hardware improvements from the existing VESC are as follows:
In FOC control, we provide high torque control even at low speed.
Position control is possible at Hall sensor commutation with AB encoder (without index).
Hall & Encoder Hybrid Commutation for more precise position control.
More accurate current control by changing shunt resistor from 0.5mohm to 2mohm.
Improved CAN Communication Noise Filter using split terminal resistor and EMI filter.
The software improvements from the existing VESC are as follows:
High accuracy position control using "DPS speed control" (Degree Per Second).
VESC - Arduino high speed communication using SPI communication.
Debugging terminal using extra serial communication.
2. MJ-VESC Firmware Github Page
2.1. Firmware for MJ-VESC VER0.1
The MJ-VESC Firmware version isbased on vesc bldc firmware 3.40 and compatible VESC-TOOL version is 0.95 at this moment.
2.2. Original Firmware of VESC
2.3. VESC-TOOL 0.95
3. ROS Control Framework for MJ-VESC
In this page, I will explain how to setup MJ-VESC when the high-level controller is based on ROS and communication method is USB.
1. First, run VESC-TOOL (I assume that the motor setup of all the MJ-VESC is already finished)
./vesc_tool_0.95
Connect MJ-VESC ID=0.
Go to App Settings -> General -> APP to USE : Custom User App
Go to App Settings -> General -> Send CAN Status : False.
2. Connect MJ-VESC ID=1~ using CAN-FORWARD (Setup all the other MJ-VESCs as below in case of ID>=1)
Go to App Settings -> General -> APP to USE : UART
Go to App Settings -> General -> Send CAN Status : True
The VESC-TOOL setup is finished.
3. Download attached source code named 'vesc_control_ex1.zip'. You also need vesc library for ROS. Download 'vesc.zip' which is ros driver for MJ-VESC.
4. Unzip and put those folders at your catkin workspace and then build. When you build, you may need dependencies as follows:
serial
ackermann-msgs
You can install above packages like this (when you use 'ros-melodic' then replace 'kinetic' to 'melodic').
You can test 'SetCurrent', 'SetDutyCycle', 'SetSpeed', 'SetPosition', 'SetBrake', 'SetDPS' by un-commenting each functions. "COMM_SET_DPS" is only valid when you use 'teleop_vesc->custom_cmd_type'.
All the encoder data are stored at 'teleop_vesc->rps[id]' and 'teleop_vesc->rad[id]'. The 'rps' is rad/sec' and The 'rad' is Radian. You can easily use these variables at main function.