Class hal::rmd::drc
Driver for RMD motors equip with the DRC motor drivers.
#include <drc.hpp>
Classes
Type | Name |
---|---|
struct | feedback_t |
Public Types
Type | Name |
---|---|
enum hal::byte | actuate Commands for actuate the motor. |
enum hal::byte | read Commands that can be issued to a RMD-X motor. |
enum hal::byte | system Commands for controlling the motor as a whole. |
enum hal::byte | write Commands for updating motor configuration data. |
Public Functions
Type | Name |
---|---|
drc (drc & p_other) = delete |
|
drc (drc && p_other) noexcept |
|
const feedback_t & | feedback () const |
status | feedback_request (read p_command) Request feedback from the motor. |
void | operator() (const can::message_t & p_message) Handle messages from the canbus with this devices ID. |
drc & | operator= (drc & p_other) = delete |
drc & | operator= (drc && p_other) noexcept |
status | position_control (degrees p_angle, rpm speed) Move motor shaft to a specific angle. |
status | system_control (system p_system_command) Send system control commands to the device. |
status | velocity_control (rpm p_speed) Rotate motor shaft at the designated speed. |
Public Static Functions
Type | Name |
---|---|
result< drc > | create (hal::can_router & p_router, hal::steady_clock & p_clock, float p_gear_ratio, can::id_t device_id, hal::time_duration p_max_response_time=std::chrono::milliseconds(10)) Create a new drc device driver. |
Public Types Documentation
enum actuate
enum hal::rmd::drc::actuate {
speed = 0xA2,
position_2 = 0xA4
};
enum read
enum hal::rmd::drc::read {
multi_turns_angle = 0x92,
status_1_and_error_flags = 0x9A,
status_2 = 0x9C
};
enum system
enum hal::rmd::drc::system {
clear_error_flag = 0x9B,
off = 0x80,
stop = 0x81,
running = 0x88
};
enum write
enum hal::rmd::drc::write {
pid_to_ram = 0x31,
pid_to_rom = 0x32,
acceleration_data_to_ram = 0x34,
encoder_offset = 0x91,
current_position_to_rom_as_motor_zero = 0x19
};
Public Functions Documentation
function drc [1/3]
hal::rmd::drc::drc (
drc & p_other
) = delete
function drc [2/3]
hal::rmd::drc::drc (
drc && p_other
) noexcept
function feedback
const feedback_t & hal::rmd::drc::feedback () const
function feedback_request
Request feedback from the motor.
status hal::rmd::drc::feedback_request (
read p_command
)
Parameters:
p_command
- the request to command the motor to respond with
Returns:
status - success or failure
Exception:
std::errc::timed_out
- if a response is not returned within the max response time set at creation.
function operator()
Handle messages from the canbus with this devices ID.
void hal::rmd::drc::operator() (
const can::message_t & p_message
)
Meant mostly for testing purposes.
Parameters:
p_message
- message received from the bus
function operator=
drc & hal::rmd::drc::operator= (
drc & p_other
) = delete
function operator=
drc & hal::rmd::drc::operator= (
drc && p_other
) noexcept
function position_control
Move motor shaft to a specific angle.
status hal::rmd::drc::position_control (
degrees p_angle,
rpm speed
)
Parameters:
p_angle
- angle position in degrees to move tospeed
- maximum speed in rpm's
Returns:
status - success or failure
Exception:
std::errc::timed_out
- if a response is not returned within the max response time set at creation.
function system_control
Send system control commands to the device.
status hal::rmd::drc::system_control (
system p_system_command
)
Parameters:
p_system_command
- system control command to send to the device
Returns:
status - success or failure status
Exception:
std::errc::timed_out
- if a response is not returned within the max response time set at creation.
function velocity_control
Rotate motor shaft at the designated speed.
status hal::rmd::drc::velocity_control (
rpm p_speed
)
Parameters:
p_speed
- speed in rpm to move the motor shaft at. Positive values rotate the motor shaft clockwise, negative values rotate the motor shaft counter-clockwise assuming you are looking directly at the motor shaft.
Returns:
status - success or failure
Exception:
std::errc::timed_out
- if a response is not returned within the max response time set at creation.
Public Static Functions Documentation
function create
Create a new drc device driver.
static result< drc > hal::rmd::drc::create (
hal::can_router & p_router,
hal::steady_clock & p_clock,
float p_gear_ratio,
can::id_t device_id,
hal::time_duration p_max_response_time=std::chrono::milliseconds(10)
)
This factory function will power cycle the motor
Parameters:
p_router
- can router to usep_clock
- clocked used to determine timeoutsp_gear_ratio
- gear ratio of the motordevice_id
- The CAN ID of the motorp_max_response_time
- maximum amount of time to wait for a response from the motor.
Returns:
result<drc> - the drc driver or an error
Exception:
std::errc::timed_out
- a response is not returned within the max response time when attempting to power cycle.
The documentation for this class was generated from the following file libraries/include/libhal-rmd/drc.hpp