Skip to content

Commit c49adc5

Browse files
author
Shota Aoki
authored
PHシリーズと共通でsync_read,writeするため、29番以降のインダイレクトアドレスを使用する (#20)
1 parent 719099e commit c49adc5

File tree

2 files changed

+30
-29
lines changed

2 files changed

+30
-29
lines changed

rt_manipulators_lib/src/dynamixel_xm.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,16 @@ const uint16_t ADDR_PRESENT_VELOCITY = 128;
3939
const uint16_t ADDR_PRESENT_POSITION = 132;
4040
const uint16_t ADDR_PRESENT_VOLTAGE = 144;
4141
const uint16_t ADDR_PRESENT_TEMPERATURE = 146;
42-
const uint16_t ADDR_INDIRECT_ADDRESS_1 = 168;
43-
const uint16_t ADDR_INDIRECT_DATA_1 = 224;
4442
const uint16_t ADDR_INDIRECT_ADDRESS_29 = 578;
4543
const uint16_t ADDR_INDIRECT_DATA_29 = 634;
46-
47-
const uint16_t ADDR_START_INDIRECT_ADDR_READ = ADDR_INDIRECT_ADDRESS_1;
48-
const uint16_t ADDR_START_INDIRECT_DATA_READ = ADDR_INDIRECT_DATA_1;
49-
const uint16_t ADDR_START_INDIRECT_ADDR_WRITE = ADDR_INDIRECT_ADDRESS_29;
50-
const uint16_t ADDR_START_INDIRECT_DATA_WRITE = ADDR_INDIRECT_DATA_29;
44+
const uint16_t ADDR_INDIRECT_ADDRESS_44 = 608;
45+
const uint16_t ADDR_INDIRECT_DATA_44 = 649;
46+
47+
// PHシリーズと同じアドレスで通信するため29番以降のインダイレクトアドレスを使用する
48+
const uint16_t ADDR_START_INDIRECT_ADDR_READ = ADDR_INDIRECT_ADDRESS_29;
49+
const uint16_t ADDR_START_INDIRECT_DATA_READ = ADDR_INDIRECT_DATA_29;
50+
const uint16_t ADDR_START_INDIRECT_ADDR_WRITE = ADDR_INDIRECT_ADDRESS_44;
51+
const uint16_t ADDR_START_INDIRECT_DATA_WRITE = ADDR_INDIRECT_DATA_44;
5152

5253
const uint16_t LEN_PRESENT_CURRENT = 2;
5354
const uint16_t LEN_PRESENT_VELOCITY = 4;

rt_manipulators_lib/test/test_dynamixel_xm.cpp

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -164,59 +164,59 @@ TEST_F(XMTestFixture, from_current_ampere) {
164164
}
165165

166166
TEST_F(XMTestFixture, set_indirect_addresses_read) {
167-
EXPECT_EQ(dxl->start_address_for_indirect_read(), 224);
167+
EXPECT_EQ(dxl->start_address_for_indirect_read(), 634);
168168
EXPECT_EQ(dxl->length_of_indirect_data_read(), 0);
169-
EXPECT_EQ(dxl->next_indirect_addr_read(), 168);
169+
EXPECT_EQ(dxl->next_indirect_addr_read(), 578);
170170

171171
EXPECT_FALSE(dxl->auto_set_indirect_address_of_present_position(comm));
172172
// indirect_dataの開始位置は変わらないことを期待
173-
EXPECT_EQ(dxl->start_address_for_indirect_read(), 224);
173+
EXPECT_EQ(dxl->start_address_for_indirect_read(), 634);
174174
EXPECT_EQ(dxl->length_of_indirect_data_read(), 4);
175-
EXPECT_EQ(dxl->next_indirect_addr_read(), 176);
176-
EXPECT_EQ(dxl->indirect_addr_of_present_position(), 224);
175+
EXPECT_EQ(dxl->next_indirect_addr_read(), 586);
176+
EXPECT_EQ(dxl->indirect_addr_of_present_position(), 634);
177177

178178
EXPECT_FALSE(dxl->auto_set_indirect_address_of_present_velocity(comm));
179179
EXPECT_EQ(dxl->length_of_indirect_data_read(), 8);
180-
EXPECT_EQ(dxl->next_indirect_addr_read(), 184);
181-
EXPECT_EQ(dxl->indirect_addr_of_present_velocity(), 228);
180+
EXPECT_EQ(dxl->next_indirect_addr_read(), 594);
181+
EXPECT_EQ(dxl->indirect_addr_of_present_velocity(), 638);
182182

183183
EXPECT_FALSE(dxl->auto_set_indirect_address_of_present_current(comm));
184184
EXPECT_EQ(dxl->length_of_indirect_data_read(), 10);
185-
EXPECT_EQ(dxl->next_indirect_addr_read(), 188);
186-
EXPECT_EQ(dxl->indirect_addr_of_present_current(), 232);
185+
EXPECT_EQ(dxl->next_indirect_addr_read(), 598);
186+
EXPECT_EQ(dxl->indirect_addr_of_present_current(), 642);
187187

188188
EXPECT_FALSE(dxl->auto_set_indirect_address_of_present_input_voltage(comm));
189189
EXPECT_EQ(dxl->length_of_indirect_data_read(), 12);
190-
EXPECT_EQ(dxl->next_indirect_addr_read(), 192);
191-
EXPECT_EQ(dxl->indirect_addr_of_present_input_voltage(), 234);
190+
EXPECT_EQ(dxl->next_indirect_addr_read(), 602);
191+
EXPECT_EQ(dxl->indirect_addr_of_present_input_voltage(), 644);
192192

193193
EXPECT_FALSE(dxl->auto_set_indirect_address_of_present_temperature(comm));
194194
EXPECT_EQ(dxl->length_of_indirect_data_read(), 13);
195-
EXPECT_EQ(dxl->next_indirect_addr_read(), 194);
196-
EXPECT_EQ(dxl->indirect_addr_of_present_temperature(), 236);
195+
EXPECT_EQ(dxl->next_indirect_addr_read(), 604);
196+
EXPECT_EQ(dxl->indirect_addr_of_present_temperature(), 646);
197197
}
198198

199199
TEST_F(XMTestFixture, set_indirect_addresses_write) {
200-
EXPECT_EQ(dxl->start_address_for_indirect_write(), 634);
200+
EXPECT_EQ(dxl->start_address_for_indirect_write(), 649);
201201
EXPECT_EQ(dxl->length_of_indirect_data_write(), 0);
202-
EXPECT_EQ(dxl->next_indirect_addr_write(), 578);
202+
EXPECT_EQ(dxl->next_indirect_addr_write(), 608);
203203

204204
EXPECT_FALSE(dxl->auto_set_indirect_address_of_goal_position(comm));
205205
// indirect_dataの開始位置は変わらないことを期待
206-
EXPECT_EQ(dxl->start_address_for_indirect_write(), 634);
206+
EXPECT_EQ(dxl->start_address_for_indirect_write(), 649);
207207
EXPECT_EQ(dxl->length_of_indirect_data_write(), 4);
208-
EXPECT_EQ(dxl->next_indirect_addr_write(), 586);
209-
EXPECT_EQ(dxl->indirect_addr_of_goal_position(), 634);
208+
EXPECT_EQ(dxl->next_indirect_addr_write(), 616);
209+
EXPECT_EQ(dxl->indirect_addr_of_goal_position(), 649);
210210

211211
EXPECT_FALSE(dxl->auto_set_indirect_address_of_goal_velocity(comm));
212212
EXPECT_EQ(dxl->length_of_indirect_data_write(), 8);
213-
EXPECT_EQ(dxl->next_indirect_addr_write(), 594);
214-
EXPECT_EQ(dxl->indirect_addr_of_goal_velocity(), 638);
213+
EXPECT_EQ(dxl->next_indirect_addr_write(), 624);
214+
EXPECT_EQ(dxl->indirect_addr_of_goal_velocity(), 653);
215215

216216
EXPECT_FALSE(dxl->auto_set_indirect_address_of_goal_current(comm));
217217
EXPECT_EQ(dxl->length_of_indirect_data_write(), 10);
218-
EXPECT_EQ(dxl->next_indirect_addr_write(), 598);
219-
EXPECT_EQ(dxl->indirect_addr_of_goal_current(), 642);
218+
EXPECT_EQ(dxl->next_indirect_addr_write(), 628);
219+
EXPECT_EQ(dxl->indirect_addr_of_goal_current(), 657);
220220
}
221221

222222
TEST_F(XMTestFixture, extract_present_position_from_sync_read) {

0 commit comments

Comments
 (0)