47 const double odom_roll,
48 const double odom_pitch,
49 const double odom_yaw,
50 const double base_vel_x,
51 const double base_vel_y,
52 const double base_vel_z,
53 const double base_vel_roll,
54 const double base_vel_pitch,
55 const double base_vel_yaw,
56 const double odom_vel_x,
57 const double odom_vel_y,
58 const double odom_vel_z,
59 const double odom_vel_roll,
60 const double odom_vel_pitch,
61 const double odom_vel_yaw) :
67 odom_pitch(odom_pitch),
69 base_vel_x(base_vel_x),
70 base_vel_y(base_vel_y),
71 base_vel_z(base_vel_z),
72 base_vel_roll(base_vel_roll),
73 base_vel_pitch(base_vel_pitch),
74 base_vel_yaw(base_vel_yaw),
75 odom_vel_x(odom_vel_x),
76 odom_vel_y(odom_vel_y),
77 odom_vel_z(odom_vel_z),
78 odom_vel_roll(odom_vel_roll),
79 odom_vel_pitch(odom_vel_pitch),
80 odom_vel_yaw(odom_vel_yaw)
87 if (!read_odom_x(reader)) {
90 if (!read_odom_y(reader)) {
93 if (!read_odom_z(reader)) {
96 if (!read_odom_roll(reader)) {
99 if (!read_odom_pitch(reader)) {
102 if (!read_odom_yaw(reader)) {
105 if (!read_base_vel_x(reader)) {
108 if (!read_base_vel_y(reader)) {
111 if (!read_base_vel_z(reader)) {
114 if (!read_base_vel_roll(reader)) {
117 if (!read_base_vel_pitch(reader)) {
120 if (!read_base_vel_yaw(reader)) {
123 if (!read_odom_vel_x(reader)) {
126 if (!read_odom_vel_y(reader)) {
129 if (!read_odom_vel_z(reader)) {
132 if (!read_odom_vel_roll(reader)) {
135 if (!read_odom_vel_pitch(reader)) {
138 if (!read_odom_vel_yaw(reader)) {
157 if (!write_odom_x(writer)) {
160 if (!write_odom_y(writer)) {
163 if (!write_odom_z(writer)) {
166 if (!write_odom_roll(writer)) {
169 if (!write_odom_pitch(writer)) {
172 if (!write_odom_yaw(writer)) {
175 if (!write_base_vel_x(writer)) {
178 if (!write_base_vel_y(writer)) {
181 if (!write_base_vel_z(writer)) {
184 if (!write_base_vel_roll(writer)) {
187 if (!write_base_vel_pitch(writer)) {
190 if (!write_base_vel_yaw(writer)) {
193 if (!write_odom_vel_x(writer)) {
196 if (!write_odom_vel_y(writer)) {
199 if (!write_odom_vel_z(writer)) {
202 if (!write_odom_vel_roll(writer)) {
205 if (!write_odom_vel_pitch(writer)) {
208 if (!write_odom_vel_yaw(writer)) {
221 return write(writer);
248 yarp().setOwner(*
this);
274 return obj !=
nullptr;
293 if (group == 0 && is_dirty) {
384 will_set_odom_roll();
386 mark_dirty_odom_roll();
394 return obj->odom_roll;
412 will_set_odom_pitch();
414 mark_dirty_odom_pitch();
416 did_set_odom_pitch();
422 return obj->odom_pitch;
442 mark_dirty_odom_yaw();
450 return obj->odom_yaw;
468 will_set_base_vel_x();
470 mark_dirty_base_vel_x();
472 did_set_base_vel_x();
478 return obj->base_vel_x;
496 will_set_base_vel_y();
498 mark_dirty_base_vel_y();
500 did_set_base_vel_y();
506 return obj->base_vel_y;
524 will_set_base_vel_z();
526 mark_dirty_base_vel_z();
528 did_set_base_vel_z();
534 return obj->base_vel_z;
552 will_set_base_vel_roll();
554 mark_dirty_base_vel_roll();
556 did_set_base_vel_roll();
562 return obj->base_vel_roll;
580 will_set_base_vel_pitch();
582 mark_dirty_base_vel_pitch();
584 did_set_base_vel_pitch();
590 return obj->base_vel_pitch;
608 will_set_base_vel_yaw();
610 mark_dirty_base_vel_yaw();
612 did_set_base_vel_yaw();
618 return obj->base_vel_yaw;
636 will_set_odom_vel_x();
638 mark_dirty_odom_vel_x();
640 did_set_odom_vel_x();
646 return obj->odom_vel_x;
664 will_set_odom_vel_y();
666 mark_dirty_odom_vel_y();
668 did_set_odom_vel_y();
674 return obj->odom_vel_y;
692 will_set_odom_vel_z();
694 mark_dirty_odom_vel_z();
696 did_set_odom_vel_z();
702 return obj->odom_vel_z;
720 will_set_odom_vel_roll();
722 mark_dirty_odom_vel_roll();
724 did_set_odom_vel_roll();
730 return obj->odom_vel_roll;
748 will_set_odom_vel_pitch();
750 mark_dirty_odom_vel_pitch();
752 did_set_odom_vel_pitch();
758 return obj->odom_vel_pitch;
776 will_set_odom_vel_yaw();
778 mark_dirty_odom_vel_yaw();
780 did_set_odom_vel_yaw();
786 return obj->odom_vel_yaw;
827 writer.
writeString(
"send: 'help' or 'patch (param1 val1) (param2 val2)'");
842 if (!writer.
writeTag(
"many", 1, 0)) {
850 if (field ==
"odom_x") {
857 if (!writer.
writeString(
"position of the robot [m], expressed in the world reference frame")) {
861 if (field ==
"odom_y") {
868 if (!writer.
writeString(
"position of the robot [m], expressed in the world reference frame")) {
872 if (field ==
"odom_z") {
879 if (!writer.
writeString(
"position of the robot [m], expressed in the world reference frame")) {
883 if (field ==
"odom_roll") {
890 if (!writer.
writeString(
"orientation the robot [deg], expressed in the world reference frame")) {
894 if (field ==
"odom_pitch") {
901 if (!writer.
writeString(
"orientation the robot [deg], expressed in the world reference frame")) {
905 if (field ==
"odom_yaw") {
912 if (!writer.
writeString(
"orientation the robot [deg], expressed in the world reference frame")) {
916 if (field ==
"base_vel_x") {
923 if (!writer.
writeString(
"velocity of the robot [m/s] expressed in the robot reference frame")) {
927 if (field ==
"base_vel_y") {
934 if (!writer.
writeString(
"velocity of the robot [m/s] expressed in the robot reference frame")) {
938 if (field ==
"base_vel_z") {
945 if (!writer.
writeString(
"velocity of the robot [m/s] expressed in the robot reference frame")) {
949 if (field ==
"base_vel_roll") {
956 if (!writer.
writeString(
"angular velocity of the robot [deg/s] expressed in the robot reference frame")) {
960 if (field ==
"base_vel_pitch") {
964 if (!writer.
writeString(
"double base_vel_pitch")) {
967 if (!writer.
writeString(
"angular velocity of the robot [deg/s] expressed in the robot reference frame")) {
971 if (field ==
"base_vel_yaw") {
978 if (!writer.
writeString(
"angular velocity of the robot [deg/s] expressed in the robot reference frame")) {
982 if (field ==
"odom_vel_x") {
989 if (!writer.
writeString(
"velocity of the robot [m/s] expressed in the world reference frame")) {
993 if (field ==
"odom_vel_y") {
1000 if (!writer.
writeString(
"velocity of the robot [m/s] expressed in the world reference frame")) {
1004 if (field ==
"odom_vel_z") {
1011 if (!writer.
writeString(
"velocity of the robot [m/s] expressed in the world reference frame")) {
1015 if (field ==
"odom_vel_roll") {
1019 if (!writer.
writeString(
"double odom_vel_roll")) {
1022 if (!writer.
writeString(
"angular velocity of the robot [deg/s] expressed in the world reference frame")) {
1026 if (field ==
"odom_vel_pitch") {
1030 if (!writer.
writeString(
"double odom_vel_pitch")) {
1033 if (!writer.
writeString(
"angular velocity of the robot [deg/s] expressed in the world reference frame")) {
1037 if (field ==
"odom_vel_yaw") {
1044 if (!writer.
writeString(
"angular velocity of the robot [deg/s] expressed in the world reference frame")) {
1074 bool have_act =
false;
1075 if (tag !=
"patch") {
1076 if (((len - 1) % 2) != 0) {
1079 len = 1 + ((len - 1) / 2);
1083 for (
int i = 1; i < len; ++i) {
1097 if (key ==
"odom_x") {
1099 if (!obj->nested_read_odom_x(reader)) {
1103 }
else if (key ==
"odom_y") {
1105 if (!obj->nested_read_odom_y(reader)) {
1109 }
else if (key ==
"odom_z") {
1111 if (!obj->nested_read_odom_z(reader)) {
1115 }
else if (key ==
"odom_roll") {
1116 will_set_odom_roll();
1117 if (!obj->nested_read_odom_roll(reader)) {
1120 did_set_odom_roll();
1121 }
else if (key ==
"odom_pitch") {
1122 will_set_odom_pitch();
1123 if (!obj->nested_read_odom_pitch(reader)) {
1126 did_set_odom_pitch();
1127 }
else if (key ==
"odom_yaw") {
1128 will_set_odom_yaw();
1129 if (!obj->nested_read_odom_yaw(reader)) {
1133 }
else if (key ==
"base_vel_x") {
1134 will_set_base_vel_x();
1135 if (!obj->nested_read_base_vel_x(reader)) {
1138 did_set_base_vel_x();
1139 }
else if (key ==
"base_vel_y") {
1140 will_set_base_vel_y();
1141 if (!obj->nested_read_base_vel_y(reader)) {
1144 did_set_base_vel_y();
1145 }
else if (key ==
"base_vel_z") {
1146 will_set_base_vel_z();
1147 if (!obj->nested_read_base_vel_z(reader)) {
1150 did_set_base_vel_z();
1151 }
else if (key ==
"base_vel_roll") {
1152 will_set_base_vel_roll();
1153 if (!obj->nested_read_base_vel_roll(reader)) {
1156 did_set_base_vel_roll();
1157 }
else if (key ==
"base_vel_pitch") {
1158 will_set_base_vel_pitch();
1159 if (!obj->nested_read_base_vel_pitch(reader)) {
1162 did_set_base_vel_pitch();
1163 }
else if (key ==
"base_vel_yaw") {
1164 will_set_base_vel_yaw();
1165 if (!obj->nested_read_base_vel_yaw(reader)) {
1168 did_set_base_vel_yaw();
1169 }
else if (key ==
"odom_vel_x") {
1170 will_set_odom_vel_x();
1171 if (!obj->nested_read_odom_vel_x(reader)) {
1174 did_set_odom_vel_x();
1175 }
else if (key ==
"odom_vel_y") {
1176 will_set_odom_vel_y();
1177 if (!obj->nested_read_odom_vel_y(reader)) {
1180 did_set_odom_vel_y();
1181 }
else if (key ==
"odom_vel_z") {
1182 will_set_odom_vel_z();
1183 if (!obj->nested_read_odom_vel_z(reader)) {
1186 did_set_odom_vel_z();
1187 }
else if (key ==
"odom_vel_roll") {
1188 will_set_odom_vel_roll();
1189 if (!obj->nested_read_odom_vel_roll(reader)) {
1192 did_set_odom_vel_roll();
1193 }
else if (key ==
"odom_vel_pitch") {
1194 will_set_odom_vel_pitch();
1195 if (!obj->nested_read_odom_vel_pitch(reader)) {
1198 did_set_odom_vel_pitch();
1199 }
else if (key ==
"odom_vel_yaw") {
1200 will_set_odom_vel_yaw();
1201 if (!obj->nested_read_odom_vel_yaw(reader)) {
1204 did_set_odom_vel_yaw();
1232 if (is_dirty_odom_x) {
1242 if (!obj->nested_write_odom_x(writer)) {
1246 if (is_dirty_odom_y) {
1256 if (!obj->nested_write_odom_y(writer)) {
1260 if (is_dirty_odom_z) {
1270 if (!obj->nested_write_odom_z(writer)) {
1274 if (is_dirty_odom_roll) {
1284 if (!obj->nested_write_odom_roll(writer)) {
1288 if (is_dirty_odom_pitch) {
1298 if (!obj->nested_write_odom_pitch(writer)) {
1302 if (is_dirty_odom_yaw) {
1312 if (!obj->nested_write_odom_yaw(writer)) {
1316 if (is_dirty_base_vel_x) {
1326 if (!obj->nested_write_base_vel_x(writer)) {
1330 if (is_dirty_base_vel_y) {
1340 if (!obj->nested_write_base_vel_y(writer)) {
1344 if (is_dirty_base_vel_z) {
1354 if (!obj->nested_write_base_vel_z(writer)) {
1358 if (is_dirty_base_vel_roll) {
1368 if (!obj->nested_write_base_vel_roll(writer)) {
1372 if (is_dirty_base_vel_pitch) {
1382 if (!obj->nested_write_base_vel_pitch(writer)) {
1386 if (is_dirty_base_vel_yaw) {
1396 if (!obj->nested_write_base_vel_yaw(writer)) {
1400 if (is_dirty_odom_vel_x) {
1410 if (!obj->nested_write_odom_vel_x(writer)) {
1414 if (is_dirty_odom_vel_y) {
1424 if (!obj->nested_write_odom_vel_y(writer)) {
1428 if (is_dirty_odom_vel_z) {
1438 if (!obj->nested_write_odom_vel_z(writer)) {
1442 if (is_dirty_odom_vel_roll) {
1452 if (!obj->nested_write_odom_vel_roll(writer)) {
1456 if (is_dirty_odom_vel_pitch) {
1466 if (!obj->nested_write_odom_vel_pitch(writer)) {
1470 if (is_dirty_odom_vel_yaw) {
1480 if (!obj->nested_write_odom_vel_yaw(writer)) {
1488 void OdometryData6D::Editor::communicate()
1493 if (
yarp().canWrite()) {
1494 yarp().write(*
this);
1500 void OdometryData6D::Editor::mark_dirty()
1506 void OdometryData6D::Editor::mark_dirty_odom_x()
1508 if (is_dirty_odom_x) {
1512 is_dirty_odom_x =
true;
1517 void OdometryData6D::Editor::mark_dirty_odom_y()
1519 if (is_dirty_odom_y) {
1523 is_dirty_odom_y =
true;
1528 void OdometryData6D::Editor::mark_dirty_odom_z()
1530 if (is_dirty_odom_z) {
1534 is_dirty_odom_z =
true;
1539 void OdometryData6D::Editor::mark_dirty_odom_roll()
1541 if (is_dirty_odom_roll) {
1545 is_dirty_odom_roll =
true;
1550 void OdometryData6D::Editor::mark_dirty_odom_pitch()
1552 if (is_dirty_odom_pitch) {
1556 is_dirty_odom_pitch =
true;
1561 void OdometryData6D::Editor::mark_dirty_odom_yaw()
1563 if (is_dirty_odom_yaw) {
1567 is_dirty_odom_yaw =
true;
1572 void OdometryData6D::Editor::mark_dirty_base_vel_x()
1574 if (is_dirty_base_vel_x) {
1578 is_dirty_base_vel_x =
true;
1583 void OdometryData6D::Editor::mark_dirty_base_vel_y()
1585 if (is_dirty_base_vel_y) {
1589 is_dirty_base_vel_y =
true;
1594 void OdometryData6D::Editor::mark_dirty_base_vel_z()
1596 if (is_dirty_base_vel_z) {
1600 is_dirty_base_vel_z =
true;
1605 void OdometryData6D::Editor::mark_dirty_base_vel_roll()
1607 if (is_dirty_base_vel_roll) {
1611 is_dirty_base_vel_roll =
true;
1616 void OdometryData6D::Editor::mark_dirty_base_vel_pitch()
1618 if (is_dirty_base_vel_pitch) {
1622 is_dirty_base_vel_pitch =
true;
1627 void OdometryData6D::Editor::mark_dirty_base_vel_yaw()
1629 if (is_dirty_base_vel_yaw) {
1633 is_dirty_base_vel_yaw =
true;
1638 void OdometryData6D::Editor::mark_dirty_odom_vel_x()
1640 if (is_dirty_odom_vel_x) {
1644 is_dirty_odom_vel_x =
true;
1649 void OdometryData6D::Editor::mark_dirty_odom_vel_y()
1651 if (is_dirty_odom_vel_y) {
1655 is_dirty_odom_vel_y =
true;
1660 void OdometryData6D::Editor::mark_dirty_odom_vel_z()
1662 if (is_dirty_odom_vel_z) {
1666 is_dirty_odom_vel_z =
true;
1671 void OdometryData6D::Editor::mark_dirty_odom_vel_roll()
1673 if (is_dirty_odom_vel_roll) {
1677 is_dirty_odom_vel_roll =
true;
1682 void OdometryData6D::Editor::mark_dirty_odom_vel_pitch()
1684 if (is_dirty_odom_vel_pitch) {
1688 is_dirty_odom_vel_pitch =
true;
1693 void OdometryData6D::Editor::mark_dirty_odom_vel_yaw()
1695 if (is_dirty_odom_vel_yaw) {
1699 is_dirty_odom_vel_yaw =
true;
1704 void OdometryData6D::Editor::dirty_flags(
bool flag)
1707 is_dirty_odom_x = flag;
1708 is_dirty_odom_y = flag;
1709 is_dirty_odom_z = flag;
1710 is_dirty_odom_roll = flag;
1711 is_dirty_odom_pitch = flag;
1712 is_dirty_odom_yaw = flag;
1713 is_dirty_base_vel_x = flag;
1714 is_dirty_base_vel_y = flag;
1715 is_dirty_base_vel_z = flag;
1716 is_dirty_base_vel_roll = flag;
1717 is_dirty_base_vel_pitch = flag;
1718 is_dirty_base_vel_yaw = flag;
1719 is_dirty_odom_vel_x = flag;
1720 is_dirty_odom_vel_y = flag;
1721 is_dirty_odom_vel_z = flag;
1722 is_dirty_odom_vel_roll = flag;
1723 is_dirty_odom_vel_pitch = flag;
1724 is_dirty_odom_vel_yaw = flag;
1725 dirty_count = flag ? 18 : 0;