我无法将几何点的值分配给变量
I can't assign the value of a geometry point to a variable
我试图将一个几何点的值(它有 x、y、z。它们都是 float64。如果你想检查它:http://docs.ros.org/en/noetic/api/geometry_msgs/html/msg/Point.html)到一个 float64 变量。但是当我编译代码时出现下一个错误:
error: request for member ‘data’ in ‘msg.nav_msgs::Odometry_std::allocator<void >::pose.geometry_msgs::PoseWithCovariance_std::allocator<void >::pose.geometry_msgs::Pose_std::allocator<void >::position.geometry_msgs::Point_std::allocator<void >::y’, which is of non-class type ‘const _y_type {aka const double}’
y = (msg.pose.pose.position.y).data;
代码如下:
#include <geometry_msgs/Point.h>
#include <std_msgs/Float64.h>
//Creo la variable con la informacion a publicar
std_msgs::Float64 y;
void controlMensajeRecibido(const geometry_msgs::Point& msg)
{
y = msg.y;
}
int main(int argc, char **argv)
{
//inicio comunicacion con sistema ROS
ros::init(argc, argv, "coordenadas");
ros::NodeHandle nh;
//Me suscribo al t
ros::Subscriber sub = nh.subscribe("/ardrone/odometry/pose/pose/position", 1000, &controlMensajeRecibido);
//creamos un objeto publicador
ros::Publisher pub =nh.advertise<std_msgs::Float64>("/pid_y/state", 1000);
pub.publish(y); //publico
//cedemos control a ROS
ros::spin();
}
我不知道为什么如果变量类型正确它不让我这样做。
如果有人可以帮助我,那将是惊人的。
谢谢你
std_msgs::Float64
有一个类型为 float64
的字段“data
”。 std_msgs::Float64
的类型不等于 geometry_msgs::Point
.
中类型 float64
的字段“y
”
void controlMensajeRecibido(const geometry_msgs::Point& msg)
{
y.data = msg.y;
}
我试图将一个几何点的值(它有 x、y、z。它们都是 float64。如果你想检查它:http://docs.ros.org/en/noetic/api/geometry_msgs/html/msg/Point.html)到一个 float64 变量。但是当我编译代码时出现下一个错误:
error: request for member ‘data’ in ‘msg.nav_msgs::Odometry_std::allocator<void >::pose.geometry_msgs::PoseWithCovariance_std::allocator<void >::pose.geometry_msgs::Pose_std::allocator<void >::position.geometry_msgs::Point_std::allocator<void >::y’, which is of non-class type ‘const _y_type {aka const double}’
y = (msg.pose.pose.position.y).data;
代码如下:
#include <geometry_msgs/Point.h>
#include <std_msgs/Float64.h>
//Creo la variable con la informacion a publicar
std_msgs::Float64 y;
void controlMensajeRecibido(const geometry_msgs::Point& msg)
{
y = msg.y;
}
int main(int argc, char **argv)
{
//inicio comunicacion con sistema ROS
ros::init(argc, argv, "coordenadas");
ros::NodeHandle nh;
//Me suscribo al t
ros::Subscriber sub = nh.subscribe("/ardrone/odometry/pose/pose/position", 1000, &controlMensajeRecibido);
//creamos un objeto publicador
ros::Publisher pub =nh.advertise<std_msgs::Float64>("/pid_y/state", 1000);
pub.publish(y); //publico
//cedemos control a ROS
ros::spin();
}
我不知道为什么如果变量类型正确它不让我这样做。 如果有人可以帮助我,那将是惊人的。 谢谢你
std_msgs::Float64
有一个类型为 float64
的字段“data
”。 std_msgs::Float64
的类型不等于 geometry_msgs::Point
.
float64
的字段“y
”
void controlMensajeRecibido(const geometry_msgs::Point& msg)
{
y.data = msg.y;
}