44 lines
1.9 KiB
Markdown
44 lines
1.9 KiB
Markdown
|
|
||
|
# Hints
|
||
|
Connect Hoverboard PCB (USART3, GND, TX, RX, no VCC!!) to USB-TTL converter (or UART interface of your SBC).
|
||
|
Set the serial port according to your setup in hoverboard_driver.ros2_control.xacro file
|
||
|
|
||
|
# Launch
|
||
|
```
|
||
|
ros2 launch hoverboard_driver diffbot.launch.py
|
||
|
```
|
||
|
|
||
|
# Classes
|
||
|
The entire package consists of three main classes:
|
||
|
1. hoverboard_driver_node
|
||
|
2. hoverboard_driver
|
||
|
3. pid
|
||
|
|
||
|
whereas the first two are implemented in the same file named hoverboard_driver.cpp (blame on me)
|
||
|
|
||
|
## hoverboard_driver
|
||
|
This is the main class and implements the hardare interface for diff_drove_controller itself. This class is responsible for read/write to hardware.
|
||
|
|
||
|
## hoverboard_driver_node
|
||
|
This class is a member/attribute of hoverboard_driver class and acts as a helper class. As hoverboard_driver itselfs derives from hardware_interface::SystemInterface class, hoverboard_driver class is not able to define publishers or settable parameters. To overcome this, hoverboard_driver_node has been introduced. This class derives from rclcpp::Node and can therefore publish topics and also can define reconfigurable parameters.
|
||
|
|
||
|
This class publishes state of Hoverboard PCB like velocity, pose, command, voltage, temperature, battery level,current consumption of each motor and the state of serial interface(connected, not connected).
|
||
|
|
||
|
Also this class provides dynamic parameters for PID controller
|
||
|
|
||
|
## pid
|
||
|
The PID class is defined as /attribute of overboard_Driver class (array, of PIDs, one per wheel).
|
||
|
It works in general but it's not active now as I idn't find proper PID settings so far.
|
||
|
To activate, change this code section in hoverboard_driver.cpp
|
||
|
|
||
|
``` // Convert PID outputs in RAD/S to RPM
|
||
|
//double set_speed[2] = {
|
||
|
// pid_outputs[0] / 0.10472,
|
||
|
// pid_outputs[1] / 0.10472};
|
||
|
|
||
|
double set_speed[2] = {
|
||
|
hw_commands_[left_wheel] / 0.10472,
|
||
|
hw_commands_[right_wheel] / 0.10472
|
||
|
};
|
||
|
```
|