ts_SVHDriver.cpp
Go to the documentation of this file.
1 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
2 
3 // -- BEGIN LICENSE BLOCK ----------------------------------------------
4 // This file is part of the SCHUNK SVH Driver suite.
5 //
6 // This program is free software licensed under the LGPL
7 // (GNU LESSER GENERAL PUBLIC LICENSE Version 3).
8 // You can find a copy of this license in LICENSE folder in the top
9 // directory of the source code.
10 //
11 // © Copyright 2014 SCHUNK Mobile Greifsysteme GmbH, Lauffen/Neckar Germany
12 // © Copyright 2014 FZI Forschungszentrum Informatik, Karlsruhe, Germany
13 //
14 // -- END LICENSE BLOCK ------------------------------------------------
15 
16 //----------------------------------------------------------------------
23 //----------------------------------------------------------------------
24 #include <icl_comm/ByteOrderConversion.h>
25 #include <boost/test/unit_test.hpp>
26 
36 
37 using icl_comm::ArrayBuilder;
38 using namespace driver_svh;
39 
40 BOOST_AUTO_TEST_SUITE(ts_SVHDriver)
41 
42 ArrayBuilder payload(40);
43 
44 BOOST_AUTO_TEST_CASE(ConvertPosSettings)
45 {
46  std::cout << "Conversion test of Position Settings ....";
47 
48  // Reset Array Builder
49  payload.reset(40);
50 
51  // Create Structures
52  SVHPositionSettings test_pos_settings_in(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.1);
53  SVHPositionSettings test_pos_settings_out;
54 
55  // Conversion
56  payload << test_pos_settings_in;
57  payload >> test_pos_settings_out;
58 
59  BOOST_CHECK_EQUAL(test_pos_settings_in,test_pos_settings_out);
60 
61  std::cout << "Done" << std::endl;
62 }
63 
64 BOOST_AUTO_TEST_CASE(ConvertCurSettings)
65 {
66  std::cout << "Conversion test of Current Settings ....";
67 
68  // Reset Array Builder
69  payload.reset(40);
70 
71  // Create Structures
72  SVHCurrentSettings test_cur_settings_in(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.1);
73  SVHCurrentSettings test_cur_settings_out;
74 
75  // Conversion
76  payload << test_cur_settings_in;
77  payload >> test_cur_settings_out;
78 
79  BOOST_CHECK_EQUAL(test_cur_settings_in,test_cur_settings_out);
80 
81  std::cout << "Done" << std::endl;
82 }
83 
84 BOOST_AUTO_TEST_CASE(ConvertControlCommand)
85 {
86  std::cout << "Conversion test of Controll Command ....";
87 
88  // Reset Array Builder
89  payload.reset(40);
90 
91  // Create Structures
92  SVHControlCommand test_control_command_in(23);
93  SVHControlCommand test_control_command_out(0);
94 
95  // Conversion
96  payload << test_control_command_in;
97  payload >> test_control_command_out;
98 
99  BOOST_CHECK_EQUAL(test_control_command_in,test_control_command_out);
100 
101  std::cout << "Done" << std::endl;
102 }
103 
104 
105 BOOST_AUTO_TEST_CASE(ConvertControlFeedback)
106 {
107  std::cout << "Conversion test of ControllerFeedback ....";
108 
109  // Reset Array Builder
110  payload.reset(40);
111 
112  // Create Structures
113  SVHControllerFeedback test_controller_feedback_in(23,42);
114  SVHControllerFeedback test_controller_feedback_out;
115 
116  // Conversion
117  payload << test_controller_feedback_in;
118  payload >> test_controller_feedback_out;
119 
120  BOOST_CHECK_EQUAL(test_controller_feedback_in,test_controller_feedback_out);
121 
122  std::cout << "Done" << std::endl;
123 }
124 
125 BOOST_AUTO_TEST_CASE(ConvertControllerState)
126 {
127  std::cout << "Converstion test of ControllerState ....";
128 
129  // Reset Array Builder
130  payload.reset(40);
131 
132  // Create Structures
133  SVHControllerState test_controller_state_in(0x001F,0x001F,0x0200,0x02000,0x0001,0x0001);
134  SVHControllerState test_controller_state_out;
135 
136  // Conversion
137  payload << test_controller_state_in;
138  payload >> test_controller_state_out;
139 
140 
141 
142  BOOST_CHECK_EQUAL(test_controller_state_in,test_controller_state_out);
143 
144  std::cout << "Done" << std::endl;
145 }
146 
147 BOOST_AUTO_TEST_CASE(ConvertEncoderSettings)
148 {
149  std::cout << "Converstion test of EncoderSettings ....";
150 
151  // Reset Array Builder
152  payload.reset(40);
153 
154  // Create Structures
155  SVHEncoderSettings test_encoder_settings_in(23);
156  SVHEncoderSettings test_encoder_settings_out;
157 
158  // Conversion
159  payload << test_encoder_settings_in;
160  payload >> test_encoder_settings_out;
161 
162  BOOST_CHECK_EQUAL(test_encoder_settings_in,test_encoder_settings_out);
163 
164  std::cout << "Done" << std::endl;
165 }
166 
167 BOOST_AUTO_TEST_CASE(ConvertControlCommandAllChannels)
168 {
169  std::cout << "Converstion test of ControlCommandAllChannels ....";
170 
171  // Reset Array Builder
172  payload.reset(40);
173 
174  // Create Structures
175  SVHControlCommandAllChannels test_control_command_in(0,1,2,3,4,5,6,7,8);
176  SVHControlCommandAllChannels test_control_command_out;
177 
178  // Conversion
179  payload << test_control_command_in;
180  payload >> test_control_command_out;
181 
182  BOOST_CHECK_EQUAL(test_control_command_in,test_control_command_out);
183 
184  std::cout << "Done" << std::endl;
185 }
186 
187 BOOST_AUTO_TEST_CASE(ConvertControllerFeedbackAllChannels)
188 {
189  std::cout << "Converstion test of ControllerFeedbackAllChannels ....";
190 
191  // Reset Array Builder
192  payload.reset(40);
193 
194  // Create Structures
195  SVHControllerFeedbackAllChannels test_controller_feedback_all_channels_in(SVHControllerFeedback(0,9),
196  SVHControllerFeedback(1,10),
197  SVHControllerFeedback(2,11),
198  SVHControllerFeedback(3,12),
199  SVHControllerFeedback(4,13),
200  SVHControllerFeedback(5,14),
201  SVHControllerFeedback(6,15),
202  SVHControllerFeedback(7,16),
203  SVHControllerFeedback(8,17));
204  SVHControllerFeedbackAllChannels test_controller_feedback_all_channels_out;
205 
206 
207 
208  // Conversion
209  payload << test_controller_feedback_all_channels_in;
210  payload >> test_controller_feedback_all_channels_out;
211 
212  BOOST_CHECK_EQUAL(test_controller_feedback_all_channels_in,test_controller_feedback_all_channels_out);
213 
214  std::cout << "Done" << std::endl;
215 }
216 
217 
218 BOOST_AUTO_TEST_CASE(ConvertSerialPacket)
219 {
220 
221  std::cout << "Converstion test of Serial Packet ....";
222 
223  // Reset Array Builder
224  payload.reset(40);
225 
226  // Create Structures
227  ArrayBuilder packet;
228  SVHSerialPacket test_serial_packet_in(40,5);
229  SVHSerialPacket test_serial_packet_out(40);
230  SVHPositionSettings test_pos_settings_in(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.1);
231  SVHPositionSettings test_pos_settings_out;
232 
233  // Conversion
234  payload << test_pos_settings_in;
235  // Insertion
236  test_serial_packet_in.data = payload.array;
237  // Converstion (this would be done by serialinterface)
238  packet << test_serial_packet_in;
239 
240  // std::cout << "Raw Serial Packet of Position settings: " << packet << std::endl;
241 
242  packet >> test_serial_packet_out;
243  payload.reset(40);
244  payload.appendWithoutConversion(test_serial_packet_out.data);
245  payload >> test_pos_settings_out;
246 
247  BOOST_CHECK_EQUAL(test_serial_packet_in,test_serial_packet_out);
248  BOOST_CHECK_EQUAL(test_pos_settings_in,test_pos_settings_out);
249 
250  //std::cout << "Original pos Settings: " << test_pos_settings_in << " Interpreted pos settings: "<< test_pos_settings_out <<std::endl;
251  std::cout << "Done" << std::endl;
252 }
253 
254 BOOST_AUTO_TEST_CASE(ControllerreceiveFeedback)
255 {
256 
257  std::cout << "Controller receiving feedback Packet ....";
258 
259  // Initialize logging
261 
262  // Reset Array Builder
263  // BEWARE OF ARRAY LENGTH!
264  payload.reset(64);
265 
266  // Create Structures
267  SVHController controller;
268  ArrayBuilder packet;
270  SVHSerialPacket test_serial_packet(64,SVH_SET_CONTROL_COMMAND|static_cast<uint8_t>(channel << 4));
271  SVHControllerFeedback test_controller_feedback(23,42);
272  // Conversion
273  payload << test_controller_feedback;
274 
275 
276  // Insertion
277  test_serial_packet.data = payload.array;
278 
279  // Emulate received packet
280  controller.receivedPacketCallback(test_serial_packet,1);
281 
282  // Get packet from controller
283  SVHControllerFeedback feedback_out;
284  controller.getControllerFeedback(channel,feedback_out);
285 
286  BOOST_CHECK_EQUAL(test_controller_feedback,feedback_out);
287 
288  std::cout << "Done" << std::endl;
289 }
290 
291 
292 
293 BOOST_AUTO_TEST_SUITE_END()
Structure for transmitting all controllcommands at once.
bool initialize(int &argc, char *argv[], bool remove_read_arguments)
void receivedPacketCallback(const SVHSerialPacket &packet, unsigned int packet_count)
callback function for interpretation of packages
The SVHCurrentSettings save the current controller paramters for a single motor.
const uint8_t SVH_SET_CONTROL_COMMAND
Sets the target position of a channel.
bool getControllerFeedback(const SVHChannel &channel, SVHControllerFeedback &controller_feedback)
request the latest stored controllerfeedback (current, position) from the controller.
std::vector< uint8_t > data
Payload of the package.
The SVHControllerFeedback saves the feedback of a single motor.
ControlCommands are given as a single target position for the position controller (given in ticks) ...
ArrayBuilder payload(40)
This class controls the the SCHUNK five finger hand.
Definition: SVHController.h:77
The SVHPositionSettings save the position controller paramters for a single motor.
The SVHControllerState indicates the current state of the MeCoVis controller IC which is used in the ...
The SVHControllerFeedbackAllChannes saves the feedback of a all motors.
The SVHEncoderSettings hold the settings for the encoder scaling of each channel. ...
SVHChannel
Channel indicates which motor to use in command calls. WARNING: DO NOT CHANGE THE ORDER OF THESE as i...
Definition: SVHController.h:56
BOOST_AUTO_TEST_CASE(ConvertPosSettings)
The SerialPacket holds the (non generated) header and data of one message to the SVH-Hardware.


schunk_svh_driver
Author(s): Georg Heppner
autogenerated on Mon Jun 10 2019 15:04:59