Skip to content

Commit ba7957c

Browse files
committed
refactor: Update Dynamixel value handling for consistency and clarity
- Changed goal_velocity type from int16_t to int32_t for better precision. - Replaced instances of ID with comm_id for improved readability and consistency across the codebase. - Added a check to return early if the write_data_list_ is empty in SetDxlValueToBulkWrite method.
1 parent d157ee4 commit ba7957c

File tree

1 file changed

+25
-21
lines changed

1 file changed

+25
-21
lines changed

src/dynamixel/dynamixel.cpp

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1807,7 +1807,7 @@ DxlError Dynamixel::SetDxlValueToSyncWrite()
18071807
param_write_value[added_byte + 2] = DXL_LOBYTE(DXL_HIWORD(goal_position));
18081808
param_write_value[added_byte + 3] = DXL_HIBYTE(DXL_HIWORD(goal_position));
18091809
} else if (indirect_info_write_[comm_id].item_name.at(item_index) == "Goal Velocity") {
1810-
int16_t goal_velocity = dxl_info_.ConvertVelocityRPSToValueRPM(data);
1810+
int32_t goal_velocity = dxl_info_.ConvertVelocityRPSToValueRPM(data);
18111811
param_write_value[added_byte + 0] = DXL_LOBYTE(DXL_LOWORD(goal_velocity));
18121812
param_write_value[added_byte + 1] = DXL_HIBYTE(DXL_LOWORD(goal_velocity));
18131813
param_write_value[added_byte + 2] = DXL_LOBYTE(DXL_HIWORD(goal_velocity));
@@ -1975,19 +1975,22 @@ DxlError Dynamixel::SetBulkWriteHandler(std::vector<uint8_t> id_arr)
19751975

19761976
DxlError Dynamixel::SetDxlValueToBulkWrite()
19771977
{
1978+
if (write_data_list_.size() == 0) {
1979+
return DxlError::OK;
1980+
}
1981+
19781982
for (auto it_write_data : write_data_list_) {
1979-
uint8_t ID = it_write_data.comm_id;
1983+
uint8_t comm_id = it_write_data.comm_id;
19801984
uint8_t * param_write_value;
19811985
uint8_t added_byte = 0;
19821986

19831987
// Check if this is a direct write
1984-
if (direct_info_write_.find(ID) != direct_info_write_.end()) {
1985-
param_write_value = new uint8_t[direct_info_write_[ID].size];
1988+
if (direct_info_write_.find(comm_id) != direct_info_write_.end()) {
1989+
param_write_value = new uint8_t[direct_info_write_[comm_id].size];
19861990

1987-
for (uint16_t item_index = 0; item_index < direct_info_write_[ID].cnt; item_index++) {
1991+
for (uint16_t item_index = 0; item_index < direct_info_write_[comm_id].cnt; item_index++) {
19881992
double data = *it_write_data.item_data_ptr_vec.at(item_index);
1989-
uint8_t size = direct_info_write_[ID].item_size.at(item_index);
1990-
1993+
uint8_t size = direct_info_write_[comm_id].item_size.at(item_index);
19911994
if (size == 4) {
19921995
int32_t value = static_cast<int32_t>(data);
19931996
param_write_value[added_byte + 0] = DXL_LOBYTE(DXL_LOWORD(value));
@@ -2005,47 +2008,48 @@ DxlError Dynamixel::SetDxlValueToBulkWrite()
20052008
}
20062009

20072010
if (group_bulk_write_->addParam(
2008-
ID,
2009-
direct_info_write_[ID].indirect_data_addr,
2010-
direct_info_write_[ID].size,
2011+
comm_id,
2012+
direct_info_write_[comm_id].indirect_data_addr,
2013+
direct_info_write_[comm_id].size,
20112014
param_write_value) != true)
20122015
{
2013-
fprintf(stderr, "[ID:%03d] groupBulkWrite addparam failed\n", ID);
2016+
fprintf(stderr, "[ID:%03d] groupBulkWrite addparam failed\n", comm_id);
20142017
return DxlError::BULK_WRITE_FAIL;
20152018
}
20162019
} else {
20172020
// Handle indirect write
2018-
param_write_value = new uint8_t[indirect_info_write_[ID].size];
2021+
param_write_value = new uint8_t[indirect_info_write_[comm_id].size];
20192022

2020-
for (uint16_t item_index = 0; item_index < indirect_info_write_[ID].cnt; item_index++) {
2023+
for (uint16_t item_index = 0; item_index < indirect_info_write_[comm_id].cnt; item_index++) {
20212024
double data = *it_write_data.item_data_ptr_vec.at(item_index);
2022-
if (indirect_info_write_[ID].item_name.at(item_index) == "Goal Position") {
2025+
uint8_t ID = it_write_data.id_arr.at(item_index);
2026+
if (indirect_info_write_[comm_id].item_name.at(item_index) == "Goal Position") {
20232027
int32_t goal_position = dxl_info_.ConvertRadianToValue(ID, data);
20242028
param_write_value[added_byte + 0] = DXL_LOBYTE(DXL_LOWORD(goal_position));
20252029
param_write_value[added_byte + 1] = DXL_HIBYTE(DXL_LOWORD(goal_position));
20262030
param_write_value[added_byte + 2] = DXL_LOBYTE(DXL_HIWORD(goal_position));
20272031
param_write_value[added_byte + 3] = DXL_HIBYTE(DXL_HIWORD(goal_position));
2028-
} else if (indirect_info_write_[ID].item_name.at(item_index) == "Goal Velocity") {
2032+
} else if (indirect_info_write_[comm_id].item_name.at(item_index) == "Goal Velocity") {
20292033
int32_t goal_velocity = dxl_info_.ConvertVelocityRPSToValueRPM(data);
20302034
param_write_value[added_byte + 0] = DXL_LOBYTE(DXL_LOWORD(goal_velocity));
20312035
param_write_value[added_byte + 1] = DXL_HIBYTE(DXL_LOWORD(goal_velocity));
20322036
param_write_value[added_byte + 2] = DXL_LOBYTE(DXL_HIWORD(goal_velocity));
20332037
param_write_value[added_byte + 3] = DXL_HIBYTE(DXL_HIWORD(goal_velocity));
2034-
} else if (indirect_info_write_[ID].item_name.at(item_index) == "Goal Current") {
2038+
} else if (indirect_info_write_[comm_id].item_name.at(item_index) == "Goal Current") {
20352039
int16_t goal_current = dxl_info_.ConvertEffortToCurrent(ID, data);
20362040
param_write_value[added_byte + 0] = DXL_LOBYTE(goal_current);
20372041
param_write_value[added_byte + 1] = DXL_HIBYTE(goal_current);
20382042
}
2039-
added_byte += indirect_info_write_[ID].item_size.at(item_index);
2043+
added_byte += indirect_info_write_[comm_id].item_size.at(item_index);
20402044
}
20412045

20422046
if (group_bulk_write_->addParam(
2043-
ID,
2044-
indirect_info_write_[ID].indirect_data_addr,
2045-
indirect_info_write_[ID].size,
2047+
comm_id,
2048+
indirect_info_write_[comm_id].indirect_data_addr,
2049+
indirect_info_write_[comm_id].size,
20462050
param_write_value) != true)
20472051
{
2048-
fprintf(stderr, "[ID:%03d] groupBulkWrite addparam failed\n", ID);
2052+
fprintf(stderr, "[ID:%03d] groupBulkWrite addparam failed\n", comm_id);
20492053
return DxlError::BULK_WRITE_FAIL;
20502054
}
20512055
}

0 commit comments

Comments
 (0)