Я новичок в ROS ... и пытаюсь создать простой генератор случайных чисел, который будет публиковать случайно генерируемые значения. Для этого я создал класс Должность:Ошибки при построении моего узла ROS
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;
}
И теперь я получаю следующие ошибки:
- «__s_getDataType» не член «RandomPositionGenerator :: Position»
- '__s_getMD5Sum' не является членом 'RandomPositionGenerator :: Position'
- «Const класс RandomPositionGenerator :: Положение» не имеет ни одного члена с именем «__getDataType»
и еще некоторые подобные ошибки ... Пожалуйста, поправьте меня ... Я не знаю, где я буду неправильно, или если это то, что я сделал прямо в этом маленьком коде!
Кажется, что-то вроде проблемы сборки ... информации здесь недостаточно, чтобы понять, что пошло не так. (Вы не показывали строки кода, которые генерировали эти сообщения об ошибках ... которые могли бы помочь.) Но '#include" Position.cpp "выглядит как проблема - это очень необычно для исходного кода' # include' (.cpp в отличие от .h) файлов; вы должны скомпилировать их отдельно и объединить их с помощью компоновщика. Я не знаком с ROS API, но мне интересно, пытаетесь ли вы переопределить внутренний класс 'Position', который реализует отсутствующие методы или если вы должны наследовать их откуда-то? –
Я думаю, что ROS-msgs не позволяют моей пользовательской позиции класса быть действительным msg_type bcz, не хватает этих членов .... но я не знаю, где их найти или как реализовать их в моем классе. Позиция – Preity