chip3 updates?: using CTR falcon in the next version [updates]
Sooo when the Falcon 500 first came out I was already impressed. The device has an integrated motor controller and can do 4.69Nm of stall torque which is like, a stunning amount of torque for anything...
Of course it came out after chip2 was built which means we couldn't use it in chip2. But also it costs about $20 more than the NEO/SparkMAX combo which for 2x the torque, less than half the wiring, and a smaller footprint overall, is pretty snazzy.
But what seals the deal for me is this email I got from CTR below:
So there's two separate pieces to what you're trying to do.
First is using Phoenix with a non-roboRIO platform.
We have documentation and an example on using Phoenix with linux platforms. We do support the Jetson Nano (and TX2), but not the TX1.
Documentation with list of supported platforms: https://phoenix-documentation.readthedocs.io/en/latest/ch06b_PrepLinuxRobot.html
Example project: https://github.com/CrossTheRoadElec/Phoenix-Linux-SocketCAN-Example
Note that for these platforms you'll need a third-party CAN device that supports the socketCAN interface. We recommend the CANable: https://canable.io/
This will get you to the point of using our standard Phoenix libraries (API is identical to FRC C++) to control SRX/Victor/FX(Falcon) with another platform.
The second piece is then integration with ROS.
About a year ago we put together an ROS package in a github repo... https://github.com/ozrien/ctre_ros It's not maintained regularly as we don't staff a dedicated ROS expert, but I suspect there is enough in the repos to get started. Essentially all we did was link our device library Phoenix into an ROS wrapper. This package is derivative work from a first-attempt ROS package done by a robotics teams called the Zebracorns... https://github.com/rgreenblatt/ROS_CTRE You might want to check out some of their documentation as they regularly use ROS with various CTRE products. https://team900.org/labs/ Looking at a serach for "ros" and "talonsrx" on github, developers have also taken the same approach (linking to Phoenix routines in a CAN node). Since TalonSRX has been around longer than TalonFX, I would search for that first. TalonSRX will work with Falcon, you just can't set the stator current limit using TalonSRX API (at which point you can replace the TalonSRX with TalonFX and recompile). https://github.com/NovaRoverTeam/core_rover https://github.com/clubcapra/takin https://github.com/FRC-1721/pre2020season/blob/3c063a005fe72e72d0561fd5ab2f4820c1016408/src/main/java/frc/robot/subsystems/ROS.java https://github.com/JakeAllison/FRC-ROS https://github.com/jtdevs/ros_talon TalonSRX vs TalonFX (Falcon) - Software Class Both the linux example and the ROS example uses TalonSRX instead of TalonFX, but replacing the class name for TalonFX should be trivial. I recommend compiling it as is, as the TalonSRX class can be used with Falcons (and provides most but not all of the functionality of the Falcon). Once you verify your setup is working then you would update the Phoenix library binaries to the latest and modify the source by replacing TalonSRX with TalonFX.
Let me know if you have any additional questions.
Jacob CaporuscioSoftware/Hardware Engineer CTR Electronics
That's right! You heard him correctly. We can plug the CTR falcon into a Jetson Nano using Can-able, and then guess what you can do? You can use ROS TO CONTROL THE MOTORS USING THEIR PHOENIX LIBRARY. I'VE LITERALLY NEVER WANTED ANYTHING MORE.
Which means if we can design a planetary gearbox that packages this thing really well, we might have a whole new, much better CHIP robot! With 4.69 Nm of stall torque, we can figure out what ratio we need to lift a platform assuming a certain weight! We actually have most of the math for that from chip2 already. We can estimate with a safety factor. And once we do that design can begin!
Now we've selected a motor! And it's really hard to say no to a package like the Falcon 500. So let's see where we can get with it!