roboticslab-uc3m / mindrove-ros2-driver

0 stars 1 forks source link

MindRove connecting to Robot #1

Closed justinlxiang closed 1 month ago

justinlxiang commented 2 months ago

Hi, I am trying to connect the MindRove to a robot called the Turtlebot4. The robot is not connecting directly to the armband like other computers do, so I am wondering how you connected your Mindrove to be able to control a robot. I am trying to move a robot with gesture recognition and have a ROS2 architecture for taking in the armband data live and classifying a gesture, but I am not sure how I can communicate with the robot without running this program on the robot's computer.

Any advice?

Thank you, Justin

imontesino commented 2 months ago

I am not sure if I understand correctly. You want to use the classified gestures to control a robot? Does all the software need to run in the turtle bots computer or can you run the classification in a laptop?

If you can run it on two computers, you could simply write a publisher that send the classified gesture to the robot via ROS2.

This repo is intended to simplify the transimision of the EMG data recorded in by the mindrove via ROS2 topics. You can then use subscriber to pick up that data and classify the gestures, in our case we have that code in roboticslab-uc3m/mindrove-gesture-recognition.

Were you run each node is up to you and the architecture of your system. An example would be

flowchart LR
  driver((emg_publisher)) 
  emgTopic[mindrove/emg]
  classifier((gesture_clasifier))
  gestureTopic[mindrove/gesture]
  robot((robot_controller))
  driver --> emgTopic
  emgTopic --> classifier
  classifier --> gestureTopic
  gestureTopic --> robot

Where emg_publisher and gesture_clasifier could run in a laptop separate from the robot.

justinlxiang commented 2 months ago

Yes I understand, but to communicate with the Turtlebot4 robot my computer and the robot need to be on the same WiFi. So my computer can connect to Mindrove but the Turtlebot cannot. Even if it could, I noticed the Mindrove doesn’t register any data when two devices are connected to it. So I have a special case where my robot isn’t connecting to the Mindrove, and I am wondering how I would be able to command the robot if my computer is on Mindrove’s WiFi and my robot must be on some other WiFi.