48 if (!robot_hw_nh.
getParam(
"actuator_coefficient", xml_rpc_value))
49 ROS_WARN(
"No actuator coefficient specified");
53 if (!robot_hw_nh.
getParam(
"actuators", xml_rpc_value))
58 if (!robot_hw_nh.
getParam(
"imus", xml_rpc_value))
62 if (!robot_hw_nh.
getParam(
"tof_radars", xml_rpc_value))
66 if (!robot_hw_nh.
getParam(
"gpios", xml_rpc_value))
71 if (!robot_hw_nh.
getParam(
"bus", xml_rpc_value))
76 for (
int i = 0; i < xml_rpc_value.
size(); ++i)
78 std::string bus_name = xml_rpc_value[i];
79 if (bus_name.find(
"can") != std::string::npos)
93 ROS_ERROR(
"Error occurred while setting up urdf");
99 ROS_ERROR(
"Error occurred while setting up transmission");
105 ROS_ERROR(
"Error occurred while setting up joint limit");
126 for (
auto& act_data : id2act_datas.second)
130 act_data.second.halted = (time - act_data.second.stamp).toSec() > 0.1 || act_data.second.temp > 99;
132 catch (std::runtime_error& ex)
135 if (act_data.second.halted)
137 act_data.second.seq = 0;
138 act_data.second.vel = 0;
139 act_data.second.effort = 0;
140 act_data.second.calibrated =
false;
147 effort_joint_handle.setCommand(0.);
160 for (
auto& act_data : id2act_datas.second)
161 act_data.second.cmd_effort = act_data.second.exe_effort;
169 for (
auto& act_data : id2act_datas.second)
170 if (act_data.second.need_calibration && !act_data.second.calibrated)
171 act_data.second.exe_effort = act_data.second.cmd_effort;
193 rm_msgs::ActuatorState actuator_state;
195 for (
const auto& act_data : id2act_datas.second)
197 actuator_state.stamp.push_back(act_data.second.stamp);
198 actuator_state.name.push_back(act_data.second.name);
199 actuator_state.type.push_back(act_data.second.type);
200 actuator_state.bus.push_back(id2act_datas.first);
201 actuator_state.id.push_back(act_data.first);
202 actuator_state.halted.push_back(act_data.second.halted);
203 actuator_state.need_calibration.push_back(act_data.second.need_calibration);
204 actuator_state.calibrated.push_back(act_data.second.calibrated);
205 actuator_state.calibration_reading.push_back(act_data.second.calibration_reading);
206 actuator_state.position_raw.push_back(act_data.second.q_raw);
207 actuator_state.velocity_raw.push_back(act_data.second.qd_raw);
208 actuator_state.temperature.push_back(act_data.second.temp);
209 actuator_state.circle.push_back(act_data.second.q_circle);
210 actuator_state.last_position_raw.push_back(act_data.second.q_last);
211 actuator_state.frequency.push_back(act_data.second.frequency);
212 actuator_state.position.push_back(act_data.second.pos);
213 actuator_state.velocity.push_back(act_data.second.vel);
214 actuator_state.effort.push_back(act_data.second.effort);
215 actuator_state.commanded_effort.push_back(act_data.second.cmd_effort);
216 actuator_state.executed_effort.push_back(act_data.second.exe_effort);
217 actuator_state.offset.push_back(act_data.second.offset);
229 for (
const auto& it_2 : it_1.second)
231 if (it_2.second.imu_name == req.imu_name)
234 frame.can_id = (canid_t)(it_2.first + 2);
236 frame.data[0] = req.enable_trigger;
239 if (bus->bus_name_ == it_1.first)
242 res.is_success =
true;
249 res.is_success =
false;