私は 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;
}
そして今、次のエラーが発生します。
- 「__s_getDataType」は「RandomPositionGenerator::Position」のメンバーではありません
- 「__s_getMD5Sum」は「RandomPositionGenerator::Position」のメンバーではありません
- 「const class RandomPositionGenerator::Position」には「__getDataType」という名前のメンバーがありません
およびいくつかの同様のエラー...私を修正してください...どこが間違っているのか、またはこの小さなコードで正しいことをしたかどうかはわかりません!