@@ -61,7 +61,7 @@ void RobotisController::initializeSyncWrite()
61
61
if (gazebo_mode_ == true )
62
62
return ;
63
63
64
- ROS_INFO (" FIRST BULKREAD" );
64
+ // ROS_INFO("FIRST BULKREAD");
65
65
for (auto & it : port_to_bulk_read_)
66
66
it.second ->txRxPacket ();
67
67
for (auto & it : port_to_bulk_read_)
@@ -72,15 +72,15 @@ void RobotisController::initializeSyncWrite()
72
72
{
73
73
if (++error_count > 10 )
74
74
{
75
- ROS_ERROR (" [RobotisController] bulk read fail!!" );
75
+ ROS_ERROR (" [RobotisController] first bulk read fail!!" );
76
76
exit (-1 );
77
77
}
78
78
usleep (10 * 1000 );
79
79
result = it.second ->txRxPacket ();
80
80
} while (result != COMM_SUCCESS);
81
81
}
82
82
init_pose_loaded_ = true ;
83
- ROS_INFO (" FIRST BULKREAD END" );
83
+ // ROS_INFO("FIRST BULKREAD END");
84
84
85
85
// clear syncwrite param setting
86
86
for (auto & it : port_to_sync_write_position_)
@@ -911,12 +911,14 @@ void RobotisController::process()
911
911
912
912
if (dxl->bulk_read_items_ .size () > 0 )
913
913
{
914
- uint32_t data = 0 ;
914
+ bool updated = false ;
915
+ uint32_t data = 0 ;
915
916
for (int i = 0 ; i < dxl->bulk_read_items_ .size (); i++)
916
917
{
917
918
ControlTableItem *item = dxl->bulk_read_items_ [i];
918
919
if (port_to_bulk_read_[port_name]->isAvailable (dxl->id_ , item->address_ , item->data_length_ ) == true )
919
920
{
921
+ updated = true ;
920
922
data = port_to_bulk_read_[port_name]->getData (dxl->id_ , item->address_ , item->data_length_ );
921
923
922
924
// change dxl_state
@@ -938,7 +940,8 @@ void RobotisController::process()
938
940
}
939
941
940
942
// -> update time stamp to Robot->dxls[]->dynamixel_state.update_time_stamp
941
- dxl->dxl_state_ ->update_time_stamp_ = TimeStamp (present_state.header .stamp .sec , present_state.header .stamp .nsec );
943
+ if (updated == true )
944
+ dxl->dxl_state_ ->update_time_stamp_ = TimeStamp (present_state.header .stamp .sec , present_state.header .stamp .nsec );
942
945
}
943
946
}
944
947
}
@@ -954,12 +957,14 @@ void RobotisController::process()
954
957
955
958
if (sensor->bulk_read_items_ .size () > 0 )
956
959
{
957
- uint32_t data = 0 ;
960
+ bool updated = false ;
961
+ uint32_t data = 0 ;
958
962
for (int i = 0 ; i < sensor->bulk_read_items_ .size (); i++)
959
963
{
960
964
ControlTableItem *item = sensor->bulk_read_items_ [i];
961
965
if (port_to_bulk_read_[port_name]->isAvailable (sensor->id_ , item->address_ , item->data_length_ ) == true )
962
966
{
967
+ updated = true ;
963
968
data = port_to_bulk_read_[port_name]->getData (sensor->id_ , item->address_ , item->data_length_ );
964
969
965
970
// change sensor_state
@@ -968,7 +973,8 @@ void RobotisController::process()
968
973
}
969
974
970
975
// -> update time stamp to Robot->dxls[]->dynamixel_state.update_time_stamp
971
- sensor->sensor_state_ ->update_time_stamp_ = TimeStamp (present_state.header .stamp .sec , present_state.header .stamp .nsec );
976
+ if (updated == true )
977
+ sensor->sensor_state_ ->update_time_stamp_ = TimeStamp (present_state.header .stamp .sec , present_state.header .stamp .nsec );
972
978
}
973
979
}
974
980
}
0 commit comments