chip updates: more ROS, updates on nodes and structure [updates]
So while I said I'd only write one ROS Node a day, I got bored and we wrote three? Four? Anyways... that was yesterday. Here's what the plan is for today.
Today we're going to start getting CHIP Moving again by integrating the joystick to do the following functions. If we press the A button, we get chip to stand, B is sit. For now, that's all I really want to do because I don't think I want to play with the IMU just yet. My brother is still working on that program to enable/disable the robot. We can also work on the Legs_Loaded node today if all goes well.
So this is what we achieved today. I'm not going to go through step-by-step the code for everything that's happening here (line-by-line that is), but I'll include a block diagram on the ROS system that makes this work. When we do real documentation of the project we'll explain everything.
So here, above, is the full ROS system that's currently written:
RIO_DATA_READ, take in data from the RoboRIO over network tables and publishes it as three topics to the ROS network.
RIO_WRITE_NODE, takes data from the ROS network and writes it over network tables to the RoboRIO.
CoG Node, takes in the THETAS and uses a model of the robot (some helper libraries we wrote) to calculate the CoG of the robot WITH RESPECT TO THE IMU and publishes that as CoG.
The MAVROS node, takes in Data from the Ardupilot and publishes it to the ROS Network.
The Joy Node, takes in data from the joystick and publishes it to the ROS network.
And CHIP MASTER, at the moment, takes in joystick info, and converts button presses into the set point command for sit and stand, and writes them to SETPOINT.
From the video above, you aren't seeing all of the above network in action, only the following portion:
This portion is making the robot sit and stand at the moment. We do need a few things going forward before we can proceed through. These aren't needed now but we will need them soon.
(1) We need to be able to set the SPEED of the legs.
(2) We need to convert the XYZ locations of the feet to XYZ positions with respect to the IMU coordinate frame.