Robotics StackExchange | Archived questions

Rosserial arduino MultiArray subscriber ploblem.

I'm running an Arduino board with rosserial that connects to raspberry pi board and connects with my laptop running Matlab Simulink rosnode that publishing Joystick data ( 0 or 1 when moving joystick analog) using UInt64MultiArray. Matlab rosnode can send data into ros network when I check with rostopic echo. but when I run Arduino, it didn't respond with the data I send and error like this Lost sync with device, restarting.

this is rostopic echo data.

Layout     
Dim           
DataOffset :  0
Data   :  [1, 0, 0, 0, 0, 0, 0, 0]

this is the code I wrote.

#include <ros.h>
#include <std_msgs/UInt64MultiArray.h>

ros::NodeHandle  nh;

void messageCb( const std_msgs::UInt64MultiArray& JOY){

digitalWrite(2,JOY.data[0]);
digitalWrite(3,JOY.data[1]);
digitalWrite(4,JOY.data[2]);
digitalWrite(5,JOY.data[3]);
digitalWrite(6,JOY.data[4]);
digitalWrite(7,JOY.data[5]);
digitalWrite(8,JOY.data[6]);
digitalWrite(9,JOY.data[7]);

}

ros::Subscriber<std_msgs::UInt64MultiArray> sub("JOY", &messageCb );

void setup()
{ 
Serial.begin(9600);
nh.getHardware()->setBaud(9600);

pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);

nh.initNode();
nh.subscribe(sub);
}

void loop()
{  
nh.spinOnce();
delay(10);
 }

i'm using Arduino uno (ATMEGA328P) and raspberry pi 4 model B (4 gb RAM) with ubuntu 20.04 with ros noetic.

Asked by CHA42 on 2022-02-19 02:28:07 UTC

Comments

Answers