gpt4 book ai didi

c++ - 构建我的 ROS 节点时出错

转载 作者:太空狗 更新时间:2023-10-29 21:44:32 25 4
gpt4 key购买 nike

我是 ROS 的新手...正在尝试创建一个简单的随机数生成器,它将发布随机生成的值。为此,我创建了一个 Position 类:

include "stdlib.h"

namespace RandomPositionGenerator {


class Position {
private:
double x;
double y;
double z;
public:
Position();
void setPosition();
void getPosition(double &a, double &b, double &c);
};

Position::Position(){}

void Position::setPosition() {
x = rand();
y = rand();
z = rand();
}

void Position::getPosition(double &a, double &b, double &c) {
a=x;
b=y;
c=z;

}

}

并使用此类创建我的发布者:

include "ros/ros.h"
include "std_msgs/String.h"
include "sstream"
include "Position.cpp"

/**
* This method generates position coordinates at random.
**/
int main(int argc, char **argv)
{
ros::init(argc, argv, "talker");

ros::NodeHandle n;
ros::Publisher position_pub = n.advertise<RandomPositionGenerator:: Position> ("position", 50);
ros::Rate loop_rate(10);

double pos_x=0;
double pos_y=0;
double pos_z=0;

while (ros::ok())
{
RandomPositionGenerator:: Position pos;
pos.setPosition();
pos.getPosition(pos_x,pos_y,pos_z);

ROS_INFO("The co-ordinates are : x=",pos_x);

position_pub.publish(pos);
ros::spinOnce();
loop_rate.sleep();

}


return 0;
}

现在我得到以下错误:

  1. ‘__s_getDataType’不是‘RandomPositionGenerator::Position’的成员
  2. ‘__s_getMD5Sum’不是‘RandomPositionGenerator::Position’的成员
  3. “const class RandomPositionGenerator::Position”没有名为“__getDataType”的成员

还有一些类似的错误...请纠正我...我不确定我哪里出错了,或者我是否在这一小段代码中做对了什么!

最佳答案

对于要发布/订阅的数据,您应该使用实际的 ROS 消息而不是自定义类。参见 http://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv了解如何创建可以在发布数据时使用的新消息。使用 ROS 消息还意味着现有的 ROS 工具(例如 rostopic)和整个语言绑定(bind)(例如用于 Python 的 rospy 或用于 Java 的 rosjava)将能够轻松与您的 C++ 节点进行互操作。

对于这种特殊情况,您可以简单地使用 3D 点的标准 ROS 消息,geometry_msgs/Point .您可以在 common_msgs 中找到相当全面的标准化消息列表。文档。与创建内容基本相同的自己的消息相比,使用标准化的消息有很多好处——最大的好处是 ROS 生态系统中有许多工具或其他软件,您以后可能想利用它们,这将是如果您已经在使用标准化的消息类型,那么这是一个相当轻松的过程。

如果您确实需要使用您的自定义 Position 类(无需简单地将其转换为 ROS 消息),您可以查看 roscpp serialization文档。我强烈建议不要序列化您的自定义类,而不是使用您创建的实际 ROS 消息或标准化消息。

关于c++ - 构建我的 ROS 节点时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com