26 }
else if (value >
max) {
37 if (uavcan_msg.commands.size() <= 0 || uavcan_msg.commands.size() > 15) {
41 sensor_msgs::Joy ros_msg;
43 for (
auto command : uavcan_msg.commands) {
50 if (uavcan_msg.cmd.size() <= 0 || uavcan_msg.cmd.size() > 20) {
54 sensor_msgs::Joy ros_msg;
56 for (
auto cmd : uavcan_msg.cmd) {
57 ros_msg.axes.push_back(cmd >= 0 ? (cmd / 8091.0) : (cmd / 8092.0));
66 ros_msg_.orientation.x = uavcan_msg.orientation_xyzw[0];
67 ros_msg_.orientation.y = uavcan_msg.orientation_xyzw[1];
68 ros_msg_.orientation.z = uavcan_msg.orientation_xyzw[2];
69 ros_msg_.orientation.w = uavcan_msg.orientation_xyzw[3];
71 ros_msg_.angular_velocity.x = uavcan_msg.angular_velocity[0];
72 ros_msg_.angular_velocity.y = uavcan_msg.angular_velocity[1];
73 ros_msg_.angular_velocity.z = uavcan_msg.angular_velocity[2];
75 ros_msg_.linear_acceleration.x = uavcan_msg.linear_acceleration[0];
76 ros_msg_.linear_acceleration.y = uavcan_msg.linear_acceleration[1];
77 ros_msg_.linear_acceleration.z = uavcan_msg.linear_acceleration[2];
84 constexpr
const uint8_t STATUS_FULLY_ARMED = 255;
85 ros_msg_.data = (uavcan_msg.status == STATUS_FULLY_ARMED);
91 ros_msg_.header.frame_id = std::to_string(uavcan_msg.circuit_id);
92 ros_msg_.voltage = uavcan_msg.voltage;
93 ros_msg_.current = uavcan_msg.current;
99 ros_msg_.temperature = uavcan_msg.temperature;
100 ros_msg_.voltage = uavcan_msg.voltage;
101 ros_msg_.current = uavcan_msg.current;
104 ros_msg_.count = uavcan_msg.esc_index;
132 auto now = std::chrono::system_clock::now();
133 auto duration_since_epoch = std::chrono::duration_cast<std::chrono::microseconds>(now.time_since_epoch());
134 return duration_since_epoch.count();
160 out_uavcan_msg_.accelerometer_latest[0] = in_ros_msg->linear_acceleration.x;
161 out_uavcan_msg_.accelerometer_latest[1] = in_ros_msg->linear_acceleration.y;
162 out_uavcan_msg_.accelerometer_latest[2] = in_ros_msg->linear_acceleration.z;
226 const char* ros_topic) {
227 std::unique_ptr<Converter> converter(
nullptr);
228 if (converter_name.compare(
"RawCommandUavcanToRos") == 0) {
230 }
else if (converter_name.compare(
"ArrayCommandUavcanToRos") == 0) {
232 }
else if (converter_name.compare(
"AhrsSolutionUavcanToRos") == 0) {
234 }
else if (converter_name.compare(
"ArmUavcanToRos") == 0) {
235 converter = std::unique_ptr<Converter>(
new ArmUavcanToRos(ros_node, uavcan_node, ros_topic));
236 }
else if (converter_name.compare(
"CircuitStatusUavcanToRos") == 0) {
238 }
else if (converter_name.compare(
"EscStatusUavcanToRos") == 0) {
239 converter = std::unique_ptr<Converter>(
new EscStatusUavcanToRos(ros_node, uavcan_node, ros_topic));
240 }
else if (converter_name.compare(
"BaroStaticPressureRosToUavcan") == 0) {
242 }
else if (converter_name.compare(
"BaroStaticTemperatureRosToUavcan") == 0) {
244 }
else if (converter_name.compare(
"DiffPressureRosToUavcan") == 0) {
246 }
else if (converter_name.compare(
"GpsRosToUavcan") == 0) {
247 converter = std::unique_ptr<Converter>(
new GpsRosToUavcan(ros_node, uavcan_node, ros_topic));
248 }
else if (converter_name.compare(
"ImuRosToUavcan") == 0) {
249 converter = std::unique_ptr<Converter>(
new ImuRosToUavcan(ros_node, uavcan_node, ros_topic));
250 }
else if (converter_name.compare(
"MagnetometerRosToUavcan") == 0) {
252 }
else if (converter_name.compare(
"EscStatusRosToUavcan") == 0) {
253 converter = std::unique_ptr<Converter>(
new EscStatusRosToUavcan(ros_node, uavcan_node, ros_topic));
254 }
else if (converter_name.compare(
"IceReciprocatingStatusRosToUavcan") == 0) {
256 }
else if (converter_name.compare(
"IceFuelTankStatusRosToUavcan") == 0) {
258 }
else if (converter_name.compare(
"BatteryInfoRosToUavcan") == 0) {
261 std::cout <<
"\033[1;31m" <<
"ERROR: instantiate_converter, wrong converter name" <<
"\033[0m" << std::endl;