Я трахаю сеть, чтобы контролировать своего робота. Но я встречаю эту проблему случайным образом . И я понятия не имею.
Во время учебного процесса мои сценарии Python будут вызывать код C ++ от Pybind, а в части C ++ у меня есть функциональная ротация. p>
Eigen::Matrix rotationMatrixBaseToOriginInside(const Eigen::Matrix& eulerAnglesXYZ) {
Eigen::Matrix o_R_b;
// auxiliary variables
std::array v{};
v[0] = std::cos(eulerAnglesXYZ[1]);
v[1] = std::cos(eulerAnglesXYZ[2]);
o_R_b(0) = v[0] * v[1];
v[2] = std::sin(eulerAnglesXYZ[0]);
v[3] = -v[2];
o_R_b(6) = std::sin(eulerAnglesXYZ[1]);
v[4] = -o_R_b(6);
v[5] = v[3] * v[4];
v[6] = std::cos(eulerAnglesXYZ[0]);
v[7] = std::sin(eulerAnglesXYZ[2]);
o_R_b(1) = v[5] * v[1] + v[6] * v[7];
v[4] = v[6] * v[4];
o_R_b(2) = v[4] * v[1] + v[2] * v[7];
v[7] = -v[7];
o_R_b(3) = v[0] * v[7];
o_R_b(4) = v[5] * v[7] + v[6] * v[1];
o_R_b(5) = v[4] * v[7] + v[2] * v[1];
o_R_b(7) = v[3] * v[0];
o_R_b(8) = v[6] * v[0];
return o_R_b;
}
and i call this function by
const matrix3_t w_R_b = rotationMatrixBaseToOriginInside(eulerXYZ);
< /code>
Однако, когда запускается код, иногда он случайно умер. и я получаю ядро.Program terminated with signal SIGFPE, Arithmetic exception.
#0 0x00007fe977dd9e29 in do_cos (dx=0, x=) at ../sysdeps/ieee754/dbl-64/s_sin.c:108
108 ../sysdeps/ieee754/dbl-64/s_sin.c: No such file or directory.
[Current thread is 1 (Thread 0x7fe313fff700 (LWP 3672941))]
(gdb) bt
#0 0x00007fe977dd9e29 in do_cos (dx=0, x=) at ../sysdeps/ieee754/dbl-64/s_sin.c:108
#1 __cos_fma (x=) at ../sysdeps/ieee754/dbl-64/s_sin.c:286
#2 0x00007fe906785be4 in humanoid_interface::rotationMatrixBaseToOriginInside (eulerAnglesXYZ=...) at /usr/include/eigen3/Eigen/src/Core/util/Meta.h:300
< /code>
и информация локалей < /p>
(gdb) info locals
u =
xx =
s =
sn =
ssn =
c =
cs =
ccs =
cor = 0.023701645488744413
(gdb) up 1
#1 __cos_fma (x=) at ../sysdeps/ieee754/dbl-64/s_sin.c:286
286 in ../sysdeps/ieee754/dbl-64/s_sin.c
(gdb) info locals
y =
a = 120.00000000011512
da = 6.9472020217249313e-310
u =
k =
m =
n =
retval = 0
ctx = {env = {__control_word = , __glibc_reserved1 = , __status_word = , __glibc_reserved2 = , __tags = , __glibc_reserved3 = ,
__eip = , __cs_selector = , __opcode = , __glibc_reserved4 = , __data_offset = , __data_selector = ,
__glibc_reserved5 = , __mxcsr = 8101}, updated_status = }
(gdb) up 1
#2 0x00007fe906785be4 in humanoid_interface::rotationMatrixBaseToOriginInside (eulerAnglesXYZ=...) at /usr/include/eigen3/Eigen/src/Core/util/Meta.h:300
300 EIGEN_DEVICE_FUNC ~noncopyable() {}
(gdb) info locals
o_R_b = { = { = { = { = { = { = { = {}, }, }, }, }, }, m_storage = {m_data = {array = {0.99312891205556586, 6.9485744768938875e-310, 0, 0,
0, 0, -0.035153291205020566, 0, 0}}}}, }
v = {_M_elems = {0.99938193205473502, 0.9937431128194274, 0.023699426413416234, -0.023699426413416234, , , , }}
(gdb) p eulerAnglesXYZ
$1 = (const
Eigen::Matrix &) @0x7fe313ffe110: { = { = { = { = { = { = { = {}, }, }, }, }, }, m_storage = {m_data = {
array = {0.023701645488744413, -0.035160535370161498, 0.11192339221079543}}}}, }
кажется, что Euleranglesxyz не NAN или Inf. Так почему я получаю эту ошибку?
и почему она очень случайная? < /P>
Большое спасибо, если вы можете дать несколько советов !!>
Я трахаю сеть, чтобы контролировать своего робота. Но я встречаю эту проблему [b] случайным образом [/b]. И я понятия не имею. Во время учебного процесса мои сценарии Python будут вызывать код C ++ от Pybind, а в части C ++ у меня есть функциональная ротация. p> [code]Eigen::Matrix rotationMatrixBaseToOriginInside(const Eigen::Matrix& eulerAnglesXYZ) { Eigen::Matrix o_R_b;
// auxiliary variables std::array v{};
v[0] = std::cos(eulerAnglesXYZ[1]); v[1] = std::cos(eulerAnglesXYZ[2]); o_R_b(0) = v[0] * v[1]; v[2] = std::sin(eulerAnglesXYZ[0]); v[3] = -v[2]; o_R_b(6) = std::sin(eulerAnglesXYZ[1]); v[4] = -o_R_b(6); v[5] = v[3] * v[4]; v[6] = std::cos(eulerAnglesXYZ[0]); v[7] = std::sin(eulerAnglesXYZ[2]); o_R_b(1) = v[5] * v[1] + v[6] * v[7]; v[4] = v[6] * v[4]; o_R_b(2) = v[4] * v[1] + v[2] * v[7]; v[7] = -v[7]; o_R_b(3) = v[0] * v[7]; o_R_b(4) = v[5] * v[7] + v[6] * v[1]; o_R_b(5) = v[4] * v[7] + v[2] * v[1]; o_R_b(7) = v[3] * v[0]; o_R_b(8) = v[6] * v[0]; return o_R_b; } and i call this function by const matrix3_t w_R_b = rotationMatrixBaseToOriginInside(eulerXYZ); < /code> Однако, когда запускается код, иногда он случайно умер. и я получаю ядро.Program terminated with signal SIGFPE, Arithmetic exception. #0 0x00007fe977dd9e29 in do_cos (dx=0, x=) at ../sysdeps/ieee754/dbl-64/s_sin.c:108 108 ../sysdeps/ieee754/dbl-64/s_sin.c: No such file or directory. [Current thread is 1 (Thread 0x7fe313fff700 (LWP 3672941))] (gdb) bt #0 0x00007fe977dd9e29 in do_cos (dx=0, x=) at ../sysdeps/ieee754/dbl-64/s_sin.c:108 #1 __cos_fma (x=) at ../sysdeps/ieee754/dbl-64/s_sin.c:286 #2 0x00007fe906785be4 in humanoid_interface::rotationMatrixBaseToOriginInside (eulerAnglesXYZ=...) at /usr/include/eigen3/Eigen/src/Core/util/Meta.h:300 < /code> и информация локалей < /p> (gdb) info locals u = xx = s = sn = ssn = c = cs = ccs = cor = 0.023701645488744413 (gdb) up 1 #1 __cos_fma (x=) at ../sysdeps/ieee754/dbl-64/s_sin.c:286 286 in ../sysdeps/ieee754/dbl-64/s_sin.c (gdb) info locals y = a = 120.00000000011512 da = 6.9472020217249313e-310 u = k = m = n = retval = 0 ctx = {env = {__control_word = , __glibc_reserved1 = , __status_word = , __glibc_reserved2 = , __tags = , __glibc_reserved3 = , __eip = , __cs_selector = , __opcode = , __glibc_reserved4 = , __data_offset = , __data_selector = , __glibc_reserved5 = , __mxcsr = 8101}, updated_status = } (gdb) up 1 #2 0x00007fe906785be4 in humanoid_interface::rotationMatrixBaseToOriginInside (eulerAnglesXYZ=...) at /usr/include/eigen3/Eigen/src/Core/util/Meta.h:300 300 EIGEN_DEVICE_FUNC ~noncopyable() {} (gdb) info locals o_R_b = { = { = { = { = { = { = { = {}, }, }, }, }, }, m_storage = {m_data = {array = {0.99312891205556586, 6.9485744768938875e-310, 0, 0, 0, 0, -0.035153291205020566, 0, 0}}}}, } v = {_M_elems = {0.99938193205473502, 0.9937431128194274, 0.023699426413416234, -0.023699426413416234, , , , }} (gdb) p eulerAnglesXYZ $1 = (const Eigen::Matrix &) @0x7fe313ffe110: { = { = { = { = { = { = { = {}, }, }, }, }, }, m_storage = {m_data = { array = {0.023701645488744413, -0.035160535370161498, 0.11192339221079543}}}}, } [/code] кажется, что Euleranglesxyz не NAN или Inf. Так почему я получаю эту ошибку? и почему она очень случайная? < /P> Большое спасибо, если вы можете дать несколько советов !!>
Я трахаю сеть, чтобы контролировать своего робота. Но я встречаю эту проблему случайным образом . И я понятия не имею.
Во время учебного процесса мои сценарии Python будут вызывать код C ++ от Pybind, а в части C ++ у меня есть функциональная...
Я трахаю сеть, чтобы контролировать своего робота. Но я встречаю эту проблему случайным образом . И я понятия не имею.
Во время учебного процесса мои сценарии Python будут вызывать код C ++ от Pybind, а в части C ++ у меня есть функциональная...
Я трахаю сеть, чтобы контролировать своего робота. Но я встречаю эту проблему случайным образом . И я понятия не имею.
Во время учебного процесса мои сценарии Python будут вызывать код C ++ от Pybind, а в части C ++ у меня есть функциональная...
При интегрировании sin и cos с использованием Sympy результат должен быть таким же, но интегрирование cos дает значение порядка -16, которое при округлении по существу равно 0. Есть ли причина, почему он дает такое низкое значение для cos и прямой 0...