ros入门(4)使用C++编写Subscriber订阅者节点

cd catkin_ws/src/

catkin_create_pkg atr_pkg rospy roscpp std_msgs

#include<ros/ros.h>

#include<std_msgs/String.h>

void chao_callback(std_msgs::String msg)

{

printf(msg.data.c_str());

printf("\n");

}

int main(int argc, char *argv[])

{

ros::init(argc,argv,"ma_node");

ros::NodeHandle nh;

ros::Subscriber sub=nh.subscribe("kuaishangchekaiheiqun",10,chao_callback);

while (ros::ok())

{

ros::spinOnce();

}

return 0;

}

add_executable(ma_node src/ma_node.cpp)

target_link_libraries(ma_node

${catkin_LIBRARIES}

)

roscore

rosrun ssr_pkg chao_node

rosrun atr_pkg ma_node

优化和调整

#include<ros/ros.h>

#include<std_msgs/String.h>

void chao_callback(std_msgs::String msg)

{

// printf(msg.data.c_str());

// printf("\n");

ROS_INFO(msg.data.c_str());

}

int main(int argc, char *argv[])

{

ros::init(argc,argv,"ma_node");

ros::NodeHandle nh;

ros::Subscriber sub=nh.subscribe("kuaishangchekaiheiqun",10,chao_callback);

while (ros::ok())

{

ros::spinOnce();

}

return 0;

}

        这是因为ROS_INFO()的编码方式受程序的Locale环境设置影响一般设置会让一些输出函数只支持英文字符的显示。

解决方案

将环境设置为中文环境集

setlocale(LC_ALL,"");(一般中文版ubuntu设置)

如果是英文版的ubuntu setlocale(LC_ALL,"zh_CN.UTF-8");

#include<ros/ros.h>

#include<std_msgs/String.h>

void chao_callback(std_msgs::String msg)

{

// printf(msg.data.c_str());

// printf("\n");

ROS_INFO(msg.data.c_str());

}

int main(int argc, char *argv[])

{

setlocale(LC_ALL,"");

ros::init(argc,argv,"ma_node");

ros::NodeHandle nh;

ros::Subscriber sub=nh.subscribe("kuaishangchekaiheiqun",10,chao_callback);

while (ros::ok())

{

ros::spinOnce();

}

return 0;

}

订阅yao_node

#include<ros/ros.h>

#include<std_msgs/String.h>

void chao_callback(std_msgs::String msg)

{

// printf(msg.data.c_str());

// printf("\n");

ROS_INFO(msg.data.c_str());

}

void yao_callback(std_msgs::String msg)

{

// printf(msg.data.c_str());

// printf("\n");

ROS_WARN(msg.data.c_str());

}

int main(int argc, char *argv[])

{

setlocale(LC_ALL,"");

ros::init(argc,argv,"ma_node");

ros::NodeHandle nh;

ros::Subscriber sub=nh.subscribe("kuaishangchekaiheiqun",10,chao_callback);

ros::Subscriber sub_2=nh.subscribe("gie_gie_dai_wo",10,yao_callback);

while (ros::ok())

{

ros::spinOnce();

}

return 0;

}

rqt_graph

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 22:10:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 22:10:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 22:10:04       87 阅读
  4. Python语言-面向对象

    2024-04-23 22:10:04       96 阅读

热门阅读

  1. 基于深度神经网络的图像识别技术研究

    2024-04-23 22:10:04       32 阅读
  2. vue-router学习4:嵌套路由

    2024-04-23 22:10:04       31 阅读
  3. nginx配置不同设备访问不同地址

    2024-04-23 22:10:04       37 阅读
  4. Cesium简单案例

    2024-04-23 22:10:04       30 阅读
  5. net模块

    net模块

    2024-04-23 22:10:04      31 阅读
  6. MySQL 基础语法(3)

    2024-04-23 22:10:04       34 阅读
  7. Shell中grep用法总结

    2024-04-23 22:10:04       33 阅读