Files
ugv_sdk/include/ugv_sdk/details/interface/scout_interface.hpp
2021-07-15 15:25:49 +08:00

57 lines
1.4 KiB
C++

/*
* scout_interface.hpp
*
* Created on: Jul 08, 2021 12:02
* Description: Scout-specific interface
*
* Copyright (c) 2021 Weston Robot Pte. Ltd.
*/
#ifndef SCOUT_INTERFACE_HPP
#define SCOUT_INTERFACE_HPP
#include <string>
#include "ugv_sdk/details/interface/agilex_message.h"
#include "ugv_sdk/details/interface/robot_common_interface.hpp"
namespace westonrobot {
struct ScoutCoreState {
AgxMsgTimeStamp time_stamp;
SystemStateMessage system_state;
MotionStateMessage motion_state;
LightStateMessage light_state;
RcStateMessage rc_state;
};
struct ScoutActuatorState {
AgxMsgTimeStamp time_stamp;
// actuator state
// - for v2 robots only
ActuatorHSStateMessage actuator_hs_state[4];
ActuatorLSStateMessage actuator_ls_state[4];
// - for v1 robots only
ActuatorStateMessageV1 actuator_state[4];
};
struct ScoutInterface {
virtual ~ScoutInterface() = default;
virtual void Connect(std::string uart_name, uint32_t baudrate){
// use derived version
};
virtual void SetMotionCommand(double linear_vel, double angular_vel) = 0;
virtual void SetLightCommand(LightMode f_mode, uint8_t f_value,
LightMode r_mode, uint8_t r_value) = 0;
// get robot state
virtual ScoutCoreState GetRobotState() = 0;
virtual ScoutActuatorState GetActuatorState() = 0;
};
} // namespace westonrobot
#endif /* SCOUT_INTERFACE_HPP */