![]() |
The CCRE: A comprehensive award-winning robot code framework
Developed by FRC Team 1540, the Flaming Chickens, the Common Chicken Runtime Engine (the CCRE) provides a powerful yet easy-to-use software framework for use by FRC teams during competition season and beyond. It has a number of major features:
The source code and documentation for the Common Chicken Runtime Engine can be found on GitHub. As part of the documentation, we have fifteen tutorials on different parts of the system, from installation and simple robot code, to advanced guides on Logging and Cluck-based Networking. See an example of CCRE code here! The CCRE has now existed for about a year and a half, and we have used it for all of our robots in that time, which includes preseason, prototype, competition, and non-competition robots. After using it for the season, we presented on it at our competitions and it won the Archimedes Innovation in Control Award at the 2014 World Championships. Note: This is the second CCRE thread on these forums. After a year more of development, we’ve decided to create a new thread with up-to-date information on the CCRE, as we were unable to modify the original post on the previous thread. |
Re: The CCRE: A comprehensive award-winning robot code framework
Quote:
|
Re: The CCRE: A comprehensive award-winning robot code framework
Quote:
Since the user project isn't the first thing that runs, the CCRE_Igneous_cRIO or CCRE_Igneous_RoboRIO module can register their own versions of the interface, so on the cRIO the interface is designed to work with 2014 WPILibJ, and on the roboRIO, the interface is designed to work with 2015 WPILibJ. When the user uses the "Deploy" target, it uses the roboRIO build system to download it (assuming that they have the required plugins), and when the user uses the "Deploy2014" target, it uses a heavily-modified version of the cRIO build system to download it, no plugins required. In terms of the non-backwards-compatible hardware changes, we provide Igneous.isRoboRIO(), which lets the user program figure out which one is being used. Since a robot with the roboRIO and a robot with the cRIO would have different port numbers either way, we require that the user program chooses the correct port numbers itself. New modules such as the PCM are handled via methods such as Igneous.usePCMCompressor(), which will throw a helpful exception if used in a cRIO environment. We've used this to make last year's code downloadable to both targets, and when our code ran on a cRIO at Girls' Generation and Rookie Rumble (offseason events), it used the exact same code that I've been downloading to a roboRIO for testing. |
Re: The CCRE: A comprehensive award-winning robot code framework
Quote:
What happens when the users program tries to execute code written under Java 8, but then tries to exectute on the cRIO? For example, if the user makes a call to Java.io.socket networking classes, or uses automatic unboxing Double myVar = 5. All are valid on the roboRio, but what happens when the user tries to run this code on a 2014 cRIO, does it have a compile error, run-time error, or work somehow? Thanks for putting this together, Kevin |
Re: The CCRE: A comprehensive award-winning robot code framework
Quote:
Quote:
Using unboxing should work properly, as far as I can remember. This is a language feature, not a bytecode or library feature. (You can use all Java 1.5 language features safely on the cRIO when using the CCRE, as far as I know.) Using java.net.Socket will cause a compile-time error when targeting the cRIO (but not when targeting the roboRIO). This isn't an issue, though, because you can just use ccre.net.Network.connect(addr, port), which wraps both Squawk and Java SE interfaces for you into one interface. In general, things will either just work or have a compile-time error. There are few cases when something will fail at runtime. Quote:
|
Re: The CCRE: A comprehensive award-winning robot code framework
Weekly update on 2014-10-27
CCRE release 2.1.1 is available. Code:
Important changes since v2.0.0: |
Re: The CCRE: A comprehensive award-winning robot code framework
Semi-weekly update on 2014-11-05
CCRE release 2.2.0 is available! Code:
Changelog: |
Re: The CCRE: A comprehensive award-winning robot code framework
Semi-weekly update on 2014-11-21
CCRE release 2.3.0 is available! Lots of goodies here - a total of 48 commits to our Git repository since the last release! Code:
Major Changelog:As always, if you have any issues, suggestions, questions, comments, etcetera, about the CCRE, please post them here! |
Re: The CCRE: A comprehensive award-winning robot code framework
Hotfix update on 2014-11-23
CCRE release 2.3.1 is available! This fixes a few problems, most importantly a major serialization bug introduced and present only in CCRE release 2.3.0. You should not be affected by this bug unless you're using the saved-layouts feature of the PoultryInspector. Code:
Bugfixes:We recommend keeping your copy of the CCRE as up-to-date as possible. See the short update guide on GitHub. |
Re: The CCRE: A comprehensive award-winning robot code framework
We're getting ready for release 2.4.0, but it's probably not going to be ready before Kickoff. However, we need to release all code before Kickoff by R13, so here are the details on where you can get it:
Everything is on the GitHub repository. The latest changes are in the devel-2.x.x branch, which is also publicly available. There is also a pull request in process (#10), which is also publicly available. If you want the sum total of everything we have "unreleased" (it's public but we haven't signed off on it as a stable CCRE release), those two places will have it. We also plan to get them together into ccre release 2.4.0 soon, so you can also wait for that. If anyone thinks that this doesn't satisfy R13, please let me know and I'll try to fix things. |
Re: The CCRE: A comprehensive award-winning robot code framework
Release 2.4.0 should be up either today or tomorrow. The main thing remaining is to test the latest version to make sure that nothing's been accidentally broken since the last release.
Once this release is out, you will definitely want to upgrade - it has a number of fixes and improvements that are essential to programming the roboRIO with the CCRE, such as the rewritten Emulator that also supports the roboRIO. We're also going to be pretty much requiring Java 8 now, so make sure to grab it from Oracle's site. Also, we can see that a number of people have downloaded the CCRE recently! If you have, consider posting your opinions/findings here. (Especially if you plan to use it.) |
Re: The CCRE: A comprehensive award-winning robot code framework
CCRE update on 2015-01-06
CCRE release 2.4.0 is out! This is the major 2015 season release - it contains working versions of most of what you'll need to use the CCRE in the 2015 season. Code:
Major Changelog:As usual, please send us any comments, questions, complaints, suggestions, etc! |
Re: The CCRE: A comprehensive award-winning robot code framework
Your framework looks really nice. I was reading your documentation on the logging portion of the framework. You mentioned that some logging frameworks wouldn't run on the limited FRC setup. I was wondering if the change to the Roborio increased performance so that some of the logging frameworks would now work? I was looking at having our team look at something like Log4J, but I'm concerned it won't work.
Brian Carlson Programming Mentor |
Re: The CCRE: A comprehensive award-winning robot code framework
Quote:
You can certainly use Log4j, but you'd have to do your own work to integrate it. |
Re: The CCRE: A comprehensive award-winning robot code framework
Quote:
|
Re: The CCRE: A comprehensive award-winning robot code framework
CCRE release 2.5.0 is out! The main feature here is RS232 support.
Code:
Release of CCRE with API v2.5.0. |
Re: The CCRE: A comprehensive award-winning robot code framework
CCRE release 2.6.0 is out! A number of features have been added - CAN Talons, RConf, StateMachines, additional PoultryInspector configuration, log fetching, etc.
WARNING: This release has not been tested on the cRIO due to a lack of a cRIO robot to test on. If you need cRIO functionality and don't have time to debug, refrain from upgrading. Code:
Release of CCRE with API v2.6.0.Also, keep in mind that downloadable PoultryInspector builds for your Driver Station are available from our GitHub page. |
Re: The CCRE: A comprehensive award-winning robot code framework
CCRE release 2.7.0 is out! This release is light on features, and heavy on bugfixes and minor improvements, especially reliability improvements.
WARNING: This release has not been tested on the cRIO due to a lack of a cRIO robot to test on. If you need cRIO functionality and don't have time to debug, refrain from upgrading. Code:
Release of CCRE with API v2.7.0.Our first competition is this week. If anything breaks, we'll have a release out ASAP to resolve it. If you need any tech support during the event, keep in mind that I won't have access to email most of the day and might not see your message. If you will need faster responses to any issues encountered during the event, please contact me beforehand to ask for contact details. |
Re: The CCRE: A comprehensive award-winning robot code framework
CCRE release 2.7.1 is out! This release contains a couple of RConf-related bugfixes and removes the prebuilt Javadoc folder. You can access the Javadoc online.
WARNING: This release has not been tested on the cRIO due to a lack of a cRIO robot to test on. If you need cRIO functionality and don't have time to debug, refrain from upgrading. Code:
Release of CCRE with API v2.7.1. |
Re: The CCRE: A comprehensive award-winning robot code framework
After over a month since 2.7.1, CCRE release 2.8.0 is out! This release adds interrupts and improves autonomous loop timing!
WARNING: This release has not been tested on the cRIO due to a lack of a cRIO robot to test on. If you need cRIO functionality and don't have time to debug, refrain from upgrading. Code:
Release of CCRE with API v2.8.0.We're planning future direction of the CCRE at this time. If you have any input, please let us know by posting in this thread! |
Re: The CCRE: A comprehensive award-winning robot code framework
CCRE release 2.8.1 is out! This is primarily a bugfix release in preparation for a larger 2.9.0 release.
WARNING: This release has not been tested on the cRIO due to a lack of a cRIO robot to test on. If you need cRIO functionality and don't have time to debug, refrain from upgrading. Code:
Release of CCRE with API v2.8.1.The CCRE's bugtracking and enhancement-tracking have been moved from Trello to GitHub. We also plan to set up testbed robots for the cRIO and roboRIO, which should allow for unit testing of the complete stack, which should mean more rapid releases and fewer bugs. |
Re: The CCRE: A comprehensive award-winning robot code framework
Just wanted to say that though my team isn't currently using CCRE, I'm planning on trying it out this summer and am very thankful that you've chosen to release your framework for the benefit of all. Thank you and keep up the good work!
|
Re: The CCRE: A comprehensive award-winning robot code framework
Quote:
If you have any issues or questions, you can either post them here or email me at robotics [AT] colbyskeggs [DOT] com. (Email obfuscated because spam.) We plan to release CCRE 2.9.0 in a few weeks, and hopefully CCRE 3.0.0 a few weeks after that (maybe with CCRE 2.10.0 in-between.) We use semantic versioning, so 3.0.0 will be a point where we may break some amount of backwards compatibility. (There are things that we ought to change that we haven't because we've been trying to maintain backwards compatibility.) |
Re: The CCRE: A comprehensive award-winning robot code framework
Finally! CCRE release 2.9.0 is out! Besides lots and lots of minor improvements and bugfixes, this release includes the major features of Control Bindings and Mecanum support!
Full changelog: Code:
Release of CCRE with API 2.9.0.Code:
// ...![]() And, of course, the emulator will just display these controls as the names you gave them, which means that you don't have to remember the button and axis numbers of everything during emulation! |
Re: The CCRE: A comprehensive award-winning robot code framework
I've been working on some prototypes for the 3.0.0 release. This release includes a lot of improvements to the Mixing system, namely by getting rid of the Mixing, FloatMixing, BooleanMixing, and EventMixing classes, and using Java 8's new default interfaces to implement the same functionality on the objects themselves.
As an example of how much this can help: Code:
Mixing.select(calibrating, FloatMixing.multiplication.of(FloatMixing.multiplication.of(p, (FloatInput) dconstant), (FloatInput) period), FloatMixing.always(0));Code:
calibrating.toFloat(p.multipliedBy(dconstant).multipliedBy(period), 0);Also, the Input/InputPoll distinction is going away, which means (for example) that code will no longer be scattered with FloatMixing.createDispatch and BooleanMixing.createDispatch everywhere! To replace the previous easy of use of InputPolls that is now going away, code like: Code:
BooleanMixing.createDispatch(new BooleanInputPoll() {Code:
new DerivedBooleanInput(/* dependent inputs */) { |
Re: The CCRE: A comprehensive award-winning robot code framework
For anyone interested, I will be presenting about the CCRE at FIRSTFare this weekend! (FIRSTFare is a PNW robotics conference, for those who don't know.)
I will post the slides afterwards, and might record either the presentation itself or a practice run for anyone who can't make it. (Also, work on 3.0.0 is going strong! Feel free to come take a look and/or help out on our GitHub repo!) |
Re: The CCRE: A comprehensive award-winning robot code framework
Quick Question, roughly how long is the compile and deploy time?
|
Re: The CCRE: A comprehensive award-winning robot code framework
Quote:
On the latest development version, which will be released in a couple of weeks (probably), it's four seconds. No, that's not a typo. We rewrote the deployment system from the ground up for this version, and the benefits show. Obviously, YMMV, but that's how it worked in my last test with a fairly typical setup. |
Re: The CCRE: A comprehensive award-winning robot code framework
That's pretty impressive, our current software takes about 1-2 seconds but can be loaded dynamically, so I was wondering if the CCRE can be loaded dynamically as well i.e. Changing code while the robot is running and not breaking. Although, we require dynamic linkage to a separate binary, and I was wondering if you guys have a better solution. Thanks for the help.
|
Re: The CCRE: A comprehensive award-winning robot code framework
Quote:
The reason that our deployment system is so fast in comparison to WPILib's system is that we only open two SSH connections - one for 'admin' and one for 'lvuser', but we could probably find a way to only use one of those. We could probably also parallelize the different deployment steps, and maybe also check hashes to see if we need to download at all. We aren't planning to improve deployment much more right now, as we've been focusing our development time on improving our core framework as much as possible. Once we release v3.0.0, we plan to keep backwards compatibility for a relatively long time, which limits the extent of our possible refactorings. |
Re: The CCRE: A comprehensive award-winning robot code framework
Quote:
|
Re: The CCRE: A comprehensive award-winning robot code framework
Quote:
If you mean in general that we should release all our changes as they happen, again, they are available, but we want to provide assurances to users that what they're doing won't break constantly as we change things. That's why we following Semantic Versioning practices in our code, which means only breaking backwards compatibility in major releases. |
Re: The CCRE: A comprehensive award-winning robot code framework
Alrighty, I probably misunderstood something. All good, I look forward to seeing how the code evolves over time :)
|
Re: The CCRE: A comprehensive award-winning robot code framework
Quote:
Aaaand... on a different topic, we're getting a solid amount of attention on GitHub: ![]() If your team ends up using the CCRE during the season or plans to, please let me know about it and let me know anything I can do to help! Also, I'd love to hear the experiences of anyone who's tried it and decided against it, since we want to make it as useful as possible. |
Re: The CCRE: A comprehensive award-winning robot code framework
At long last! CCRE prerelease 3.0.0-pre1 is out! It's only been 3-4 months.
This is not quite yet the final 3.0.0 release, but it's close, it has a huge list of improvements, and it works! Full changelog: Code:
Prerelease of CCRE with API 3.0.0-pre1.Highlights:
Looking towards the future, we have some more changes planned for the final 3.0.0 release, which should be coming in a few weeks. We do have the opportunity to make more backwards-incompatible changes for that release, but we've made most of them by now, so don't worry too much about that. We also plan to do things like Eclipse plugins so that you don't have to download the CCRE source to use it! One quick note on upgrading to CCRE 3: we have a tool that will offer to upgrade your v2.x.x projects for you. Simply import your old project into your new CCRE 3 workspace, and press Build All. You should be asked if you want to upgrade your project to CCRE 3: make sure your old code is backed up, and then press Yes and type in your team number. This won't do everything for you, but will do the easy things like replacing InputPolls with Inputs, replacing Igneous with FRC, and handling most of the other major renamings. You will have to manually move your Mixing invocations to the new system, however. |
Re: The CCRE: A comprehensive award-winning robot code framework
Since we're coming up on build season, here's a clarification about using this under the rules:
Since the CCRE is publicly available, you can use it for FRC robot software legally under the rules (at least as of 2015), if you don't make any changes before Kickoff. If you do make any changes before Kickoff, you must make your changes available publicly, which you could do for example by pushing it to a public repository and either posting the link somewhere or opening a pull request to the main CCRE repository. We will make sure that 100% of our work is available in our repository at the point of Kickoff. Most of it will be in the latest release - some of it will probably be in the development branch devel-3.x.x - and the tiny remainder may be scattered around feature branches, which you will be able to find on GitHub under the branch listing. During the build season, we will continue to release all of our changes as normal - we don't use any private versions internally, except, of course, for the time during which each feature is being developed. If you have any questions or concerns - just ask! |
Re: The CCRE: A comprehensive award-winning robot code framework
More work has been done on the documentation! It's currently up to about 13,000 words across a variety of topics. It'll probably reach around 25,000 words by the time it's done, so don't expect it to be quite complete. It is being updated almost daily with incremental additions.
You can view the new-style documentation here. If you have any questions, comments, or suggestions about the documentation - including typos - just post them here! |
Re: The CCRE: A comprehensive award-winning robot code framework
Sorry about the wait on 3.0.0. I'm almost done with my college apps, and CCRE v3.0.0 should be out at least a few days before Kickoff.
You can track the progress of the release on this PR. |
Re: The CCRE: A comprehensive award-winning robot code framework
At long last, CCRE v3.0.0 is OUT!
This is a MAJOR RELEASE. It contains all the same changes as v3.0.0-pre1 plus a few extras: Code:
Major changes:There are a couple of minor bugs remaining that we're going to fix ASAP and get out as 3.0.1 shortly, but probably nothing major. And remember these links: the new-style documentation and the Javadoc. |
Re: The CCRE: A comprehensive award-winning robot code framework
3.1.0 will be out sometime next week. 3.0.1 is being skipped because we need to get a release out with the fixes to support the 2016 roboRIO image as soon as possible, and that will require you to upgrade to the 2016 image, so it doesn't qualify as simply a patch release.
Also, this can't happen until after the 2016 NI Update Suite is unlocked and I do enough work to finish adding support, which is why I can't do it now. Obviously, it won't break any code or API compatibility, just require a newer roboRIO image on the bot. Also, our CCRE repository now has all of our WIP code as well as all of our releases - simply browse the branches to see all of them, or just wait until they get included in a release. |
Re: The CCRE: A comprehensive award-winning robot code framework
CCRE v3.1.0 is out!
The CCRE now supports the FRC_roboRIO_2016_v19 roboRIO image! It also no longer supports the FRC_roboRIO_2015_v23 roboRIO image, which is why it's a minor release rather than a patch release. A few other bugs have also been fixed in this release, but no user-visible features. Code:
Release of CCRE with API 3.1.0. |
Re: The CCRE: A comprehensive award-winning robot code framework
CCRE v3.2.0 is out!
This release has two large features (CCRE Eggs and Behavior Arbitrators) and a wide variety of minor features. Also bugfixes. Code:
Release of CCRE with API 3.2.0.Behavior Arbitrators are the other major feature: you can specify a prioritized set of mutually exclusive "Behaviors", and the arbitrator selects the highest-priority behavior that currently wants to run, and allows it to control the actuators associated with that arbitrator. For example, you could have a "pit safety behavior", "autonomous behavior", "mecanum behavior", "tank drive behavior" and "test mode behavior", and the arbitrator would automatically select the best behavior to apply in the situation, based on the priorities and conditions that you've specified. Behavior Arbitrators are also in their first released iteration, but they're already practically useful. Behavior Arbitrators are joining Control Bindings, Cluck, Instinct Modules, Control Structures, and RConf as the primary components of the CCRE toolkit. |
Re: The CCRE: A comprehensive award-winning robot code framework
CCRE v3.3.0 is out!
This release is from over a month of active software writing, and adds a very large number of minor features and quite a few major features as well. Code:
Release of CCRE with API 3.3.0.![]() ![]() This system allows recording precise information about the function of a robot, down to an accuracy of 10 microseconds. In the above diagram, you can see a snippet from an actual robot test run that shows precise information on the timing details of certain periodic events and the exact state of the robot's scheduler. Tools like this allow recording an entire match and looking back later to discover exactly what happened. To use this, look at the ccre.recording package. We've also introduced a new scheduling system, which collapses all of the different timing threads into a single thread, which increases consistency of timing, simplifies timing code (so fewer bugs), and makes finer-grained CPU load analysis and management possible. You don't need to do anything to work with this - it's automatically used by the latest version of the CCRE. We added support for SPI and I2C, and expanded support for RS232. We expanded the CAN Talon SRX interface to allow access to almost all of its internals through a CCRE-style reactive interface. We also added support for other PWM speed controllers like the SD540, Spark, Victor SP, and Talon SRX (when used over PWM.) Discrete channels are a new addition to the core architecture of the CCRE: these are like boolean channels, but with a used-defined set of options, so that it can be used for robot mode access, behavior arbitrators, and more. The PoultryInspector interface is now slightly more intuitive, and it now supports viewing AXIS M1011/M1013 webcams, including drawing targeting rectangles on top. This releases includes fixes for all on-field bugs that we know about, and we'll be certain to release any further fixes promptly during the competition season. If you find anything that doesn't work, please contact me immediately so that we can get it fixed quickly. |
Re: The CCRE: A comprehensive award-winning robot code framework
CCRE v3.4.0 is out!
This release is from our competition season, and while it doesn't involve very much in the way of new features, it has a boatload of minor improvements and bugfixes. Code:
Release of CCRE with API 3.4.0.If you want to help - or might want to help but aren't sure - drop me a line either here or in the FIRSTCodes Slack! |
| All times are GMT -5. The time now is 23:35. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi