2017-02-13 14 views
0

Я пытаюсь отправить ROS std_msgsFloat32 в float64, однако он не будет автоматически опущен. Как вы можете безопасно преобразовать std_msgs :: Float64 в std_msgs :: Float32?Float64 to Float32

Код с проблемой понижающего приведения:

//currentLocation.theta is a Float64, thetaPublish accepts Float32 
thetaPublish.publish(currentLocation.theta); 

ответ

1

Вы должны быть в состоянии сделать это:

std_msgs::Float32 theta32; 
theta32.data = static_cast<float>(theta.data); 
thetaPublish.publish(theta32); 

Вам просто нужно явно скопировать двойную data к поплавку.

+0

Спасибо, я проверил его сейчас! <3 –

+0

недействительный литой тип 'std_msgs :: Float64' для ввода 'float' theta32.data = (float) theta.data –

+0

Хмм, работает для меня с литой или без нее. Я использую Indigo в Linux, если это фактор. Попробуйте 'static_cast (theta.data)' на всякий случай, если есть нечетный макрос. –