![]() |
Tweaks to be able to build C++ code from Robot Builder
1 Attachment(s)
Guys,
I've gone through the Robot Builder videos on youtube and was coding along with them, but in C++. I noticed a couple of things that might trip some coders up so I thought I'd post my findings. The generated codes always seems to build fine, but when adding methods and coding command sets there are some things to be wary of: 1. Case is slightly different for C++ methods than in Java. C++ seems to be camel case starting with a capital letter and Java seems to be camel case starting with a lower case letter. Code:
SetTimeout(1);Code:
Java: Robot.claw.close();Code:
//In Claw.hCode:
//In DeliverCylinder.cppCode:
// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=REQUIRESI've attached the C++ version of the project code just in case the examples above are incomplete. The code builds (I can't test whether is executes since I don't have his platform) and appears to be correct but peruse it at your own risk. The only thing missing is one of the last steps which is casting "autonomousModes->GetSelected();" to a "Command" type. This doesn't work in C++ and I don't yet have a solution. Good luck. - Bryce EDIT: The project is now building fine thanks to Brad's example below (above depending on how you have your posts situated). I've updated the zip. |
Re: Tweaks to be able to build C++ code from Robot Builder
Quote:
I just posted an example of creating the SendableChooser for selecting autonomous programs in C++ at the bottom of this page: http://wpilib.screenstepslive.com/s/...smartdashboard Brad |
Re: Tweaks to be able to build C++ code from Robot Builder
Tiny side note, camelCase with a uppercase initial letter can be referred to less ambiguously as PascalCase.
|
Re: Tweaks to be able to build C++ code from Robot Builder
For lack of a better place for adding RobotBuilder tweaks, I'm going to pile onto this thread. I'd love to see a dedicated forum for this since it spans Java and C++.
First, RobotBuilder is a fantastic tool, and I hope that teams--especially rookie teams--recognize the value of the software foundation that RobotBuilder can provide. Here are some C++ quirks we found (starting with version r619) that might be avoided by others: 1) Make subsystem names start with capital letters and preferably single words. We initially used lower case names (like chassis) and the default C++ code seemed to use lower case for type names which conflicted with the auto-generated instances of these types. 2) Don't bother to create a battery subsystem for analog input 8--it's already built in somewhere. An error message at runtime will tell you that you are reallocating an existing analog input. 3) When creating a PID subsystem, we got a malformed function name. It can be hand edited as a workaround (each time an export is done). generated: return entryShooterEncoder->PidGet(); should be: return entryShooterEncoder->PIDGet(); 4) When adding an initial default command, they must have the "requires" field set to point at the proper subsystem. 5) We were able to working generate C++ from the base .yml config file successfully, but when moving the config file to a new computer it would not generate the exact same set of code. The #include line in subsystems that have an initial default command would not be inserted. Probably due to the fact that that the #include line is outside of the auto-generation markers. In order to work around this, the #includes need to be entered manually (or just copy the exported source code instead of the .yml file). I will try to enter these on the first forge project for RobotBuilder. Note that the current version is now r623. Jeff |
| All times are GMT -5. The time now is 02:08. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi