#include <iostream>
#include <ros/ros.h>
#include <std_msgs/Bool.h>
#include <std_msgs/Int32.h>
#include <std_msgs/String.h>
std::string syntax;
ros::Publisher int_pub;
int syntax_num = 0;
void string_callback(const std_msgs::String::ConstPtr &msg);
int main(int argc, char** argv)
{
ros::init(argc, argv, "one");
ros::NodeHandle nh;
ros::Publisher bool_pub = nh.advertise<std_msgs::Bool>("/flag", 1);
int_pub = nh.advertise<std_msgs::Int32>("/syntax_num", 1);
ros::Subscriber string_sub;
string_sub = nh.subscribe<std_msgs::String>("/syntax", 1, &string_callback);
while(ros::ok())
{
ROS_INFO("Plaese Input Character");
std_msgs::Bool bool_msg;
char start;
std::cin >> start;
if(start == 's')
{
bool_msg.data = true;
bool_pub.publish(bool_msg);
break;
}
else
{
ROS_ERROR("Error Syntax : %c , Please Retry", start);
bool_msg.data = false;
bool_pub.publish(bool_msg);
continue;
}
}
ros::spin();
return 0;
}
void string_callback(const std_msgs::String::ConstPtr &msg)
{
syntax = msg->data;
ROS_INFO("Get String Message : %s", syntax.c_str());
syntax_num = syntax.length();
std_msgs::Int32 int_msg;
int_msg.data = syntax_num;
int_pub.publish(int_msg);
}
이게 1번
#include <iostream>
#include <ros/ros.h>
#include <std_msgs/Bool.h>
#include <std_msgs/Int32.h>
#include <std_msgs/String.h>
bool flag = false;
int syntax_num = 0;
ros::Publisher string_pub;
std::string syntax = "";
void bool_callback(const std_msgs::Bool::ConstPtr &msg);
void int_callback(const std_msgs::Int32::ConstPtr &msg);
int main(int argc, char** argv)
{
ros::init(argc, argv, "two");
ros::NodeHandle nh;
ROS_INFO("sequence start");
string_pub = nh.advertise<std_msgs::String>("/syntax", 1);
ros::Subscriber bool_sub;
ros::Subscriber int_sub;
bool_sub = nh.subscribe<std_msgs::Bool>("/flag", 1, &bool_callback);
int_sub = nh.subscribe<std_msgs::Int32>("/syntax_num", 1, &int_callback);
ros::spin();
return 0;
}
void bool_callback(const std_msgs::Bool::ConstPtr &msg)
{
flag = msg->data;
if(flag)
{
ROS_INFO("flag is %s, please input syntax string ", flag ? "true" : "false");
std::cin >> syntax;
std_msgs::String string_msg;
string_msg.data = syntax;
string_pub.publish(string_msg);
}
}
void int_callback(const std_msgs::Int32::ConstPtr &msg)
{
syntax_num = msg->data;
ROS_INFO("syntax %s's length is %d", syntax.c_str(), syntax_num);
}
이게 2번
수업 첫날 과제인데 난 아예 프로그래밍 노베이스라서 단 하나도 아무것도 못 알아듣겠음...
노베인데 저런 수업을 듣냐? 그냥 포기해라 그게 빠르다
노베가 첫날에 저걸 배운다고?