发布者结点:
代码实现:
python:
C++:
C++和Python发布结点的差异:
python:
发布结点pub = 大管家rospy调用publisher函数发布话题 (话题,类型,话题长度)
C++:
先定义一个大管家:NodeHandle
然后大管家发布话题;
结点 = nh.advertise<节点类型>(话题名称,长度)
C++和Python初始结点的差异:
python:
大管家init_node(直接跟结点名)
C++:
ros::init(main函数的参数一致,结点的名字)
C++和Python打印结点的差异:
Python:
C++:
C++和Python如何发布消息的差异:
python:
定义发送消息的类型
定义你想传递消息的参数 (这里是std_msgs里面的string 类型的data 数据)
用前面你定义的发布者发布消息
C++:
定义一个你想传送的消息(类型是一个大类里面的一个小类)
定义你想传递消息的参数 (这里是std_msgs里面的string 类型的data 数据)
用前面你定义的发布者发布消息
C++和Python while循环条件的差异:
python:
not 大管家.is_shutdown函数
C++:
while(ros::ok())
订阅者结点:
实现代码:
python:
C++:
C++和Python 订阅函数的差异:
Python:
订阅者 =rospy(大管家).Subscriber(话题名称,话题类型(小类),坑位长度,回调函数(最后))
C++:
定义大管家
定义订阅者 = 大管家nh.subscriber(话题名称,坑位长度,回调函数)
所以C++代码和python的差异就是没有msg的类型
C++和Python 回调和输出函数的差异:
Python:
回调函数:函数参数就算消息的名称,没有消息的类型
输出函数:rospy (大管家).loginfo (msg.data/消息的某一个参数变量)
C++:
回调函数:参数要写明消息的具体类型,大类+小类都要写
输出函数:ROS_INFO(消息的某个参数变量)
其他差别:
Python:
rospy.spin() #转个头看一眼
C++:
while(ros::ok())
{
ros::spinOnce();
}
setlocale(LC_ALL,"");//从默认locate读取参数