MultiLoopController_Test.cpp
Go to the documentation of this file.
00001 #include <iostream>
00002 #include <gtest/gtest.h>
00003 #include "robodyn_utilities/MultiLoopController.h"
00004 #include <ros/package.h>
00005 #include <stdexcept>
00006 
00007 class MultiLoopControllerTest : public ::testing::Test
00008 {
00009 protected:
00010     virtual void SetUp()
00011     {
00012         mlc.setLoopRate(100);
00013         mlc.setTorqueLoopParameters(0, 0, 0, 0, true);
00014         mlc.setPositionLoopParameters(0, 10, 100);
00015         mlc.setVelocityLoopParameters(-10, 10, 10, 10, 5);
00016         mlc.setCurrentLoopParameters(-10, 10, 10);
00017         mlc.setHardwareParameters(0, 0, 1, 20, 0.1, 0, 1, 50000, 0.000002, 0.0000002);
00018     }
00019 
00020     virtual void TearDown()
00021     {
00022     }
00023 
00024     MultiLoopController mlc;
00025 };
00026 
00027 TEST_F(MultiLoopControllerTest, setBadParams)
00028 {
00029     EXPECT_THROW(mlc.setLoopRate(0),                                            std::runtime_error);
00030     EXPECT_THROW(mlc.setPositionLoopParameters(10, 0, 100),                     std::runtime_error);
00031     EXPECT_THROW(mlc.setTorqueLoopParameters(10, 0, 100, 0),                    std::runtime_error);
00032     EXPECT_THROW(mlc.setVelocityLoopParameters(10, -10, 10, 10, 5),             std::runtime_error);
00033     EXPECT_THROW(mlc.setVelocityLoopParameters(-10, 10, 10, 10, -5),            std::runtime_error);
00034     EXPECT_THROW(mlc.setCurrentLoopParameters(10, -10, 10),                     std::runtime_error);
00035     EXPECT_THROW(mlc.setCurrentLoopParameters(-10, 10, -10),                    std::runtime_error);
00036     EXPECT_THROW(mlc.setHardwareParameters(0, 0, 0, 1, 1, 0, 1, 200, .01, .01), std::runtime_error);
00037     EXPECT_THROW(mlc.setHardwareParameters(0, 0, 1, 1, 1, 0, 0, 200, .01, .01), std::runtime_error);
00038     EXPECT_THROW(mlc.setHardwareParameters(0, 0, 1, 1, 1, 0, 1, .5, 1, .01),    std::runtime_error);
00039 }
00040 
00041 TEST_F(MultiLoopControllerTest, badInput)
00042 {
00043     EXPECT_THROW(mlc.currentLoop(1, 1, 0), std::runtime_error);
00044 }
00045 
00046 TEST_F(MultiLoopControllerTest, currentLoop)
00047 {
00048     mlc.setCurrentLoopParameters(0, 0, 0);
00049     EXPECT_EQ(0, mlc.currentLoop(0, 0, 48));
00050 
00051     // motcom limit
00052     mlc.setCurrentLoopParameters(-1000., 1000., 200.);
00053     EXPECT_EQ(200, mlc.currentLoop(1000, 1000, 48));
00054 
00055     // current limit
00056     mlc.reset();
00057     mlc.setCurrentLoopParameters(-1., 1., 200.);
00058     EXPECT_EQ(102, mlc.currentLoop(1000, 0, 50));
00059 }
00060 
00061 TEST_F(MultiLoopControllerTest, zeros)
00062 {
00063     mlc.setPositionLoopParameters(0, 100, 0);
00064     mlc.setVelocityLoopParameters(0, 0, 0, 0, 0);
00065     mlc.setCurrentLoopParameters(0, 0, 0);
00066 
00067     double vel;
00068     EXPECT_EQ(0, mlc.update(0, 50, 0, 48, vel));
00069 
00070     mlc.setPositionLoopParameters(5, 70, 0);
00071     mlc.setVelocityLoopParameters(0, 0, 0, 0, 0);
00072     mlc.setCurrentLoopParameters(-.25, .25, 200);
00073 
00074     EXPECT_EQ(0, mlc.update(0, 50, 0, 48, vel));
00075 }
00076 
00077 int main(int argc, char** argv)
00078 {
00079     testing::InitGoogleTest(&argc, argv);
00080     return RUN_ALL_TESTS();
00081 }


robodyn_utilities
Author(s):
autogenerated on Thu Jun 6 2019 18:56:07