Сигнал sigfpe при использовании sin/cos в c ++C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Сигнал sigfpe при использовании sin/cos в c ++

Сообщение Anonymous »

Я трахаю сеть, чтобы контролировать своего робота. Но я встречаю эту проблему случайным образом . И я понятия не имею.
Во время учебного процесса мои сценарии 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>
Большое спасибо, если вы можете дать несколько советов !!>

Подробнее здесь: https://stackoverflow.com/questions/794 ... n-cos-in-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Сигнал sigfpe при использовании sin/cos в c ++
    Anonymous » » в форуме C++
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Сигнал sigfpe при использовании sin/cos в c ++
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Сигнал sigfpe при использовании sin/cos в c ++
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • При интегрировании sin и cos с использованием Sympy результат должен быть таким же, но интегрирование cos дает значение
    Гость » » в форуме Python
    0 Ответы
    65 Просмотры
    Последнее сообщение Гость
  • Почему скорость загрузки в облачном хранилище объектов Tencent (COS) при использовании API в cos-cpp-sdk-v5 очень низкая
    Anonymous » » в форуме C++
    0 Ответы
    78 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»