diff --git a/.github/workflows/ros-ci.yml b/.github/workflows/ros-ci.yml index 05b4bfc..712b8e8 100644 --- a/.github/workflows/ros-ci.yml +++ b/.github/workflows/ros-ci.yml @@ -6,9 +6,9 @@ name: ROS # events but only for the master branch on: push: - branches: [ master, v2.x ] + branches: [ next ] pull_request: - branches: [ master, v2.x ] + branches: [ next ] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: @@ -21,11 +21,11 @@ jobs: steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 - # - name: Install dependencies - # run: sudo apt-get update && sudo apt-get install -y libasio-dev + - name: Install dependencies + run: sudo apt-get update && sudo apt-get install -y libasio-dev - name: Create catkin workspace run: mkdir -p /catkin_ws/src && cd /catkin_ws/src && /bin/bash -c "source /opt/ros/${ROS_DISTRO}/setup.bash; catkin_init_workspace" - name: Copy code to catkin workspace - run: cd /catkin_ws/src && git clone https://github.com/westonrobot/async_port.git && git clone -b v2.x https://github.com/westonrobot/ugv_sdk.git + run: cd /catkin_ws/src && git clone -b next https://github.com/westonrobot/ugv_sdk.git - name: Run catkin_make run: cd /catkin_ws && /bin/bash -c "source /opt/ros/${ROS_DISTRO}/setup.bash; catkin_make" diff --git a/.github/workflows/standalone-ci.yml b/.github/workflows/standalone-ci.yml index cfbe06a..9f060cd 100644 --- a/.github/workflows/standalone-ci.yml +++ b/.github/workflows/standalone-ci.yml @@ -2,9 +2,9 @@ name: Cpp on: push: - branches: [ master, v2.x ] + branches: [ next ] pull_request: - branches: [ master, v2.x ] + branches: [ next ] jobs: build: @@ -13,11 +13,7 @@ jobs: steps: - uses: actions/checkout@v2 - # - name: Install dependencies - # run: sudo apt-get install -y build-essential cmake libasio-dev - - name: Build and install dependent package - run: git clone https://github.com/westonrobot/async_port.git && cd async_port && mkdir build && cd build && cmake .. && make && sudo make install - - name: Update git submodule - run: git submodule update --init --recursive + - name: Install dependencies + run: sudo apt-get install -y build-essential cmake libasio-dev - name: Build and pack run: mkdir build && cd build && cmake -DBUILD_TESTS=ON .. && cmake --build . && cpack diff --git a/include/ugv_sdk/details/interface/hunter_interface.hpp b/include/ugv_sdk/details/interface/hunter_interface.hpp index a3c5f0a..ada44e1 100644 --- a/include/ugv_sdk/details/interface/hunter_interface.hpp +++ b/include/ugv_sdk/details/interface/hunter_interface.hpp @@ -39,7 +39,8 @@ struct HunterInterface { virtual void SetMotionCommand(double linear_vel, double steering_angle) = 0; - virtual void SetBrakeMode(BrakeMode mode) = 0; + virtual void ActivateBrake() = 0; + virtual void ReleaseBrake() = 0; // get robot state virtual HunterCoreState GetRobotState() = 0; diff --git a/include/ugv_sdk/details/interface/robot_common_interface.hpp b/include/ugv_sdk/details/interface/robot_common_interface.hpp index 7c8537d..04b28d7 100644 --- a/include/ugv_sdk/details/interface/robot_common_interface.hpp +++ b/include/ugv_sdk/details/interface/robot_common_interface.hpp @@ -64,6 +64,8 @@ class RobotCommonInterface { /****** functions not available/valid to all robots ******/ // functions to be implemented by class AgilexBase virtual void SetMotionMode(uint8_t mode){}; + virtual void SetBrakedMode(BrakeMode mode){}; + virtual CoreStateMsgGroup GetRobotCoreStateMsgGroup() { throw std::runtime_error( "Only a derived version of this function with actual implementation " @@ -93,8 +95,6 @@ class RobotCommonInterface { "Only a derived version of this function with actual implementation " "is supposed to be used."); }; - - virtual void EnableBrakeMode(BrakeMode mode){}; }; } // namespace westonrobot diff --git a/include/ugv_sdk/details/robot_base/agilex_base.hpp b/include/ugv_sdk/details/robot_base/agilex_base.hpp index 3385c2e..9d5dfbb 100644 --- a/include/ugv_sdk/details/robot_base/agilex_base.hpp +++ b/include/ugv_sdk/details/robot_base/agilex_base.hpp @@ -190,6 +190,17 @@ class AgilexBase : public RobotCommonInterface { if (can_connected_) can_->StopService(); } + void SetBrakeMode(BrakeMode mode) { + // construct message + AgxMessage msg; + msg.type = AgxMsgBrakeModeConfig; + msg.body.brake_mode_config_msg.mode = mode; + + // encode msg to can frame and send to bus + can_frame frame; + if (parser_.EncodeMessage(&msg, &frame)) can_->SendFrame(frame); + } + void ParseCANFrame(can_frame *rx_frame) { AgxMessage status_msg; if (parser_.DecodeMessage(rx_frame, &status_msg)) { @@ -268,17 +279,6 @@ class AgilexBase : public RobotCommonInterface { break; } } - - void EnableBrakedMode(BrakeMode mode) { - // construct message - AgxMessage msg; - msg.type = AgxMsgBrakeModeConfig; - msg.body.brake_mode_config_msg.mode = mode; - - // encode msg to can frame and send to bus - can_frame frame; - if (parser_.EncodeMessage(&msg, &frame)) can_->SendFrame(frame); - } }; } // namespace westonrobot diff --git a/include/ugv_sdk/details/robot_base/hunter_base.hpp b/include/ugv_sdk/details/robot_base/hunter_base.hpp index 4d28274..1c436d4 100644 --- a/include/ugv_sdk/details/robot_base/hunter_base.hpp +++ b/include/ugv_sdk/details/robot_base/hunter_base.hpp @@ -36,7 +36,6 @@ class HunterBase : public AgilexBase, public HunterInterface { angular_vel); } - // get robot state HunterCoreState GetRobotState() override { auto state = AgilexBase::GetRobotCoreStateMsgGroup(); @@ -62,8 +61,12 @@ class HunterBase : public AgilexBase, public HunterInterface { return hunter_actuator; } - void SetBrakeMode(BrakeMode mode) override{ - AgilexBase::EnableBrakeMode(mode); + void ActivateBrake() override { + AgilexBase::SetBrakeMode(BrakeMode::BRAKE_MODE_LOCK); + } + + void ReleaseBrake() override { + AgilexBase::SetBrakeMode(BrakeMode::BRAKE_MODE_UNLOCK); } }; } // namespace westonrobot diff --git a/include/ugv_sdk/mobile_robot/hunter_robot.hpp b/include/ugv_sdk/mobile_robot/hunter_robot.hpp index bcc5b2d..6e5eb85 100644 --- a/include/ugv_sdk/mobile_robot/hunter_robot.hpp +++ b/include/ugv_sdk/mobile_robot/hunter_robot.hpp @@ -25,7 +25,8 @@ class HunterRobot : public RobotCommonInterface, public HunterInterface { void EnableCommandedMode() override; - void SetBrakeMode(BrakeMode mode) override; + void ActivateBrake() override; + void ReleaseBrake() override; void SetMotionCommand(double linear_vel, double angular_vel) override; diff --git a/src/mobile_robot/hunter_robot.cpp b/src/mobile_robot/hunter_robot.cpp index d4c44d9..36749c4 100644 --- a/src/mobile_robot/hunter_robot.cpp +++ b/src/mobile_robot/hunter_robot.cpp @@ -38,9 +38,14 @@ void HunterRobot::SetMotionCommand(double linear_vel, double angular_vel) { hunter->SetMotionCommand(linear_vel, angular_vel); } -void HunterRobot::SetBrakeMode(BrakeMode mode) { +void HunterRobot::ActivateBrake() { auto hunter = dynamic_cast(robot_); - hunter->SetBrakeMode(mode); + hunter->ActivateBrake(); +} + +void HunterRobot::ReleaseBrake() { + auto hunter = dynamic_cast(robot_); + hunter->ReleaseBrake(); } HunterCoreState HunterRobot::GetRobotState() {