utahrobotics / usr-ws-2023

Codebase (and other dependencies) for running our candidate for the 2023 competition
3 stars 1 forks source link

Lunabase ROS Implementation #5

Open manglemix opened 2 years ago

manglemix commented 2 years ago

What must be done Currently, Lunabase is implemented in the Godot game engine, which is a little overkill for its purposes. It is also redundant as ROS 2 already has an application to visualize data: rqt. To make Lunabase more future proof, and to promote code reuse, we shall implement a server node in ROS that can communicate to the telemetry nodes in the robot. The node will simply convert received messages into the proper ROS 2 messages, which rqt will interpret as if it was running on the actual robot. The local_gamepad_input node can also be leveraged here so that the server node can transmit MovementIntent messages to the robot.

For now, telemetry does not send any sensor data, so the server node just needs to listen to pings and log them. Logs can then be viewed in rqt. This server node must be implemented inside of the lunabase package, which as of writing has not been created. This package must be a pure python package. You are encouraged to use and add-on to the message_handler.py script in telemetry to accomplish this task. This way, messages can be consistently handled whether it be on the bot or on Lunabase

Existing 3rd party solutions Since our telemetry node(s) were developed in-house, we will also need to develop the server ourselves as well

Existing internal solutions This was not done last year, so we have no references for it

Quirks or Specifics This task should be decently challenging, but we already have a tcp_client.py script to refer to, so you guys should be fine.

tfhammond commented 2 years ago

Is the Lunabase server node publishing messages too or just receiving them?

manglemix commented 2 years ago

The lunabase node will receive wireless messages from lunabot and convert them into ROS messages that it will publish locally. The lunabase node will also need to listen to movement_intent messages and transmit them to lunabot