scout updates: getting a roborio UPDATED SCOUT CONTROL SYSTEM [updates]
Okay I've caved. In the interest of getting this robot to work without me losing my mind I've just ordered a National Instruments roboRIO controller form Andymark. Now this post is the breakdown of why we did this and what the plan is now that we have.
Here's the thing. The motors were chosen because they were designed for robotics and they interface really well with the gearboxes to give us really nice actuators to work with without doing too much design. The motor controllers were chosen because they have in-built PID position control specifically for the motors we got already implemented in the system. We don't need to write the position control which is fantastic, and very rare. We could make this project about designing new control algorithms and re-writing CAN, we really want is to make a platform we and others can use. SIMPLY using things that already exist. Which is why all the above components were chosen. The ISSUE with the above components is they're all FRC components they were designed to work with FRC, the libraries, algorithms, the control loops all were designed to work over FRC CAN - which means we need an FRC CAN Network, which the REV CAN Bridge as we saw in the last post possibly can emulate but we have no idea if it can for sure. What that means, is we need to go to the controller where we KNOW that the CAN system will work with the REV controllers - that's the NI roboRIO.
So the new plan, and hopefully the final plan, is to use the NI roboRIO for control and communications of the motors so we don't need to worry about implementing CAN it's just plug-and-play after the setup. Then we can connect the roboRIO and the Jetson TX1 over ethernet and send signals to control the robot's motions. The Jetson TX1 does all the processing and direction. The roboRIO controls all walking functions. Here's the software/hardware outline diagram.
So with the above diagram as detailing, we can now really explain what is going on/what is the plan. We can separate our problem into two problems right? One is having the robot understand its environment, know where to go and etc, what obstacles are there, what we need to avoid, if there are stairs we need to climb. That's one really hard task. The other task is simply getting the platform itself to stand and walk and etc. Get the robot to stand, get the robot to move forward, backward, left, right, turn, etc. That's the second really hard task.
What we're going to do is separate these tasks, use the internal gyroscope data sent from the IMU connected to the Jetson and CAN-based feedback control to get the RIO to control all of the legs for the platform to walk in whatever orientation, direction etc is needed - over the CAN Bus.
The other task of perception, environment understanding, directing platform movement, HMI, obstacle avoidance and etc, are all handled by the Jetson TX1 and the sensors connected to the Jetson TX1 platform. That's the plan. It's either going to be this or that the roboRIO will control the motors that's it, and the computation for leg positions and etc will be done on the Jetson TX1 itself. Really what's going to happen is we will decide what's most useful and convenient when the roboRIO arrives and that's the best we can do for now. We'll power the robotRIO with 12V and plug it into one of the other ports on the power distribution panel. The CAN wires will be unplugged for the second Arduino CAN receiver attached to one end of Motor Controller CAN_ID=1 as a termination resistor, and plugged into the roboRIO for communication.
CHANGES THAT NEED TO BE MADE FOR THIS TO WORK:
(1) Unplug the CAN wires from the termination block connected to motor controller CAN_ID=1
(2) Mount the roboRIO to the scout robot
(3) Connect the CAN wires to the roboRIO
(4) Connect the power wires to the roboRIO and the PDP (power dist. panel)
(4) Ethernet the roboRIO to the Jetson TX1
(5) Setup the software on the roboRIO for FRC with a random team number