#include <stdio.h> #include <stdlib.h> #include "ros/ros.h" #include "std_msgs/MultiArrayLayout.h" #include "std_msgs/MultiArrayDimension.h" #include "std_msgs/Int32MultiArray.h" int main(int argc, char **argv) { ros::init(argc, argv, "arrayPublisher"); ros::NodeHandle n; ros::Publisher pub = n.advertise<std_msgs::Int32MultiArray>("array", 100); while (ros::ok()) { std_msgs::Int32MultiArray array; //Clear array array.data.clear(); //for loop, pushing data in the size of the array for (int i = 0; i < 90; i++) { //assign array a random number between 0 and 255. array.data.push_back(rand() % 255); } //Publish array pub.publish(array); //Let the world know ROS_INFO("I published something!"); //Do this. ros::spinOnce(); //Added a delay so not to spam sleep(2); } }
#include <stdio.h> #include <stdlib.h> #include <vector> #include <iostream> #include "ros/ros.h" #include "std_msgs/MultiArrayLayout.h" #include "std_msgs/MultiArrayDimension.h" #include "std_msgs/Int32MultiArray.h" int Arr[90]; void arrayCallback(const std_msgs::Int32MultiArray::ConstPtr& array); int main(int argc, char **argv) { ros::init(argc, argv, "arraySubscriber"); ros::NodeHandle n; ros::Subscriber sub3 = n.subscribe("array", 100, arrayCallback); ros::spinOnce(); for(j = 1; j < 90; j++) { printf("%d, ", Arr[j]); } printf(" "); return 0; } void arrayCallback(const std_msgs::Int32MultiArray::ConstPtr& array) { int i = 0; // print all the remaining numbers for(std::vector<int>::const_iterator it = array->data.begin(); it != array->data.end(); ++it) { Arr[i] = *it; i++; } return; }