Brushless ROS - umrover/mrover-ros GitHub Wiki

Context: On our rover, we have brushless motors. We control them using brushless motor controllers called Moteus.

ESW System 2024 drawio

Problem: We need to write ROS programs that communicate with these brushless motor controllers. Teleop will ask ESW to move the joints/motors, and ESW's ROS node needs to tell eventually communicate to the motors over CAN about how to reach that target (target velocity or target position).

Solution:

  • Develop all the ROS software in C++.
  • Implement the bridge software
  • Implement the motor_library library software for the brushless side only
  • Implement the CAN node (technically a separate project but it is very closely related)

Interface:

  • There is currently not a good description of the interface since it is still in the works of being developed
  • However, we can expect the ROS node to be able to do the following: Send velocity commands in terms of rad/s. Receive and process angular data based on encoder/hall effector sensor data. More.
  • See the below picture to see how the software that you are writing fits into the bigger picture

ESW Software drawio

Rough Steps To Get Started:

  • Get the developer kit running using the GUI
  • Talk to the moteus with a C++ testing file (either move at a certain velocity, or continuously print out angles)
  • Integrate software with rest of actual brushless motor control
  • Need to see how to send the moteus commands as raw commands