removed tracer robot class, added rc state func for scout

This commit is contained in:
Ruixiang Du
2021-07-14 09:20:37 +08:00
parent 0462c9e5c0
commit f67d183d47
6 changed files with 21 additions and 90 deletions

View File

@@ -37,6 +37,9 @@ struct ScoutInterface {
// get robot state
virtual ScoutState GetRobotState() = 0;
virtual RcStateMessage GetRcState(){
// TODO
};
};
} // namespace westonrobot

View File

@@ -52,20 +52,32 @@ class ScoutBase : public AgilexBase<Parser>, public ScoutInterface {
return scout_state_;
}
RcStateMessage GetRcState() override {}
void ResetRobotState() override {
// TODO
std::lock_guard<std::mutex> guard(rc_state_mutex_);
}
private:
ScoutState scout_state_;
RcStateMessage rc_state_;
std::mutex rc_state_mutex_;
void ParseCANFrame(can_frame *rx_frame) override {
AgxMessage status_msg;
if (AgilexBase<Parser>::parser_.DecodeMessage(rx_frame, &status_msg)) {
UpdateScoutState(status_msg, scout_state_);
if (status_msg.type == AgxMsgRcState)
UpdateRcState(status_msg);
else
UpdateScoutState(status_msg, scout_state_);
}
}
void UpdateRcState(const AgxMessage &status_msg) {
std::lock_guard<std::mutex> guard(rc_state_mutex_);
rc_state_ = status_msg.body.rc_state_msg;
}
void UpdateScoutState(const AgxMessage &status_msg, ScoutState &state) {
std::lock_guard<std::mutex> guard(AgilexBase<Parser>::state_mutex_);
switch (status_msg.type) {
@@ -104,10 +116,6 @@ class ScoutBase : public AgilexBase<Parser>, public ScoutInterface {
status_msg.body.v1_actuator_state_msg;
break;
}
// case AgxMsgRcState: {
// state.rc_state = status_msg.body.rc_state_msg;
// break;
// }
/* sensor feedback */
// case AgxMsgOdometry: {
// // std::cout << "Odometer msg feedback received" << std::endl;

View File

@@ -10,39 +10,10 @@
#ifndef TRACER_ROBOT_HPP
#define TRACER_ROBOT_HPP
#include <memory>
#include "ugv_sdk/details/interface/robot_interface.hpp"
#include "ugv_sdk/details/interface/tracer_interface.hpp"
// #include "ugv_sdk/details/robot_base/tracer_base.hpp"
#include "ugv_sdk/details/robot_base/tracer_base.hpp"
namespace westonrobot {
// using TracerRobot = TracerBaseV2();
class TracerRobot : public RobotInterface, public TracerInterface {
public:
TracerRobot();
~TracerRobot();
void Connect(std::string can_name) override;
void Connect(std::string uart_name, uint32_t baudrate) override;
void EnableCommandedMode() override;
void SetMotionCommand(double linear_vel, double angular_vel) override;
void SetLightCommand(LightMode f_mode, uint8_t f_value) override;
void DisableLightControl() override;
void ResetRobotState() override;
ProtocolVersion GetProtocolVersion() override;
// get robot state
TracerState GetRobotState() override;
private:
RobotInterface* robot_;
};
using TracerRobot = TracerBaseV2;
} // namespace westonrobot
#endif /* TRACER_ROBOT_HPP */