ajout noeud master_wip + cmd_vel_no_zero en versions beta

This commit is contained in:
ericsenn 2021-05-18 11:43:06 +02:00
parent 1148ff519e
commit 98a5384127
9 changed files with 1941 additions and 13 deletions

View file

@ -178,6 +178,14 @@ target_link_libraries(${PROJECT_NAME}_consumer ${catkin_LIBRARIES})
add_executable(${PROJECT_NAME}_send_goal_demo src/send_goal_demo.cpp)
target_link_libraries(${PROJECT_NAME}_send_goal_demo ${catkin_LIBRARIES})
add_executable(${PROJECT_NAME}_pose2ads src/pose2ads.cpp)
target_link_libraries(${PROJECT_NAME}_pose2ads ${catkin_LIBRARIES})
add_executable(${PROJECT_NAME}_master_wip src/master_wip.cpp)
target_link_libraries(${PROJECT_NAME}_master_wip ${catkin_LIBRARIES})
add_executable(${PROJECT_NAME}_cmd_vel_no_zero src/cmd_vel_no_zero.cpp)
target_link_libraries(${PROJECT_NAME}_cmd_vel_no_zero ${catkin_LIBRARIES})
## Specify libraries to link a library or executable target against
# target_link_libraries(${PROJECT_NAME}_node

68
src/cmd_vel_no_zero.cpp Normal file
View file

@ -0,0 +1,68 @@
// This program subscribes to /cmd_vel_no_zero/cmd_vel and
// it republishes the cmd_vel input on /cmd_vel_gate/cmd_vel_out,
// Removing all the zero values
#include <iostream>
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
using namespace std;
//global variables have to be exposed outside the callback
ros::Publisher *pubPtr;//the publisher
geometry_msgs::Twist msgOut;//cmd vel message
int GOOD_TO_BLOCK = 0;
//*******************************************************
//callback for receiving the command velocity
//and blocking it if all values equal to zero are received more than three times
void commandVelocityReceived(const geometry_msgs::Twist& msgIn){
if ((msgIn.linear.x == 0) && (msgIn.linear.y == 0) && (msgIn.linear.z ==0)
&& (msgIn.angular.x == 0) && (msgIn.angular.y == 0) && (msgIn.angular.z ==0)){
GOOD_TO_BLOCK++;
if (GOOD_TO_BLOCK>3){
GOOD_TO_BLOCK=4;
//cout<<"good to block="<<GOOD_TO_BLOCK<<" :";
}
}
if ((msgIn.linear.x != 0) || (msgIn.linear.y != 0) || (msgIn.linear.z !=0)
|| (msgIn.angular.x != 0) || (msgIn.angular.y != 0) || (msgIn.angular.z !=0)){GOOD_TO_BLOCK=0;}
if (GOOD_TO_BLOCK<3)
{
geometry_msgs::Twist msgOut;
msgOut.linear.x = msgIn.linear.x;//only this
msgOut.linear.y = msgIn.linear.y;
msgOut.linear.z = msgIn.linear.z;
msgOut.angular.x = msgIn.angular.x;
msgOut.angular.y = msgIn.angular.y;
msgOut.angular.z = msgIn.angular.z;//and this are used for a differential drive bot
pubPtr->publish(msgOut);
}
/*else {
ROS_INFO("ZERO CMD VELOCITY BLOCKED");
cout << "Blocking zero velocity commands" << endl;
}
*/
}
//***********************************************************
// MAIN
//***********************************************************
int main(int argc, char **argv) {
ros::init(argc, argv, "cmd_vel_no_zero");
ros::NodeHandle nh;
pubPtr = new ros::Publisher(nh.advertise<geometry_msgs::Twist>("/cmd_vel_no_zero/cmd_vel_out",1));
//callback to receive cmd vel
ros::Subscriber sub = nh.subscribe("/cmd_vel_no_zero/cmd_vel_in",1,&commandVelocityReceived,ros::TransportHints().tcpNoDelay(true));
ros::spin();
delete pubPtr;
}

314
src/master_if.cpp Normal file
View file

@ -0,0 +1,314 @@
#include <iostream>
#include <ros/ros.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
#include <time.h>
#include <unistd.h>
#include <move_base_msgs/MoveBaseAction.h>
#include <actionlib/client/simple_action_client.h>
#include <geometry_msgs/Twist.h>
#include <geometry_msgs/Point.h>
//#include <turtlesim/Pose.h>
#include <std_msgs/Bool.h>
using namespace std;
typedef actionlib::SimpleActionClient<move_base_msgs::MoveBaseAction> MoveBaseClient;
bool SET, GOTO, ABORT, STOP, BOOLA, BOOLB, BOOLC, BOOLD;
//this function to read a character from the keyboard if one
//has been typed. non blocking like getchar ... stuff
//**************************************************************
int getkey() {
int character;
struct termios orig_term_attr;
struct termios new_term_attr;
/* set the terminal to raw mode */
tcgetattr(fileno(stdin), &orig_term_attr);
memcpy(&new_term_attr, &orig_term_attr, sizeof(struct termios));
new_term_attr.c_lflag &= ~(ECHO|ICANON);
new_term_attr.c_cc[VTIME] = 0;
new_term_attr.c_cc[VMIN] = 0;
tcsetattr(fileno(stdin), TCSANOW, &new_term_attr);
/* read a character from the stdin stream without blocking */
/* returns EOF (-1) if no character is available */
character = fgetc(stdin);
/* restore the original terminal attributes */
tcsetattr(fileno(stdin), TCSANOW, &orig_term_attr);
return character;
}
//************************************************************
//************************************************************
//callback for subsribing to the boolean message
//linked to the press button on the ROS Mobile app
void ACallback(
const std_msgs::Bool& inboolA
) {
BOOLA= inboolA.data;
}
//************************************************************
//*************************************************************
// function to wait for one button to be pressed and released
// on the ROS Mobile application.
// returns one int to reflect which button has been pressed (and released)
int getbutton(){
while(1){
if (SET == true){
while (SET == true){};
return 1;
}
if (BOOLA == true){
while (BOOLA == true){};
return 10;
}
if (BOOLB == true){
while (BOOLB == true){};
return 11;
}
}
return 0;
}
//************************************************************
// MAIN
//************************************************************
int main(int argc, char** argv){
cout << "******************* SEND GOALS TO THE ROBOT ***********************" << endl;
cout << "* This application listen to booleans from the buttons on the *" << endl;
cout << "* ROS Mobile android application. *" << endl;
cout << "* Final aim is to the naviguation stack in the form of a 'MoveBaseGoal' *" << endl;
cout << "* message published on the /move_base/goal topics *" << endl;
cout << "* to which the move_base node subscribes. *" << endl;
cout << "* Goals are : the x,y coordinates of a point in the map *" << endl;
cout << "* and an orientation for the robot. *" << endl;
cout << "*******************************************************************" << endl << endl;
ros::init(argc, argv, "master_if");
ros::NodeHandle nh;
// Initialize many subscribers to boolean topics from android remote command buttons
// format is std_msgs/Bool
ros::Subscriber sub = nh.subscribe("/SET", 1, SETCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/GOTO", 1, GOTOCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subshcribe("/ABORT", 1, ABORTCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/STOP", 1, STOPCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/boolA", 1, ACallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/boolB", 1, BCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/boolC", 1, CCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/boolD", 1, DCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/boolE", 1, ECallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/boolF", 1, FCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/boolG", 1, GCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/boolH", 1, HCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/boolI", 1, ICallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/boolJ", 1, JCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/boolK", 1, KCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber sub = nh.subscribe("/boolL", 1, LCallback, ros::TransportHints().tcpNoDelay(true));
// Init cmd_vel publisher
//ros::Publisher pub = nh.advertise<geometry_msgs::Twist>("/RosAria/cmd_vel", 1);
//Publish a disabling out to send to velocity command gate
ros::Publisher pub = nh.advertise<std_msgs::Bool>("/send_goal/disable",1000);
// Create Twist message
//geometry_msgs::Twist twist;
// Starting client
MoveBaseClient client("move_base", true);
ROS_INFO("Waiting for the action server to start");
client.waitForServer();
ROS_INFO("Action server started");
move_base_msgs::MoveBaseGoal goal;
std_msgs::Bool disable;
bool keyok = false;
int c;
while(ros::ok()){
disable.data = false;
cout << endl << ">> Waiting for button press on ROS Mobile :" << endl;
cout << ">> ------------------------------------------------" << endl;
c=getchar();
getchar();
//cout << ">> you typed :" << c << endl;//for debug purpose
//POINT A
if (c == 65) {
keyok = true;
// set position
goal.target_pose.pose.position.x = -0.1119;
goal.target_pose.pose.position.y = -0.0760;
goal.target_pose.pose.position.z = 0.0;
// set orientation
goal.target_pose.pose.orientation.x = 0.0;
goal.target_pose.pose.orientation.y = 0.0;
goal.target_pose.pose.orientation.z = 0.00374903019605;
goal.target_pose.pose.orientation.w = 0.999992972362;
}
else if (c == 66){
//POINTB
keyok = true;
// set position
goal.target_pose.pose.position.x = -0.9116;
goal.target_pose.pose.position.y = -0.0236;
goal.target_pose.pose.position.z = 0.0;
// set orientation
goal.target_pose.pose.orientation.x = 0.0;
goal.target_pose.pose.orientation.y = 0.0;
goal.target_pose.pose.orientation.z = -0.0121755845945;
goal.target_pose.pose.orientation.w = 0.999925874823;
}
else if (c == 67){
//POINTC
keyok = true;
// set position
goal.target_pose.pose.position.x = 0.8998;
goal.target_pose.pose.position.y = -0.0252;
goal.target_pose.pose.position.z = 0.0;
// set orientation
goal.target_pose.pose.orientation.x = 0.0;
goal.target_pose.pose.orientation.y = 0.0;
goal.target_pose.pose.orientation.z = 0.0134252324483;
goal.target_pose.pose.orientation.w = 0.999909877506;
}
else if (c == 88){
//STOP NODE
ros::shutdown();
return 0;
}
else {
cout << ">> not recognized key, try again" << endl;
keyok = false;
}
//keyok true ---------------------------------
//send the goal to move_base action server
//else do nothing and get back to asking a valid key
if (keyok == true){
ROS_INFO("Sending the goal");
goal.target_pose.header.stamp = ros::Time::now();
// set frame
goal.target_pose.header.frame_id = "map";
client.sendGoal(goal);
//ROS_INFO("Waiting for the result");
//client.waitForResult();
int key;
enum actionlib::SimpleClientGoalState::StateEnum job_state; /*Enumerator:
PENDING 0
ACTIVE 1
RECALLED 2
REJECTED 3
PREEMPTED 4
ABORTED 5
SUCCEEDED 6
LOST 7
*/
cout << "PRESS ANY KEY TO ABORT" << endl;
cout << "JOB STATUS : 0-PENDING 1-ACTIVE 2-RECALLED 3-REJECTED 4-PREEMPTED 5-ABORTED 6-SUCCEEDED 7-LOST :" << endl;
//start polling loop---------------------------------
while(1){
job_state = client.getState().state_;//getting move base job status
cout << job_state << "|";//echoing job status
if (job_state == 6) {//job has succeeded, exit loop
cout << endl << "GOAL REACHED" << endl;
ROS_INFO("Succeeded");
break;}
else if (job_state==0 || job_state==1){//if job is pending or active, we want to be able to stop it
key = getkey();//by pressing any key
//cout << "key:" << key;//debug only
if (key != -1) {
client.cancelAllGoals();
cout << endl << ">>>>>!!! ABORTING !!!<<<<" << endl;
//loop for flooding the robot cmd_vel with 0 velocity messages to actually stop him
//the time for move_base action server to react (several seconds
//where the bot is still moving)
//not very nice solution but it works
while(1){//Loop to block the bot while move_base finishes cancel the goal
//and stop sending cmd_vel to the bot
disable.data = true;
pub.publish(disable);
ros::spinOnce();
job_state = client.getState().state_;//getting move base job status
cout << "\r JOB STATUS :" << job_state << "|";//echoing job status
if ((job_state != 1) && (job_state != 0)) {//exit the blocking loop when job status is no more "pending" or "active"
disable.data=false;
pub.publish(disable);
ros::spinOnce();
cout << "ABORTED" << endl;
break;//exit blocking loop
}
/*key = getkey();
if (key != -1){//or exit if a key is pressed - not recommended
disable.data=false;
pub.publish(disable);
ros::spinOnce();
cout << "CANCELLED" << endl;
break;//exit blocking loop
}*/
usleep(50000);
}//end blocking loop
break;//exit polling loop because a key was pressed and we have ensured the goal is finished and robot stopped
}//end if key != 1 ==> a key was pressed
else {//no key pressed, so let move base continue driving the bot to its goal
//cout<< "O:";//debug
usleep(500000);}
}//end if job pending or active
else{//job status is not pending or active or succeeded so move base has failed
cout << endl << "Move Base failed reaching the goal" << endl;
ROS_INFO("Failed");
break;}
}//end polling loop------------------------------------
}//end if keyok TRUE -------------------------
}//end while
return 0;
}

609
src/master_wip.cpp Normal file
View file

@ -0,0 +1,609 @@
#include <iostream>
#include <fstream>
#include <ros/ros.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
#include <time.h>
#include <unistd.h>
#include <move_base_msgs/MoveBaseAction.h>
#include <actionlib/client/simple_action_client.h>
#include <geometry_msgs/Twist.h>
#include <geometry_msgs/Point.h>
#include "geometry_msgs/PoseWithCovarianceStamped.h"
//#include <turtlesim/Pose.h>
#include <std_msgs/Bool.h>
using namespace std;
typedef actionlib::SimpleActionClient<move_base_msgs::MoveBaseAction> MoveBaseClient;
// GLOBAL VARIABLES DECLARATION
bool SET, GOTO, ABORT, STOP, BOOLA, BOOLB, BOOLC, BOOLD;
// global variables needed to expose the position data outside the
// recv pose from amcl callback function
double pose_x, pose_y, pose_z, quat_x, quat_y, quat_z, quat_w;
// to expose the recevied pose (with covariance) outside the callback
geometry_msgs::PoseWithCovarianceStamped POSEreceived;
//**************************************************************
//CALLBACK FOR SUBSCRIBER TO POSE
//**************************************************************
void poseRCVcallback(const geometry_msgs::PoseWithCovarianceStamped::ConstPtr& msg)
{
ROS_INFO_STREAM("Received pose: " << msg);//ROS INFO FOR DEBUG PURPOSE
POSEreceived=(*msg);
pose_x = msg->pose.pose.position.x;
pose_y = msg->pose.pose.position.y;
pose_z = msg->pose.pose.position.z;
quat_x = msg->pose.pose.orientation.x;
quat_y = msg->pose.pose.orientation.y;
quat_z = msg->pose.pose.orientation.z;
quat_w = msg->pose.pose.orientation.w;
}
//_____________________________________________________________
//**************************************************************
//this function to read a character from the keyboard if one
//has been typed. non blocking like getchar ... stuff
//**************************************************************
int getkey() {
int character;
struct termios orig_term_attr;
struct termios new_term_attr;
/* set the terminal to raw mode */
tcgetattr(fileno(stdin), &orig_term_attr);
memcpy(&new_term_attr, &orig_term_attr, sizeof(struct termios));
new_term_attr.c_lflag &= ~(ECHO|ICANON);
new_term_attr.c_cc[VTIME] = 0;
new_term_attr.c_cc[VMIN] = 0;
tcsetattr(fileno(stdin), TCSANOW, &new_term_attr);
/* read a character from the stdin stream without blocking */
/* returns EOF (-1) if no character is available */
character = fgetc(stdin);
/* restore the original terminal attributes */
tcsetattr(fileno(stdin), TCSANOW, &orig_term_attr);
return character;
}
//_____________________________________________________________
//************************************************************
//callback for subscribing to the boolean message
//linked to the press button on the ROS Mobile app
void SETCallback(const std_msgs::Bool& inboolA) {SET = inboolA.data;}
//_____________________________________________________________
//************************************************************
//callback for subscribing to the boolean message
//linked to the press button on the ROS Mobile app
void GOTOCallback(const std_msgs::Bool& inbool){GOTO = inbool.data;}
//_____________________________________________________________
//************************************************************
//callback for subscribing to the boolean message
//linked to the press button on the ROS Mobile app
void ABORTCallback(const std_msgs::Bool& inbool){ABORT = inbool.data;}
//_____________________________________________________________
//************************************************************
//callback for subscribing to the boolean message
//linked to the press button on the ROS Mobile app
void STOPCallback(const std_msgs::Bool& inbool){STOP = inbool.data;}
//_____________________________________________________________
//************************************************************
//callback for subscribing to the boolean message
//linked to the press button on the ROS Mobile app
void ACallback(const std_msgs::Bool& inbool) {BOOLA = inbool.data;}
//_____________________________________________________________
//************************************************************
//callback for subscribing to the boolean message
//linked to the press button on the ROS Mobile app
void BCallback(const std_msgs::Bool& inbool) {BOOLB = inbool.data;}
//_____________________________________________________________
//************************************************************
//callback for subscribing to the boolean message
//linked to the press button on the ROS Mobile app
void CCallback(const std_msgs::Bool& inbool) {BOOLC = inbool.data;}
//_____________________________________________________________
//************************************************************
//callback for subscribing to the boolean message
//linked to the press button on the ROS Mobile app
void DCallback(const std_msgs::Bool& inbool) {BOOLD = inbool.data;}
//_____________________________________________________________
//*************************************************************
// function to wait for one button to be pressed
// on the ROS Mobile application.
// returns one int to reflect which button has been pressed
//*************************************************************
int getbutton(){
//cout<<"probing buttons"<< endl;
int keycode = 0;
ros::Rate loop_rate(5);
while(ros::ok())
{
ros::spinOnce();
loop_rate.sleep();
if (SET == true){
keycode = 1;
break;
}
if (GOTO == true){
keycode = 2;
break;
}
if (ABORT == true){
keycode = 3;
break;
}
if (STOP == true){
keycode = 4;
break;
}
if (BOOLA == true){
keycode = 10;
break;
}
if (BOOLB == true){
keycode = 11;
break;
}
if (BOOLC == true){
keycode = 12;
break;
}
if (BOOLD == true){
keycode = 13;
break;
}
}
while(ros::ok()){
ros::spinOnce();
loop_rate.sleep();
// wait for all button released
if (!SET || !GOTO || !ABORT || !BOOLA || !BOOLB || !BOOLC || !BOOLD){
break;
}
}
cout<<"you typed :" << keycode << endl;
return keycode;
}
//_____________________________________________________________
//*************************************************************
// function to probe if one button is pressed
// NON BLOCKING
// on the ROS Mobile application.
// returns one int to reflect which button has been pressed
//*************************************************************
int probebutton(){
//cout<<"probing buttons"<< endl;
int keycode = 0;
ros::Rate loop_rate(5);
ros::spinOnce();
loop_rate.sleep();
if (SET == true){
keycode = 1;
}
if (GOTO == true){
keycode = 2;
}
if (ABORT == true){
keycode = 3;
}
if (STOP == true){
keycode = 4;
}
if (BOOLA == true){
keycode = 10;
}
if (BOOLB == true){
keycode = 11;
}
if (BOOLC == true){
keycode = 12;
}
if (BOOLD == true){
keycode = 13;
}
return keycode;
}
//_____________________________________________________________
//*************************************************************
// function to wait for all buttons to be released
// on the ROS Mobile application.
// returns 1 if buttons are all released, 0 else
//*************************************************************
bool releasedbutton(){
return (BOOLA);
}
//_____________________________________________________________
//************************************************************
//************************************************************
// MAIN
//************************************************************
//************************************************************
int main(int argc, char** argv){
const int TABLE_SIZE = 12;//number of goals in the table and file
int counter;//for counting in loops
int c;//for carrying code of key pressed
ifstream fileLoad; //create file object
ofstream fileSave; //create new output file
std_msgs::Bool disable;
move_base_msgs::MoveBaseGoal goal;
move_base_msgs::MoveBaseGoal tableOfGoals[TABLE_SIZE];
//fill tableOfGoals with blank inputs : header.frame_id set to dummy
for(counter = 0; counter < TABLE_SIZE; counter++){
//cout<<"counter :"<<counter<<" |";
// set position
goal.target_pose.pose.position.x = 0.0+rand();
goal.target_pose.pose.position.y = 0.0;
goal.target_pose.pose.position.z = 0.0+0.5;
// set orientation
goal.target_pose.pose.orientation.x = 0.0;
goal.target_pose.pose.orientation.y = 0.0;
goal.target_pose.pose.orientation.z = 0.0;
goal.target_pose.pose.orientation.w = 0.0;
//set header
goal.target_pose.header.frame_id="dummy";
goal.target_pose.header.seq=counter;
//goal.target_pose.header.stamp=ros::Time::now();
tableOfGoals[counter] = goal;//!first index of a table is 0 in C++
}
/*
//check table of goals for debug purpose
cout<<"printing table of goals"<<endl;
for(counter = 0; counter < TABLE_SIZE; counter++){ //use for loop to output to file
cout << "frame id=" << tableOfGoals[counter].target_pose.header.frame_id <<
" seq=" << tableOfGoals[counter].target_pose.header.seq <<
" pose_x=" << tableOfGoals[counter].target_pose.pose.position.x <<
" pose_y=" << tableOfGoals[counter].target_pose.pose.position.y <<
" pose_z=" << tableOfGoals[counter].target_pose.pose.position.z <<
" quat_x=" << tableOfGoals[counter].target_pose.pose.orientation.x <<
" quat_y=" << tableOfGoals[counter].target_pose.pose.orientation.y <<
" quat_z=" << tableOfGoals[counter].target_pose.pose.orientation.z <<
" quat_w=" << tableOfGoals[counter].target_pose.pose.orientation.w<<endl;
}
*/
double tog[7*TABLE_SIZE];//this is a table of double floats
double togin[7*TABLE_SIZE];//this is a table of double floats
/*
//filling table of floats with values from table of goals
int i;
for(counter = 0; counter < TABLE_SIZE; counter++){
i=0;
// set position
tog[7*counter+(i++)]=tableOfGoals[counter].target_pose.pose.position.x;
tog[7*counter+(i++)]=tableOfGoals[counter].target_pose.pose.position.y;
tog[7*counter+(i++)]=tableOfGoals[counter].target_pose.pose.position.z;
// set orientation
tog[7*counter+(i++)]=tableOfGoals[counter].target_pose.pose.orientation.x;
tog[7*counter+(i++)]=tableOfGoals[counter].target_pose.pose.orientation.y;
tog[7*counter+(i++)]=tableOfGoals[counter].target_pose.pose.orientation.z;
tog[7*counter+i]=tableOfGoals[counter].target_pose.pose.orientation.w;
}
*/
/*
cout<<"printing tog table"<< endl;
//printing table of double floats
for(counter = 0; counter < TABLE_SIZE; counter++){
//cout<< "line:"<< counter<<":";
for(i=0;i<7;i++){
cout << tog[7*counter+i]<<":";
}
cout<<endl;
}
*/
/*
cout<<"size of table of floats to write="<< sizeof(tog)<<endl;//checking size
//saving bin file
fileSave.open("tog.bin", ios::binary | ios::out);
fileSave.write(reinterpret_cast<char *>(&tog), sizeof(tog));
fileSave.close();
cout<<"File tog.bin saved"<<endl;
*/
//loading bin file
cout<<"Loading table of goals from file ..."<< endl;
fileLoad.open("tog.bin", ios::binary | ios::in);
if(!fileLoad) {
cout << "Cannot open file : a new file will be created"<<endl;
//return 1;
}
else{
fileLoad.read(reinterpret_cast<char *>(&togin), sizeof(togin));
fileLoad.close();
cout << "File tog.bin has been loaded to table of double floats" << endl;
}
//filling table of goals with values from table of double floats
cout<<"Filling table of goals in memory ..."<<endl;
int i;
for(counter = 0; counter < TABLE_SIZE; counter++){
i=0;
// set position
tableOfGoals[counter].target_pose.pose.position.x=togin[7*counter+(i++)];
tableOfGoals[counter].target_pose.pose.position.y=togin[7*counter+(i++)];
tableOfGoals[counter].target_pose.pose.position.z=togin[7*counter+(i++)];
// set orientation
tableOfGoals[counter].target_pose.pose.orientation.x=togin[7*counter+(i++)];
tableOfGoals[counter].target_pose.pose.orientation.y=togin[7*counter+(i++)];
tableOfGoals[counter].target_pose.pose.orientation.z=togin[7*counter+(i++)];
tableOfGoals[counter].target_pose.pose.orientation.w=togin[7*counter+(i++)];
}
//check table of goals for debug purpose
cout<<"Printing table of goals :"<<endl;
for(counter = 0; counter < TABLE_SIZE; counter++){ //use for loop to output to file
cout << "frame id=" << tableOfGoals[counter].target_pose.header.frame_id <<
" seq=" << tableOfGoals[counter].target_pose.header.seq <<
" pose_x=" << tableOfGoals[counter].target_pose.pose.position.x <<
" pose_y=" << tableOfGoals[counter].target_pose.pose.position.y <<
" pose_z=" << tableOfGoals[counter].target_pose.pose.position.z <<
" quat_x=" << tableOfGoals[counter].target_pose.pose.orientation.x <<
" quat_y=" << tableOfGoals[counter].target_pose.pose.orientation.y <<
" quat_z=" << tableOfGoals[counter].target_pose.pose.orientation.z <<
" quat_w=" << tableOfGoals[counter].target_pose.pose.orientation.w<<endl;
}
/*
cout<<"size of togin table="<< sizeof(togin)<<endl;//cheking size
cout<<"printing tog table"<< endl;
//printing table
for(counter = 0; counter < TABLE_SIZE; counter++){
//cout<< "line:"<< counter<<":";
for(i=0;i<7;i++){
cout << togin[7*counter+i]<<":";
}
cout<<endl;
}
*/
cout<<"Starting ROS node ..."<< endl << endl;
cout << "******************* MANAGINING GOALS FOR THE ROBOT ************************" << endl;
cout << "* This node listens to messages from the ROS mobile application *" << endl;
cout << "* carried by booleans from the buttons pressed on the phone. *" << endl;
cout << "* Following those messages, it performs different actions : *" << endl;
cout << "* Recording a goal from the current position (amcl) (SET button) *" << endl;
cout << "* Sending a goal to the robot (GOTO button), Aborting the mission (ABORT) *" << endl;
cout << "* Stoping (STOP). 12 goals can be used, automatically saved to disk *" << endl;
cout << "* and loaded in memory at start. *" << endl;
cout << "* It issues orders to the naviguation stack in the form of 'MoveBaseGoal' *" << endl;
cout << "* messages published on the /move_base/goal topics *" << endl;
cout << "* to which the move_base node subscribes. *" << endl;
cout << "* Goals are : the x,y coordinates of a point in the map *" << endl;
cout << "* and an orientation for the robot. *" << endl;
cout << "***************************************************************************" << endl << endl;
ros::init(argc, argv, "master_if");
ros::NodeHandle nh;
// Initialize many subscribers to boolean topics from android remote command buttons
// format is std_msgs/Bool
ros::Subscriber subSET = nh.subscribe("/SET", 1, SETCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber subGOTO = nh.subscribe("/GOTO", 1, GOTOCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber subABORT = nh.subscribe("/ABORT", 1, ABORTCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber subSTOP = nh.subscribe("/STOP", 1, STOPCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber subA = nh.subscribe("/boolA", 1, ACallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber subB = nh.subscribe("/boolB", 1, BCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber subC = nh.subscribe("/boolC", 1, CCallback, ros::TransportHints().tcpNoDelay(true));
ros::Subscriber subD = nh.subscribe("/boolD", 1, DCallback, ros::TransportHints().tcpNoDelay(true));
// Initialize subscribe to the pose topic from amcl
// topic name : /amcl_pose format geometry_msgs::PoseWithCovarianceStamped
ros::Subscriber sub = nh.subscribe("/amcl_pose", 1, poseRCVcallback, ros::TransportHints().tcpNoDelay(true));
//the callback queue is 1 = we do not want to wait before transfering it to ADS ...
//Publish a disabling out to send to velocity command gate
ros::Publisher pub = nh.advertise<std_msgs::Bool>("/send_goal/disable",1000);
// Starting client
MoveBaseClient client("move_base", true);
ROS_INFO("Waiting for the action server to start");
client.waitForServer();
ROS_INFO("Action server started");
ros::Rate loop_rate(10);
/* MAIN LOOP ****************************************************** */
while (ros::ok())
{
//ros::spinOnce();
//loop_rate.sleep();
//local variables declaration
disable.data = false;
bool keyok = false;
cout << endl << ">> Waiting for button press on ROS Mobile :" << endl;
c=getbutton();
//cout << ">> you typed :" << c << endl;//for debug purpose
/* SET PRESSED ============================================= */
if (c == 1){//SET pressed
c=getbutton();
if ((c == 10) || (c == 11) || (c == 12) || (c == 13)){//A or B or C or D pressed
//read the current pose topic
ros::spinOnce();
loop_rate.sleep();
//set goal A in table of goals
// set position
goal.target_pose.pose.position.x = pose_x;
goal.target_pose.pose.position.y = pose_y;
goal.target_pose.pose.position.z = pose_z;
// set orientation
goal.target_pose.pose.orientation.x = quat_x;
goal.target_pose.pose.orientation.y = quat_y;
goal.target_pose.pose.orientation.z = quat_z;
goal.target_pose.pose.orientation.w = quat_w;
//set header
goal.target_pose.header.frame_id="map";
//write table of goals
tableOfGoals[c-10] = goal;
cout<<"Goal " << c-9 <<" has been set"<<endl;
//SAVING tableOfGoals to file
//filling table of floats with values from table of goals
int i;
for(counter = 0; counter < TABLE_SIZE; counter++){
i=0;
// set position
tog[7*counter+(i++)]=tableOfGoals[counter].target_pose.pose.position.x;
tog[7*counter+(i++)]=tableOfGoals[counter].target_pose.pose.position.y;
tog[7*counter+(i++)]=tableOfGoals[counter].target_pose.pose.position.z;
// set orientation
tog[7*counter+(i++)]=tableOfGoals[counter].target_pose.pose.orientation.x;
tog[7*counter+(i++)]=tableOfGoals[counter].target_pose.pose.orientation.y;
tog[7*counter+(i++)]=tableOfGoals[counter].target_pose.pose.orientation.z;
tog[7*counter+i]=tableOfGoals[counter].target_pose.pose.orientation.w;
}
//saving bin file
fileSave.open("tog.bin", ios::binary | ios::out);
fileSave.write(reinterpret_cast<char *>(&tog), sizeof(tog));
fileSave.close();
cout<<"File tog.bin saved"<<endl;
}
}
int key;//this int will be used for carrying the code of a key pressed in the loop
/* GOTO PRESSED ============================================= */
if (c == 2){//GOTO pressed
c=getbutton();
if ((c == 10) || (c == 11) || (c == 12) || (c == 13)){//A or B or C or D pressed
//read goal from table of goals
goal=tableOfGoals[c-10];
//check if goal is valid
if ((goal.target_pose.pose.position.x == 0.0) &&
(goal.target_pose.pose.position.x == 0.0) &&
(goal.target_pose.pose.position.x == 0.0) &&
(goal.target_pose.pose.orientation.x == 0.0) &&
(goal.target_pose.pose.orientation.y == 0.0) &&
(goal.target_pose.pose.orientation.z == 0.0) &&
(goal.target_pose.pose.orientation.w == 0.0)){
cout<<"This goal is not defined. Go back to initial choice."<<endl;
}
else {
//check goal for debug purpose
/* cout << "pose_x=" << goal.target_pose.pose.position.x <<
" pose_y=" << goal.target_pose.pose.position.y <<
" pose_z=" << goal.target_pose.pose.position.z <<
" quat_x=" << goal.target_pose.pose.orientation.x <<
" quat_y=" << goal.target_pose.pose.orientation.y <<
" quat_z=" << goal.target_pose.pose.orientation.z <<
" quat_w=" << goal.target_pose.pose.orientation.w;
*/
//send goal to move base server
ROS_INFO("Sending the goal");
goal.target_pose.header.stamp = ros::Time::now();//set the header
goal.target_pose.header.frame_id = "map";// set frame
client.sendGoal(goal);//send goal
//ROS_INFO("Waiting for the result");
//client.waitForResult();//This only if you want a passive waiting of the result
enum actionlib::SimpleClientGoalState::StateEnum job_state;
/* Enumerator the reflect the status of the move base client. Return values are :
0=PENDING
1=ACTIVE
2=RECALLED
3=REJECTED
4=PREEMPTED
5=ABORTED
6=SUCCEEDED
7=LOST
*/
cout << "PRESS ABORT BUTTON TO ABORT" << endl;
cout << "JOB STATUS : 0-PENDING 1-ACTIVE 2-RECALLED 3-REJECTED 4-PREEMPTED 5-ABORTED 6-SUCCEEDED 7-LOST :" << endl;
//start polling loop---------------------------------------
//asking the movebase client server on its status ---------
while(1){
job_state = client.getState().state_;//getting move base job status
cout << job_state << "|";//echoing job status
if (job_state == 6) {//job has succeeded, exit loop
cout << endl << "GOAL REACHED" << endl;
ROS_INFO("Succeeded");
break;}
else if (job_state==0 || job_state==1){//if job is pending or active, we want to be able to stop it
key=probebutton();//by pressing any key
//cout << "key:" << c;//debug only
if (key == 3) {
client.cancelAllGoals();
cout << endl << ">>>>>!!! ABORTING !!!<<<<" << endl;
//loop for flooding the robot cmd_vel with 0 velocity messages to actually stop him
//the time for move_base action server to react (several seconds
//where the bot is still moving)
//not very nice solution but it works
while(1){//Loop to block the bot while move_base finishes cancel the goal
//and stop sending cmd_vel to the bot
disable.data = true;//disable is a bool ros messages the is published toward a cmd_vel gate
pub.publish(disable);//publish the message on the topic
ros::spinOnce();//run the spinner
job_state = client.getState().state_;//getting move base job status
cout << "\r JOB STATUS :" << job_state << "|";//echoing job status
//exit the blocking loop when job status is no more "pending" or "active"
if ((job_state != 1) && (job_state != 0)) {
disable.data=false;//unblock the cmd_vel gate
pub.publish(disable);
ros::spinOnce();
cout << "ABORTED" << endl;
break;//exit blocking loop
}
usleep(50000);//50 ms pause
}//end blocking loop
break;//exit polling loop because ABORT key was pressed and we have ensured the goal is finished and robot stopped
}//end if key == 3 ==> ABORT key was pressed
else {//no key pressed, so let move base continue driving the bot to its goal
usleep(500000);}
}//end if job pending or active
else{//job status is not pending or active or succeeded so move base has failed
cout << endl << "Move Base failed reaching the goal" << endl;
ROS_INFO("Failed");
break;
}
}//end polling loop------------------------------------
}
}//end goal (A,B,C,D) button pressed
}//end GOTO button pressed
}//end MAIN while loop
return 0;
}

View file

@ -1,8 +0,0 @@
=======NEW BATCH============
=======NEW BATCH============
=======NEW BATCH============
=======NEW BATCH============
=======NEW BATCH============
=======NEW BATCH============
=======NEW BATCH============
=======NEW BATCH============

17
src/p2c.bash Normal file → Executable file
View file

@ -1,4 +1,8 @@
echo "starting script"
FILE=out.txt
test -f "$FILE" && echo "deleting former output file" && rm "$FILE"
echo "=======NEW BATCH============" >> out.txt
list="100 1000 5000 10000"
@ -13,22 +17,27 @@ do
echo -n "loop counter:" $a
echo -n " | loop rate:" $looprate "Hz"
echo "loop rate:" $looprate >> out.txt
echo -n " | block size:" $((8192 * 8 * 2**$a)) "Bytes"
echo "block size:" $((8192 * 8 * 2**$a)) >> out.txt
echo -n " | block size:" $((2048 * 8 * 2**$a)) "Bytes"
echo "block size:" $((2048 * 8 * 2**$a)) >> out.txt
echo -n " | running producer"
#4096//8192;//16384;//16384 //65536 //131072
rosrun esdev esdev_producer _array_size:=$((8192 * 2**$a)) _loop_rate:=$looprate >> out.txt &
#taskset -c 4,5,6,7
rosrun esdev esdev_producer _array_size:=$((2048 * 2**$a)) _loop_rate:=$looprate >> out.txt &
#pid="$pid $!"
pidp=$!
#echo "producer PID" $pidp
sleep 1s
echo -n " | running consumer"
rosrun esdev esdev_consumer >> out.txt &
#taskset -c 4,5,6,7
rosrun esdev esdev_consumer >> out.txt &
#pid="$pid $!"
pidc=$!
#echo "consumer PID" $pidc
sleep 1s
mpstat -P ALL 1 1 >> out.txt
rostopic bw /producer >> out.txt &
pidw=$!
rostopic hz /producer >> out.txt &

65
src/p2c_v1.bash Normal file
View file

@ -0,0 +1,65 @@
echo "starting script"
FILE=out.txt
test -f "$FILE" && echo "deleting former out.txt" && rm "$FILE"
echo "=======NEW BATCH============" >> out.txt
list="100 1000 5000 10000"
for looprate in $list
do
echo "*********** setting loop rate:" $looprate >> out.txt
a=0
until [ $a -gt 3 ]
do
((a++))
echo -n "loop counter:" $a
echo -n " | loop rate:" $looprate "Hz"
echo "loop rate:" $looprate >> out.txt
echo -n " | block size:" $((2048 * 8 * 2**$a)) "Bytes"
echo "block size:" $((2048 * 8 * 2**$a)) >> out.txt
echo -n " | running producer"
#4096//8192;//16384;//16384 //65536 //131072
rosrun esdev esdev_producer _array_size:=$((2048 * 2**$a)) _loop_rate:=$looprate >> out.txt &
#pid="$pid $!"
pidp=$!
#echo "producer PID" $pidp
sleep 1s
echo -n " | running consumer"
rosrun esdev esdev_consumer >> out.txt &
#pid="$pid $!"
pidc=$!
#echo "consumer PID" $pidc
sleep 1s
mpstat -P ALL 1 1 >> out.txt
rostopic bw /producer >> out.txt &
pidw=$!
rostopic hz /producer >> out.txt &
pidz=$!
sleep 5s
echo " | killing processes !"
rosnode kill /consumer
rosnode kill /producer
kill $pidw
kill $pidz
#kill $pidc
#kill $pidp
sleep 1s
echo "============================" >> out.txt
done
done
trap "exit" INT TERM ERR
trap "kill 0" EXIT
sleep 5s
echo "killing all processes"
echo "exiting script"

58
src/pose2ads.cpp Normal file
View file

@ -0,0 +1,58 @@
#include "ros/ros.h"
#include "geometry_msgs/PoseWithCovarianceStamped.h"
#include <iostream>
using namespace std;
double pose_x, pose_y, pose_z, quat_x, quat_y, quat_z, quat_w;
//CALLBACK FOR SUBSCRIBER TO POSE
//--------------------------------
void poseRCVcallback(const geometry_msgs::PoseWithCovarianceStamped::ConstPtr& msg)
{
ROS_INFO_STREAM("Received pose: " << msg);
pose_x = msg->pose.pose.position.x;
pose_y = msg->pose.pose.position.y;
pose_z = msg->pose.pose.position.z;
quat_x = msg->pose.pose.orientation.x;
quat_y = msg->pose.pose.orientation.y;
quat_z = msg->pose.pose.orientation.z;
quat_w = msg->pose.pose.orientation.w;
ROS_INFO_STREAM(pose_x);
ROS_INFO_STREAM(pose_y);
ROS_INFO_STREAM(pose_z);
ROS_INFO_STREAM(quat_x);
ROS_INFO_STREAM(quat_y);
ROS_INFO_STREAM(quat_z);
ROS_INFO_STREAM(quat_w);
//cout << "x=" << poseAMCLx << " | ";
}
//--------------------------------------
// MAIN
//--------------------------------------
int main(int argc, char **argv)
{
cout << "LISTENING" << endl;
ros::init(argc, argv, "pose2ads");
ros::NodeHandle n;
ros::Subscriber sub = n.subscribe("/amcl_pose", 1, poseRCVcallback, ros::TransportHints().tcpNoDelay(true));
/*
ros::Rate loop_rate(20);
while (ros::ok())
{
ros::spinOnce();
loop_rate.sleep();
}//end while
*/
ros::spin();
return 0;
}//end main

805
src/sv_melodic_i7.txt Normal file
View file

@ -0,0 +1,805 @@
=======NEW BATCH============
*********** setting loop rate: 100
loop rate: 100
block size: 32768
loop rate: 100 Hz
block size: 32768 Bytes
requested bandwidth: 3276800 Bytes/s
requested bandwidth: 3 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:42:46 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:42:47 all 22.03 0.00 9.87 0.00 0.00 0.51 0.00 0.00 0.00 67.59
15:42:47 0 22.11 0.00 9.47 0.00 0.00 0.00 0.00 0.00 0.00 68.42
15:42:47 1 22.86 0.00 12.38 0.00 0.00 0.95 0.00 0.00 0.00 63.81
15:42:47 2 18.56 0.00 11.34 0.00 0.00 1.03 0.00 0.00 0.00 69.07
15:42:47 3 25.25 0.00 6.06 0.00 0.00 0.00 0.00 0.00 0.00 68.69
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 22.03 0.00 9.87 0.00 0.00 0.51 0.00 0.00 0.00 67.59
Average: 0 22.11 0.00 9.47 0.00 0.00 0.00 0.00 0.00 0.00 68.42
Average: 1 22.86 0.00 12.38 0.00 0.00 0.95 0.00 0.00 0.00 63.81
Average: 2 18.56 0.00 11.34 0.00 0.00 1.03 0.00 0.00 0.00 69.07
Average: 3 25.25 0.00 6.06 0.00 0.00 0.00 0.00 0.00 0.00 68.69
subscribed to [/producer]
average rate: 100.028
min: 0.000s max: 0.020s std dev: 0.00586s window: 93
average rate: 100.008
min: 0.000s max: 0.020s std dev: 0.00650s window: 193
average rate: 99.999
min: 0.000s max: 0.020s std dev: 0.00672s window: 295
average rate: 99.998
min: 0.000s max: 0.020s std dev: 0.00680s window: 395
average rate: 100.009
min: 0.000s max: 0.020s std dev: 0.00685s window: 495
average rate: 100.012
min: 0.000s max: 0.020s std dev: 0.00684s window: 497
subscribed to [/producer]
average: 3.27MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 93
average: 3.30MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 3.29MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 3.29MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 3.29MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 2.67MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
============================
loop rate: 100
block size: 65536
loop rate: 100 Hz
block size: 65536 Bytes
requested bandwidth: 6553600 Bytes/s
requested bandwidth: 6 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:42:55 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:42:56 all 19.17 0.00 10.36 0.00 0.00 0.52 0.00 0.00 0.00 69.95
15:42:56 0 19.79 0.00 10.42 0.00 0.00 2.08 0.00 0.00 0.00 67.71
15:42:56 1 19.15 0.00 9.57 0.00 0.00 0.00 0.00 0.00 0.00 71.28
15:42:56 2 21.00 0.00 9.00 0.00 0.00 0.00 0.00 0.00 0.00 70.00
15:42:56 3 17.71 0.00 11.46 0.00 0.00 0.00 0.00 0.00 0.00 70.83
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 19.17 0.00 10.36 0.00 0.00 0.52 0.00 0.00 0.00 69.95
Average: 0 19.79 0.00 10.42 0.00 0.00 2.08 0.00 0.00 0.00 67.71
Average: 1 19.15 0.00 9.57 0.00 0.00 0.00 0.00 0.00 0.00 71.28
Average: 2 21.00 0.00 9.00 0.00 0.00 0.00 0.00 0.00 0.00 70.00
Average: 3 17.71 0.00 11.46 0.00 0.00 0.00 0.00 0.00 0.00 70.83
subscribed to [/producer]
average rate: 99.991
min: 0.009s max: 0.010s std dev: 0.00019s window: 100
average rate: 99.997
min: 0.009s max: 0.011s std dev: 0.00019s window: 200
average rate: 99.990
min: 0.009s max: 0.011s std dev: 0.00018s window: 300
average rate: 99.994
min: 0.009s max: 0.011s std dev: 0.00017s window: 400
average rate: 100.006
min: 0.006s max: 0.014s std dev: 0.00038s window: 500
average rate: 100.006
min: 0.006s max: 0.014s std dev: 0.00038s window: 502
subscribed to [/producer]
average: 6.56MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 99
average: 6.62MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 6.61MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 6.61MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 6.60MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 5.05MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
============================
loop rate: 100
block size: 131072
loop rate: 100 Hz
block size: 131072 Bytes
requested bandwidth: 13107200 Bytes/s
requested bandwidth: 13 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:43:05 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:43:06 all 21.83 0.00 8.88 0.00 0.00 1.27 0.00 0.00 0.00 68.02
15:43:06 0 23.71 0.00 6.19 0.00 0.00 0.00 0.00 0.00 0.00 70.10
15:43:06 1 19.80 0.00 12.87 0.00 0.00 2.97 0.00 0.00 0.00 64.36
15:43:06 2 21.78 0.00 10.89 0.00 0.00 1.98 0.00 0.00 0.00 65.35
15:43:06 3 22.11 0.00 5.26 0.00 0.00 0.00 0.00 0.00 0.00 72.63
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 21.83 0.00 8.88 0.00 0.00 1.27 0.00 0.00 0.00 68.02
Average: 0 23.71 0.00 6.19 0.00 0.00 0.00 0.00 0.00 0.00 70.10
Average: 1 19.80 0.00 12.87 0.00 0.00 2.97 0.00 0.00 0.00 64.36
Average: 2 21.78 0.00 10.89 0.00 0.00 1.98 0.00 0.00 0.00 65.35
Average: 3 22.11 0.00 5.26 0.00 0.00 0.00 0.00 0.00 0.00 72.63
subscribed to [/producer]
average rate: 100.015
min: 0.009s max: 0.011s std dev: 0.00028s window: 95
average rate: 100.016
min: 0.009s max: 0.011s std dev: 0.00025s window: 195
average rate: 100.005
min: 0.009s max: 0.011s std dev: 0.00024s window: 295
average rate: 100.006
min: 0.009s max: 0.011s std dev: 0.00023s window: 395
average rate: 100.015
min: 0.009s max: 0.011s std dev: 0.00022s window: 495
average rate: 100.014
min: 0.009s max: 0.011s std dev: 0.00022s window: 500
subscribed to [/producer]
average: 13.25MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 13.18MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 13.16MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 13.14MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 13.13MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 10.30MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
============================
loop rate: 100
block size: 262144
loop rate: 100 Hz
block size: 262144 Bytes
requested bandwidth: 26214400 Bytes/s
requested bandwidth: 26 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:43:15 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:43:16 all 22.48 0.00 14.29 0.00 0.00 1.41 0.00 0.00 0.00 61.83
15:43:16 0 22.33 0.00 13.59 0.00 0.00 1.94 0.00 0.00 0.00 62.14
15:43:16 1 24.07 0.00 12.96 0.00 0.00 0.93 0.00 0.00 0.00 62.04
15:43:16 2 24.55 0.00 13.64 0.91 0.00 0.91 0.00 0.00 0.00 60.00
15:43:16 3 18.87 0.00 17.92 0.00 0.00 0.94 0.00 0.00 0.00 62.26
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 22.48 0.00 14.29 0.00 0.00 1.41 0.00 0.00 0.00 61.83
Average: 0 22.33 0.00 13.59 0.00 0.00 1.94 0.00 0.00 0.00 62.14
Average: 1 24.07 0.00 12.96 0.00 0.00 0.93 0.00 0.00 0.00 62.04
Average: 2 24.55 0.00 13.64 0.91 0.00 0.91 0.00 0.00 0.00 60.00
Average: 3 18.87 0.00 17.92 0.00 0.00 0.94 0.00 0.00 0.00 62.26
subscribed to [/producer]
average rate: 100.005
min: 0.009s max: 0.011s std dev: 0.00026s window: 99
average rate: 100.009
min: 0.009s max: 0.011s std dev: 0.00028s window: 200
average rate: 100.008
min: 0.009s max: 0.011s std dev: 0.00026s window: 300
average rate: 100.006
min: 0.009s max: 0.011s std dev: 0.00027s window: 400
average rate: 100.017
min: 0.009s max: 0.011s std dev: 0.00026s window: 500
average rate: 100.014
min: 0.009s max: 0.011s std dev: 0.00026s window: 507
subscribed to [/producer]
average: 26.45MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 95
average: 26.45MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 26.41MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 26.39MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 25.59MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 21.15MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
============================
*********** setting loop rate: 1000
loop rate: 1000
block size: 32768
loop rate: 1000 Hz
block size: 32768 Bytes
requested bandwidth: 32768000 Bytes/s
requested bandwidth: 32 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:43:25 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:43:26 all 21.89 0.00 10.81 0.00 0.00 0.54 0.00 0.00 0.00 66.76
15:43:26 0 23.91 0.00 11.96 0.00 0.00 0.00 0.00 0.00 0.00 64.13
15:43:26 1 19.57 0.00 9.78 0.00 0.00 1.09 0.00 0.00 0.00 69.57
15:43:26 2 23.33 0.00 7.78 0.00 0.00 0.00 0.00 0.00 0.00 68.89
15:43:26 3 21.05 0.00 12.63 0.00 0.00 1.05 0.00 0.00 0.00 65.26
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 21.89 0.00 10.81 0.00 0.00 0.54 0.00 0.00 0.00 66.76
Average: 0 23.91 0.00 11.96 0.00 0.00 0.00 0.00 0.00 0.00 64.13
Average: 1 19.57 0.00 9.78 0.00 0.00 1.09 0.00 0.00 0.00 69.57
Average: 2 23.33 0.00 7.78 0.00 0.00 0.00 0.00 0.00 0.00 68.89
Average: 3 21.05 0.00 12.63 0.00 0.00 1.05 0.00 0.00 0.00 65.26
subscribed to [/producer]
average rate: 991.559
min: 0.000s max: 0.007s std dev: 0.00090s window: 939
average rate: 995.379
min: 0.000s max: 0.007s std dev: 0.00085s window: 1940
average rate: 994.499
min: 0.000s max: 0.007s std dev: 0.00085s window: 2934
average rate: 995.273
min: 0.000s max: 0.007s std dev: 0.00084s window: 3936
average rate: 993.909
min: 0.000s max: 0.010s std dev: 0.00084s window: 4927
average rate: 993.972
min: 0.000s max: 0.010s std dev: 0.00084s window: 4988
subscribed to [/producer]
average: 32.85MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 33.20MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 32.89MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 33.16MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 32.34MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 3.84MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
============================
loop rate: 1000
block size: 65536
loop rate: 1000 Hz
block size: 65536 Bytes
requested bandwidth: 65536000 Bytes/s
requested bandwidth: 65 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:43:35 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:43:36 all 21.04 0.00 22.29 0.00 0.00 6.04 0.00 0.00 0.00 50.62
15:43:36 0 20.33 0.00 24.39 0.00 0.00 5.69 0.00 0.00 0.00 49.59
15:43:36 1 22.81 0.00 18.42 0.00 0.00 5.26 0.00 0.00 0.00 53.51
15:43:36 2 21.49 0.00 21.49 0.00 0.00 4.96 0.00 0.00 0.00 52.07
15:43:36 3 20.00 0.00 24.00 0.00 0.00 8.80 0.00 0.00 0.00 47.20
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 21.04 0.00 22.29 0.00 0.00 6.04 0.00 0.00 0.00 50.62
Average: 0 20.33 0.00 24.39 0.00 0.00 5.69 0.00 0.00 0.00 49.59
Average: 1 22.81 0.00 18.42 0.00 0.00 5.26 0.00 0.00 0.00 53.51
Average: 2 21.49 0.00 21.49 0.00 0.00 4.96 0.00 0.00 0.00 52.07
Average: 3 20.00 0.00 24.00 0.00 0.00 8.80 0.00 0.00 0.00 47.20
subscribed to [/producer]
average: 65.83MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 65.03MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 65.84MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 65.43MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 65.63MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 18.94MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
subscribed to [/producer]
average rate: 998.182
min: 0.000s max: 0.006s std dev: 0.00062s window: 949
average rate: 994.233
min: 0.000s max: 0.006s std dev: 0.00060s window: 1941
average rate: 993.485
min: 0.000s max: 0.006s std dev: 0.00061s window: 2935
average rate: 994.439
min: 0.000s max: 0.008s std dev: 0.00061s window: 3937
average rate: 991.346
min: 0.000s max: 0.010s std dev: 0.00063s window: 4919
average rate: 991.371
min: 0.000s max: 0.010s std dev: 0.00063s window: 4937
============================
loop rate: 1000
block size: 131072
loop rate: 1000 Hz
block size: 131072 Bytes
requested bandwidth: 131072000 Bytes/s
requested bandwidth: 131 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:43:45 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:43:46 all 23.80 0.00 8.22 0.00 0.00 0.85 0.00 0.00 0.00 67.14
15:43:46 0 22.35 0.00 5.88 0.00 0.00 0.00 0.00 0.00 0.00 71.76
15:43:46 1 23.86 0.00 9.09 0.00 0.00 0.00 0.00 0.00 0.00 67.05
15:43:46 2 26.67 0.00 5.56 0.00 0.00 1.11 0.00 0.00 0.00 66.67
15:43:46 3 22.73 0.00 11.36 0.00 0.00 1.14 0.00 0.00 0.00 64.77
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 23.80 0.00 8.22 0.00 0.00 0.85 0.00 0.00 0.00 67.14
Average: 0 22.35 0.00 5.88 0.00 0.00 0.00 0.00 0.00 0.00 71.76
Average: 1 23.86 0.00 9.09 0.00 0.00 0.00 0.00 0.00 0.00 67.05
Average: 2 26.67 0.00 5.56 0.00 0.00 1.11 0.00 0.00 0.00 66.67
Average: 3 22.73 0.00 11.36 0.00 0.00 1.14 0.00 0.00 0.00 64.77
subscribed to [/producer]
average rate: 989.663
min: 0.000s max: 0.012s std dev: 0.00072s window: 940
average rate: 994.380
min: 0.000s max: 0.012s std dev: 0.00068s window: 1940
average rate: 993.502
min: 0.000s max: 0.012s std dev: 0.00068s window: 2932
average rate: 990.501
min: 0.000s max: 0.013s std dev: 0.00071s window: 3919
average rate: 986.503
min: 0.000s max: 0.013s std dev: 0.00074s window: 4892
average rate: 986.723
min: 0.000s max: 0.013s std dev: 0.00074s window: 4978
subscribed to [/producer]
average: 130.13MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 132.35MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 131.76MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 131.59MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 132.61MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 32.64MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
============================
loop rate: 1000
block size: 262144
loop rate: 1000 Hz
block size: 262144 Bytes
requested bandwidth: 262144000 Bytes/s
requested bandwidth: 262 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:43:54 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:43:55 all 22.17 0.00 27.39 0.00 0.00 3.04 0.00 0.00 0.00 47.39
15:43:55 0 22.50 0.00 30.00 0.00 0.00 2.50 0.00 0.00 0.00 45.00
15:43:55 1 18.26 0.00 30.43 0.00 0.00 3.48 0.00 0.00 0.00 47.83
15:43:55 2 23.42 0.00 25.23 0.00 0.00 1.80 0.00 0.00 0.00 49.55
15:43:55 3 25.23 0.00 23.42 0.00 0.00 2.70 0.00 0.00 0.00 48.65
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 22.17 0.00 27.39 0.00 0.00 3.04 0.00 0.00 0.00 47.39
Average: 0 22.50 0.00 30.00 0.00 0.00 2.50 0.00 0.00 0.00 45.00
Average: 1 18.26 0.00 30.43 0.00 0.00 3.48 0.00 0.00 0.00 47.83
Average: 2 23.42 0.00 25.23 0.00 0.00 1.80 0.00 0.00 0.00 49.55
Average: 3 25.23 0.00 23.42 0.00 0.00 2.70 0.00 0.00 0.00 48.65
subscribed to [/producer]
average: 267.39MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 257.53MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 259.09MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 261.01MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 227.57MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 30.83MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
subscribed to [/producer]
average rate: 989.654
min: 0.000s max: 0.008s std dev: 0.00072s window: 937
average rate: 988.326
min: 0.000s max: 0.010s std dev: 0.00071s window: 1925
average rate: 988.275
min: 0.000s max: 0.010s std dev: 0.00073s window: 2916
average rate: 989.124
min: 0.000s max: 0.010s std dev: 0.00074s window: 3908
average rate: 985.535
min: 0.000s max: 0.013s std dev: 0.00079s window: 4884
average rate: 985.869
min: 0.000s max: 0.013s std dev: 0.00078s window: 5007
============================
*********** setting loop rate: 5000
loop rate: 5000
block size: 32768
loop rate: 5000 Hz
block size: 32768 Bytes
requested bandwidth: 163840000 Bytes/s
requested bandwidth: 163 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:44:05 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:44:06 all 31.66 0.00 15.83 0.53 0.00 1.85 0.00 0.00 0.00 50.13
15:44:06 0 32.97 0.00 13.19 0.00 0.00 1.10 0.00 0.00 0.00 52.75
15:44:06 1 27.84 0.00 19.59 0.00 0.00 2.06 0.00 0.00 0.00 50.52
15:44:06 2 34.00 0.00 16.00 2.00 0.00 2.00 0.00 0.00 0.00 46.00
15:44:06 3 30.77 0.00 15.38 0.00 0.00 1.10 0.00 0.00 0.00 52.75
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 31.66 0.00 15.83 0.53 0.00 1.85 0.00 0.00 0.00 50.13
Average: 0 32.97 0.00 13.19 0.00 0.00 1.10 0.00 0.00 0.00 52.75
Average: 1 27.84 0.00 19.59 0.00 0.00 2.06 0.00 0.00 0.00 50.52
Average: 2 34.00 0.00 16.00 2.00 0.00 2.00 0.00 0.00 0.00 46.00
Average: 3 30.77 0.00 15.38 0.00 0.00 1.10 0.00 0.00 0.00 52.75
subscribed to [/producer]
average: 147.72MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 99.01MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 134.25MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 154.23MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 138.29MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 11.24MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
subscribed to [/producer]
average rate: 4420.777
min: 0.000s max: 0.009s std dev: 0.00034s window: 4181
average rate: 4380.584
min: 0.000s max: 0.009s std dev: 0.00034s window: 8538
average rate: 4374.608
min: 0.000s max: 0.014s std dev: 0.00035s window: 12895
average rate: 4390.020
min: 0.000s max: 0.014s std dev: 0.00036s window: 17382
average rate: 4383.524
min: 0.000s max: 0.014s std dev: 0.00036s window: 21748
average rate: 4321.123
min: 0.000s max: 0.044s std dev: 0.00048s window: 22055
============================
loop rate: 5000
block size: 65536
loop rate: 5000 Hz
block size: 65536 Bytes
requested bandwidth: 327680000 Bytes/s
requested bandwidth: 327 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:44:14 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:44:15 all 31.58 0.00 17.63 0.53 0.00 2.11 0.00 0.00 0.00 48.16
15:44:15 0 32.32 0.00 18.18 0.00 0.00 4.04 0.00 0.00 0.00 45.45
15:44:15 1 31.91 0.00 20.21 1.06 0.00 0.00 0.00 0.00 0.00 46.81
15:44:15 2 31.52 0.00 16.30 0.00 0.00 2.17 0.00 0.00 0.00 50.00
15:44:15 3 29.79 0.00 17.02 0.00 0.00 2.13 0.00 0.00 0.00 51.06
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 31.58 0.00 17.63 0.53 0.00 2.11 0.00 0.00 0.00 48.16
Average: 0 32.32 0.00 18.18 0.00 0.00 4.04 0.00 0.00 0.00 45.45
Average: 1 31.91 0.00 20.21 1.06 0.00 0.00 0.00 0.00 0.00 46.81
Average: 2 31.52 0.00 16.30 0.00 0.00 2.17 0.00 0.00 0.00 50.00
Average: 3 29.79 0.00 17.02 0.00 0.00 2.13 0.00 0.00 0.00 51.06
subscribed to [/producer]
average rate: 4379.265
min: 0.000s max: 0.010s std dev: 0.00033s window: 4361
average rate: 4328.124
min: 0.000s max: 0.010s std dev: 0.00035s window: 8658
average rate: 4321.438
min: 0.000s max: 0.010s std dev: 0.00036s window: 12986
average rate: 4327.577
min: 0.000s max: 0.015s std dev: 0.00038s window: 17355
average rate: 4260.429
min: 0.000s max: 0.015s std dev: 0.00039s window: 21375
average rate: 4252.846
min: 0.000s max: 0.015s std dev: 0.00040s window: 22255
subscribed to [/producer]
average: 307.76MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 291.95MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 264.60MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 288.07MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 275.78MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 22.67MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
============================
loop rate: 5000
block size: 131072
loop rate: 5000 Hz
block size: 131072 Bytes
requested bandwidth: 655360000 Bytes/s
requested bandwidth: 655 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:44:25 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:44:26 all 34.82 0.00 21.73 0.00 0.00 2.09 0.00 0.00 0.00 41.36
15:44:26 0 37.11 0.00 20.62 0.00 0.00 2.06 0.00 0.00 0.00 40.21
15:44:26 1 38.61 0.00 22.77 0.00 0.00 1.98 0.00 0.00 0.00 36.63
15:44:26 2 29.03 0.00 24.73 0.00 0.00 4.30 0.00 0.00 0.00 41.94
15:44:26 3 34.74 0.00 18.95 0.00 0.00 1.05 0.00 0.00 0.00 45.26
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 34.82 0.00 21.73 0.00 0.00 2.09 0.00 0.00 0.00 41.36
Average: 0 37.11 0.00 20.62 0.00 0.00 2.06 0.00 0.00 0.00 40.21
Average: 1 38.61 0.00 22.77 0.00 0.00 1.98 0.00 0.00 0.00 36.63
Average: 2 29.03 0.00 24.73 0.00 0.00 4.30 0.00 0.00 0.00 41.94
Average: 3 34.74 0.00 18.95 0.00 0.00 1.05 0.00 0.00 0.00 45.26
subscribed to [/producer]
average: 425.89MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 508.83MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 518.20MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 416.88MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 485.55MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 46.26MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
subscribed to [/producer]
average rate: 3728.485
min: 0.000s max: 0.008s std dev: 0.00038s window: 3709
average rate: 3784.633
min: 0.000s max: 0.009s std dev: 0.00038s window: 7566
average rate: 3756.578
min: 0.000s max: 0.012s std dev: 0.00042s window: 11281
average rate: 3738.628
min: 0.000s max: 0.012s std dev: 0.00041s window: 14994
average rate: 3637.043
min: 0.000s max: 0.012s std dev: 0.00043s window: 18252
average rate: 3649.013
min: 0.000s max: 0.012s std dev: 0.00043s window: 19391
============================
loop rate: 5000
block size: 262144
loop rate: 5000 Hz
block size: 262144 Bytes
requested bandwidth: 1310720000 Bytes/s
requested bandwidth: 1310 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:44:35 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:44:36 all 42.03 0.00 24.81 0.25 0.00 2.78 0.00 0.00 0.00 30.13
15:44:36 0 42.86 0.00 28.57 0.00 0.00 2.04 0.00 0.00 0.00 26.53
15:44:36 1 36.00 0.00 31.00 0.00 0.00 2.00 0.00 0.00 0.00 31.00
15:44:36 2 43.88 0.00 21.43 0.00 0.00 4.08 0.00 0.00 0.00 30.61
15:44:36 3 46.00 0.00 19.00 0.00 0.00 3.00 0.00 0.00 0.00 32.00
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 42.03 0.00 24.81 0.25 0.00 2.78 0.00 0.00 0.00 30.13
Average: 0 42.86 0.00 28.57 0.00 0.00 2.04 0.00 0.00 0.00 26.53
Average: 1 36.00 0.00 31.00 0.00 0.00 2.00 0.00 0.00 0.00 31.00
Average: 2 43.88 0.00 21.43 0.00 0.00 4.08 0.00 0.00 0.00 30.61
Average: 3 46.00 0.00 19.00 0.00 0.00 3.00 0.00 0.00 0.00 32.00
subscribed to [/producer]
average rate: 1834.063
min: 0.000s max: 0.008s std dev: 0.00053s window: 1732
average rate: 1808.516
min: 0.000s max: 0.012s std dev: 0.00061s window: 3519
average rate: 1790.986
min: 0.000s max: 0.017s std dev: 0.00070s window: 5281
average rate: 1803.932
min: 0.000s max: 0.017s std dev: 0.00066s window: 7121
average rate: 1736.592
min: 0.000s max: 0.018s std dev: 0.00077s window: 8611
average rate: 1746.299
min: 0.000s max: 0.018s std dev: 0.00078s window: 9068
subscribed to [/producer]
average: 471.87MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 445.65MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 449.62MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 492.33MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 553.82MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 84.51MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
============================
*********** setting loop rate: 10000
loop rate: 10000
block size: 32768
loop rate: 10000 Hz
block size: 32768 Bytes
requested bandwidth: 327680000 Bytes/s
requested bandwidth: 327 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:44:45 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:44:46 all 35.88 0.00 21.11 0.00 0.00 1.85 0.00 0.00 0.00 41.16
15:44:46 0 33.68 0.00 23.16 0.00 0.00 2.11 0.00 0.00 0.00 41.05
15:44:46 1 36.46 0.00 20.83 0.00 0.00 2.08 0.00 0.00 0.00 40.62
15:44:46 2 33.68 0.00 23.16 0.00 0.00 1.05 0.00 0.00 0.00 42.11
15:44:46 3 40.22 0.00 16.30 0.00 0.00 2.17 0.00 0.00 0.00 41.30
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 35.88 0.00 21.11 0.00 0.00 1.85 0.00 0.00 0.00 41.16
Average: 0 33.68 0.00 23.16 0.00 0.00 2.11 0.00 0.00 0.00 41.05
Average: 1 36.46 0.00 20.83 0.00 0.00 2.08 0.00 0.00 0.00 40.62
Average: 2 33.68 0.00 23.16 0.00 0.00 1.05 0.00 0.00 0.00 42.11
Average: 3 40.22 0.00 16.30 0.00 0.00 2.17 0.00 0.00 0.00 41.30
subscribed to [/producer]
average: 298.19MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 229.92MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 307.01MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 275.21MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 247.15MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
average: 12.23MB/s
mean: 0.03MB min: 0.03MB max: 0.03MB window: 100
subscribed to [/producer]
average rate: 8173.239
min: 0.000s max: 0.017s std dev: 0.00030s window: 8126
average rate: 8218.362
min: 0.000s max: 0.017s std dev: 0.00025s window: 16430
average rate: 8294.146
min: 0.000s max: 0.017s std dev: 0.00025s window: 24939
average rate: 8245.128
min: 0.000s max: 0.017s std dev: 0.00026s window: 33115
average rate: 8060.169
min: 0.000s max: 0.022s std dev: 0.00032s window: 40538
average rate: 8040.331
min: 0.000s max: 0.022s std dev: 0.00033s window: 41394
============================
loop rate: 10000
block size: 65536
loop rate: 10000 Hz
block size: 65536 Bytes
requested bandwidth: 655360000 Bytes/s
requested bandwidth: 655 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:44:55 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:44:56 all 35.54 0.00 26.53 0.00 0.00 2.65 0.00 0.00 0.00 35.28
15:44:56 0 33.33 0.00 28.12 0.00 0.00 2.08 0.00 0.00 0.00 36.46
15:44:56 1 31.18 0.00 30.11 0.00 0.00 4.30 0.00 0.00 0.00 34.41
15:44:56 2 39.78 0.00 23.66 0.00 0.00 2.15 0.00 0.00 0.00 34.41
15:44:56 3 38.71 0.00 23.66 0.00 0.00 2.15 0.00 0.00 0.00 35.48
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 35.54 0.00 26.53 0.00 0.00 2.65 0.00 0.00 0.00 35.28
Average: 0 33.33 0.00 28.12 0.00 0.00 2.08 0.00 0.00 0.00 36.46
Average: 1 31.18 0.00 30.11 0.00 0.00 4.30 0.00 0.00 0.00 34.41
Average: 2 39.78 0.00 23.66 0.00 0.00 2.15 0.00 0.00 0.00 34.41
Average: 3 38.71 0.00 23.66 0.00 0.00 2.15 0.00 0.00 0.00 35.48
subscribed to [/producer]
average: 192.51MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 342.20MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 484.25MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 247.05MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 543.34MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
average: 23.81MB/s
mean: 0.07MB min: 0.07MB max: 0.07MB window: 100
subscribed to [/producer]
average rate: 5802.214
min: 0.000s max: 0.021s std dev: 0.00056s window: 5504
average rate: 6247.071
min: 0.000s max: 0.021s std dev: 0.00044s window: 12184
average rate: 6068.726
min: 0.000s max: 0.021s std dev: 0.00043s window: 17940
average rate: 6020.825
min: 0.000s max: 0.021s std dev: 0.00040s window: 23856
average rate: 5858.997
min: 0.000s max: 0.021s std dev: 0.00041s window: 29146
average rate: 5842.699
min: 0.000s max: 0.021s std dev: 0.00042s window: 30910
============================
loop rate: 10000
block size: 131072
loop rate: 10000 Hz
block size: 131072 Bytes
requested bandwidth: 1310720000 Bytes/s
requested bandwidth: 1310 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:45:06 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:45:07 all 43.39 0.00 25.93 0.00 0.00 3.17 0.00 0.00 0.00 27.51
15:45:07 0 41.67 0.00 25.00 0.00 0.00 5.21 0.00 0.00 0.00 28.12
15:45:07 1 45.36 0.00 26.80 0.00 0.00 1.03 0.00 0.00 0.00 26.80
15:45:07 2 42.39 0.00 27.17 0.00 0.00 3.26 0.00 0.00 0.00 27.17
15:45:07 3 44.44 0.00 24.44 0.00 0.00 2.22 0.00 0.00 0.00 28.89
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 43.39 0.00 25.93 0.00 0.00 3.17 0.00 0.00 0.00 27.51
Average: 0 41.67 0.00 25.00 0.00 0.00 5.21 0.00 0.00 0.00 28.12
Average: 1 45.36 0.00 26.80 0.00 0.00 1.03 0.00 0.00 0.00 26.80
Average: 2 42.39 0.00 27.17 0.00 0.00 3.26 0.00 0.00 0.00 27.17
Average: 3 44.44 0.00 24.44 0.00 0.00 2.22 0.00 0.00 0.00 28.89
subscribed to [/producer]
average: 441.43MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 593.35MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 591.56MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 489.21MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 501.49MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
average: 42.07MB/s
mean: 0.13MB min: 0.13MB max: 0.13MB window: 100
subscribed to [/producer]
average rate: 3538.667
min: 0.000s max: 0.009s std dev: 0.00037s window: 3503
average rate: 3573.752
min: 0.000s max: 0.014s std dev: 0.00043s window: 7132
average rate: 3668.009
min: 0.000s max: 0.015s std dev: 0.00044s window: 10990
average rate: 3639.183
min: 0.000s max: 0.015s std dev: 0.00044s window: 14577
average rate: 3547.107
min: 0.000s max: 0.015s std dev: 0.00048s window: 17764
average rate: 3573.963
min: 0.000s max: 0.015s std dev: 0.00047s window: 19253
============================
loop rate: 10000
block size: 262144
loop rate: 10000 Hz
block size: 262144 Bytes
requested bandwidth: 2621440000 Bytes/s
requested bandwidth: 2621 MBytes/s
PUBLISHING LOOP ON
LISTENING
Linux 5.4.0-70-generic (E6520) 31/03/21 _x86_64_ (4 CPU)
15:45:16 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:45:17 all 45.97 0.00 34.29 0.26 0.00 3.38 0.00 0.00 0.00 16.10
15:45:17 0 47.31 0.00 26.88 0.00 0.00 2.15 0.00 0.00 0.00 23.66
15:45:17 1 40.21 0.00 42.27 0.00 0.00 4.12 0.00 0.00 0.00 13.40
15:45:17 2 46.39 0.00 36.08 0.00 0.00 3.09 0.00 0.00 0.00 14.43
15:45:17 3 50.51 0.00 31.31 1.01 0.00 4.04 0.00 0.00 0.00 13.13
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 45.97 0.00 34.29 0.26 0.00 3.38 0.00 0.00 0.00 16.10
Average: 0 47.31 0.00 26.88 0.00 0.00 2.15 0.00 0.00 0.00 23.66
Average: 1 40.21 0.00 42.27 0.00 0.00 4.12 0.00 0.00 0.00 13.40
Average: 2 46.39 0.00 36.08 0.00 0.00 3.09 0.00 0.00 0.00 14.43
Average: 3 50.51 0.00 31.31 1.01 0.00 4.04 0.00 0.00 0.00 13.13
subscribed to [/producer]
average rate: 1678.509
min: 0.000s max: 0.024s std dev: 0.00092s window: 1587
average rate: 1710.908
min: 0.000s max: 0.024s std dev: 0.00082s window: 3332
average rate: 1721.681
min: 0.000s max: 0.024s std dev: 0.00079s window: 5079
average rate: 1707.433
min: 0.000s max: 0.024s std dev: 0.00080s window: 6755
average rate: 1639.903
min: 0.000s max: 0.024s std dev: 0.00087s window: 8143
average rate: 1647.188
min: 0.000s max: 0.024s std dev: 0.00087s window: 8625
subscribed to [/producer]
average: 421.21MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 308.63MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 374.44MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 522.90MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 510.71MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
average: 79.43MB/s
mean: 0.26MB min: 0.26MB max: 0.26MB window: 100
============================