Skip to content

Commit 009a18f

Browse files
authored
Merge pull request #76 from ROBOTIS-GIT/develop
1.1.0 release
2 parents be50740 + cdb2f89 commit 009a18f

File tree

1,627 files changed

+189476
-188982
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,627 files changed

+189476
-188982
lines changed

arduino/opencr_arduino/opencr/libraries/DynamixelWorkbench/include/dynamixel_workbench/dynamixel_driver.h arduino/opencr_arduino/opencr/libraries/DynamixelWorkbench/include/dynamixel_workbench_toolbox/dynamixel_driver.h

+3
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,9 @@ class DynamixelDriver
114114
int32_t convertRadian2Value(uint8_t id, float radian);
115115
float convertValue2Radian(uint8_t id, int32_t value);
116116

117+
int32_t convertRadian2Value(float radian, int32_t max_position, int32_t min_position, float max_radian = 3.14, float min_radian = -3.14);
118+
float convertValue2Radian(int32_t value, int32_t max_position, int32_t min_position, float max_radian = 3.14, float min_radian = -3.14);
119+
117120
int32_t convertVelocity2Value(uint8_t id, float velocity);
118121
float convertValue2Velocity(uint8_t id, int32_t value);
119122

arduino/opencr_arduino/opencr/libraries/DynamixelWorkbench/include/dynamixel_workbench/dynamixel_workbench.h arduino/opencr_arduino/opencr/libraries/DynamixelWorkbench/include/dynamixel_workbench_toolbox/dynamixel_workbench.h

+5-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class DynamixelWorkbench
6464
bool wheelMode(uint8_t id, uint16_t vel = 0, uint16_t acc = 0);
6565
bool currentMode(uint8_t id, uint8_t cur = 50);
6666

67-
bool goalPosition(uint8_t id, uint16_t goal);
67+
bool goalPosition(uint8_t id, int32_t goal);
6868
bool goalSpeed(uint8_t id, int32_t goal);
6969

7070
bool itemWrite(uint8_t id, const char* item_name, int32_t value); // write value to item
@@ -88,6 +88,10 @@ class DynamixelWorkbench
8888
int32_t convertRadian2Value(uint8_t id, float radian);
8989
float convertValue2Radian(uint8_t id, int32_t value);
9090

91+
int32_t convertRadian2Value(float radian, int32_t max_position, int32_t min_position, float max_radian = 3.14, float min_radian = -3.14);
92+
float convertValue2Radian(int32_t value, int32_t max_position, int32_t min_position, float max_radian = 3.14, float min_radian = -3.14);
93+
94+
9195
int32_t convertVelocity2Value(uint8_t id, float velocity);
9296
float convertValue2Velocity(uint8_t id, int32_t value);
9397

Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
#include "../include/dynamixel_workbench/dynamixel_workbench.h"
1+
#include "../include/dynamixel_workbench_toolbox/dynamixel_workbench.h"
22

arduino/opencr_arduino/opencr/libraries/DynamixelWorkbench/src/dynamixel_workbench/dynamixel_driver.cpp arduino/opencr_arduino/opencr/libraries/DynamixelWorkbench/src/dynamixel_workbench_toolbox/dynamixel_driver.cpp

+39-21
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
/* Authors: Taehun Lim (Darby) */
1818

19-
#include "../../include/dynamixel_workbench/dynamixel_driver.h"
19+
#include "../../include/dynamixel_workbench_toolbox/dynamixel_driver.h"
2020

2121
DynamixelDriver::DynamixelDriver() : tools_cnt_(0), sync_write_handler_cnt_(0), sync_read_handler_cnt_(0) {}
2222

@@ -820,26 +820,16 @@ int32_t DynamixelDriver::convertRadian2Value(uint8_t id, float radian)
820820

821821
if (radian > 0)
822822
{
823-
if (tools_[factor].getValueOfMaxRadianPosition() <= tools_[factor].getValueOfZeroRadianPosition())
824-
return tools_[factor].getValueOfMaxRadianPosition();
825-
826823
value = (radian * (tools_[factor].getValueOfMaxRadianPosition() - tools_[factor].getValueOfZeroRadianPosition()) / tools_[factor].getMaxRadian()) + tools_[factor].getValueOfZeroRadianPosition();
827824
}
828825
else if (radian < 0)
829826
{
830-
if (tools_[factor].getValueOfMinRadianPosition() >= tools_[factor].getValueOfZeroRadianPosition())
831-
return tools_[factor].getValueOfMinRadianPosition();
832-
833827
value = (radian * (tools_[factor].getValueOfMinRadianPosition() - tools_[factor].getValueOfZeroRadianPosition()) / tools_[factor].getMinRadian()) + tools_[factor].getValueOfZeroRadianPosition();
834828
}
835829
else
836830
{
837831
value = tools_[factor].getValueOfZeroRadianPosition();
838832
}
839-
// if (value[id-1] > tools_[num].getValueOfMaxRadianPosition())
840-
// value[id-1] = tools_[num].getValueOfMaxRadianPosition();
841-
// else if (value[id-1] < tools_[num].getValueOfMinRadianPosition())
842-
// value[id-1] = tools_[num].getValueOfMinRadianPosition();
843833

844834
return value;
845835
}
@@ -851,22 +841,50 @@ float DynamixelDriver::convertValue2Radian(uint8_t id, int32_t value)
851841

852842
if (value > tools_[factor].getValueOfZeroRadianPosition())
853843
{
854-
if (tools_[factor].getMaxRadian() <= 0)
855-
return tools_[factor].getMaxRadian();
856-
857844
radian = (float)(value - tools_[factor].getValueOfZeroRadianPosition()) * tools_[factor].getMaxRadian() / (float)(tools_[factor].getValueOfMaxRadianPosition() - tools_[factor].getValueOfZeroRadianPosition());
858845
}
859846
else if (value < tools_[factor].getValueOfZeroRadianPosition())
860847
{
861-
if (tools_[factor].getMinRadian() >= 0)
862-
return tools_[factor].getMinRadian();
863-
864848
radian = (float)(value - tools_[factor].getValueOfZeroRadianPosition()) * tools_[factor].getMinRadian() / (float)(tools_[factor].getValueOfMinRadianPosition() - tools_[factor].getValueOfZeroRadianPosition());
865849
}
866-
// if (radian[id-1] > tools_[num].getMaxRadian())
867-
// radian[id-1] = tools_[num].getMaxRadian();
868-
// else if (radian[id-1] < tools_[num].min_radian_)
869-
// radian[id-1] = tools_[num].min_radian_;
850+
851+
return radian;
852+
}
853+
854+
int32_t DynamixelDriver::convertRadian2Value(float radian, int32_t max_position, int32_t min_position, float max_radian, float min_radian)
855+
{
856+
int32_t value = 0;
857+
int32_t zero_position = (max_position + min_position)/2;
858+
859+
if (radian > 0)
860+
{
861+
value = (radian * (max_position - zero_position) / max_radian) + zero_position;
862+
}
863+
else if (radian < 0)
864+
{
865+
value = (radian * (min_position - zero_position) / min_radian) + zero_position;
866+
}
867+
else
868+
{
869+
value = zero_position;
870+
}
871+
872+
return value;
873+
}
874+
875+
float DynamixelDriver::convertValue2Radian(int32_t value, int32_t max_position, int32_t min_position, float max_radian, float min_radian)
876+
{
877+
float radian = 0.0;
878+
int32_t zero_position = (max_position + min_position)/2;
879+
880+
if (value > zero_position)
881+
{
882+
radian = (float)(value - zero_position) * max_radian / (float)(max_position - zero_position);
883+
}
884+
else if (value < zero_position)
885+
{
886+
radian = (float)(value - zero_position) * min_radian / (float)(min_position - zero_position);
887+
}
870888

871889
return radian;
872890
}

arduino/opencr_arduino/opencr/libraries/DynamixelWorkbench/src/dynamixel_workbench/dynamixel_item.cpp arduino/opencr_arduino/opencr/libraries/DynamixelWorkbench/src/dynamixel_workbench_toolbox/dynamixel_item.cpp

+12-12
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
/* Authors: Taehun Lim (Darby) */
1818

19-
#include "../../include/dynamixel_workbench/dynamixel_item.h"
19+
#include "../../include/dynamixel_workbench_toolbox/dynamixel_item.h"
2020

2121
static uint8_t the_number_of_item = 0;
2222

@@ -90,8 +90,8 @@ static void setAXInfo()
9090
{
9191
model_info.velocity_to_value_ratio = 86.03; // AX series don't support exact speed in wheel mode.
9292

93-
model_info.value_of_0_radian_position = 512;
9493
model_info.value_of_min_radian_position = 0;
94+
model_info.value_of_0_radian_position = 512;
9595
model_info.value_of_max_radian_position = 1023;
9696

9797
model_info.min_radian = -2.61799;
@@ -160,8 +160,8 @@ static void setRXInfo(void)
160160
{
161161
model_info.velocity_to_value_ratio = 86.03; // RX series don't support exact speed in wheel mode.
162162

163-
model_info.value_of_0_radian_position = 512;
164163
model_info.value_of_min_radian_position = 0;
164+
model_info.value_of_0_radian_position = 512;
165165
model_info.value_of_max_radian_position = 1023;
166166

167167
model_info.min_radian = -2.61799;
@@ -233,8 +233,8 @@ static void setEXInfo()
233233
{
234234
model_info.velocity_to_value_ratio = 86.03; // EX series don't support exact speed in wheel mode.
235235

236-
model_info.value_of_0_radian_position = 2048;
237236
model_info.value_of_min_radian_position = 0;
237+
model_info.value_of_0_radian_position = 2048;
238238
model_info.value_of_max_radian_position = 4095;
239239

240240
model_info.min_radian = -2.18969008;
@@ -306,8 +306,8 @@ static void setMXInfo()
306306
{
307307
model_info.velocity_to_value_ratio = 86.81;
308308

309-
model_info.value_of_0_radian_position = 2048;
310309
model_info.value_of_min_radian_position = 0;
310+
model_info.value_of_0_radian_position = 2048;
311311
model_info.value_of_max_radian_position = 4095;
312312

313313
model_info.min_radian = -3.14159265;
@@ -394,8 +394,8 @@ static void setMX2Info(void)
394394
{
395395
model_info.velocity_to_value_ratio = 41.70;
396396

397-
model_info.value_of_0_radian_position = 2048;
398397
model_info.value_of_min_radian_position = 0;
398+
model_info.value_of_0_radian_position = 2048;
399399
model_info.value_of_max_radian_position = 4095;
400400

401401
model_info.min_radian = -3.14159265;
@@ -473,8 +473,8 @@ static void setExtMXInfo()
473473
{
474474
model_info.velocity_to_value_ratio = 86.81;
475475

476-
model_info.value_of_0_radian_position = 2048;
477476
model_info.value_of_min_radian_position = 0;
477+
model_info.value_of_0_radian_position = 2048;
478478
model_info.value_of_max_radian_position = 4095;
479479

480480
model_info.min_radian = -3.14159265;
@@ -563,8 +563,8 @@ static void setExtMX2Info(void)
563563
{
564564
model_info.velocity_to_value_ratio = 41.70;
565565

566-
model_info.value_of_0_radian_position = 2048;
567566
model_info.value_of_min_radian_position = 0;
567+
model_info.value_of_0_radian_position = 2048;
568568
model_info.value_of_max_radian_position = 4095;
569569

570570
model_info.min_radian = -3.14159265;
@@ -633,8 +633,8 @@ static void setXL320Info()
633633
{
634634
model_info.velocity_to_value_ratio = 86.03; // XL320 don't support exact speed in wheel mode.
635635

636-
model_info.value_of_0_radian_position = 512;
637636
model_info.value_of_min_radian_position = 0;
637+
model_info.value_of_0_radian_position = 512;
638638
model_info.value_of_max_radian_position = 1023;
639639

640640
model_info.min_radian = -2.61799;
@@ -721,8 +721,8 @@ static void setXLInfo()
721721
{
722722
model_info.velocity_to_value_ratio = 41.70;
723723

724-
model_info.value_of_0_radian_position = 2048;
725724
model_info.value_of_min_radian_position = 0;
725+
model_info.value_of_0_radian_position = 2048;
726726
model_info.value_of_max_radian_position = 4095;
727727

728728
model_info.min_radian = -3.14159265;
@@ -1078,9 +1078,9 @@ static void setPROInfo()
10781078
{
10791079
model_info.velocity_to_value_ratio = 4792.8;
10801080

1081-
model_info.value_of_0_radian_position = 0;
10821081
model_info.value_of_min_radian_position = -250961;
1083-
model_info.value_of_max_radian_position = 250961;
1082+
model_info.value_of_0_radian_position = 0;
1083+
model_info.value_of_max_radian_position = 250961;
10841084

10851085
model_info.min_radian = -3.14159265;
10861086
model_info.max_radian = 3.14159265;

arduino/opencr_arduino/opencr/libraries/DynamixelWorkbench/src/dynamixel_workbench/dynamixel_tool.cpp arduino/opencr_arduino/opencr/libraries/DynamixelWorkbench/src/dynamixel_workbench_toolbox/dynamixel_tool.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
/* Authors: Taehun Lim (Darby) */
1818

19-
#include "../../include/dynamixel_workbench/dynamixel_tool.h"
19+
#include "../../include/dynamixel_workbench_toolbox/dynamixel_tool.h"
2020

2121
DynamixelTool::DynamixelTool() : dxl_info_cnt_(0), the_number_of_item_(0){}
2222

arduino/opencr_arduino/opencr/libraries/DynamixelWorkbench/src/dynamixel_workbench/dynamixel_workbench.cpp arduino/opencr_arduino/opencr/libraries/DynamixelWorkbench/src/dynamixel_workbench_toolbox/dynamixel_workbench.cpp

+12-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
/* Authors: Taehun Lim (Darby) */
1818

19-
#include "../../include/dynamixel_workbench/dynamixel_workbench.h"
19+
#include "../../include/dynamixel_workbench_toolbox/dynamixel_workbench.h"
2020

2121
DynamixelWorkbench::DynamixelWorkbench()
2222
{
@@ -278,7 +278,7 @@ bool DynamixelWorkbench::currentMode(uint8_t id, uint8_t cur)
278278
return comm_result;
279279
}
280280

281-
bool DynamixelWorkbench::goalPosition(uint8_t id, uint16_t goal)
281+
bool DynamixelWorkbench::goalPosition(uint8_t id, int32_t goal)
282282
{
283283
bool comm_result = false;
284284

@@ -438,6 +438,16 @@ float DynamixelWorkbench::convertValue2Radian(uint8_t id, int32_t value)
438438
return driver_.convertValue2Radian(id, value);
439439
}
440440

441+
int32_t DynamixelWorkbench::convertRadian2Value(float radian, int32_t max_position, int32_t min_position, float max_radian, float min_radian)
442+
{
443+
return driver_.convertRadian2Value(radian, max_position, min_position, max_radian, min_radian);
444+
}
445+
446+
float DynamixelWorkbench::convertValue2Radian(int32_t value, int32_t max_position, int32_t min_position, float max_radian, float min_radian)
447+
{
448+
return driver_.convertValue2Radian(value, max_position, min_position, max_radian, min_radian);
449+
}
450+
441451
int32_t DynamixelWorkbench::convertVelocity2Value(uint8_t id, float velocity)
442452
{
443453
return driver_.convertVelocity2Value(id, velocity);

0 commit comments

Comments
 (0)