dibblec
15-02-2016, 16:16
This is also posted on FIRST Forums, but with time winding down trying to get our programmers as much help as possible.
Our students are working with C++ this year. They have been able to get a robot that drives with the help from a mentor early on using iterative setup . They have been trying to use Robot Builder to speed up the process with our subsystems. They can create a new project, launch Robot Builder add subsystems and update the project. From there they get errors and cannot get a driving robot. We have watched the YouTube video (based around Java) to try to help, but like most resources does not give a full picture. They have looked at sample code from other teams, with not luck. The good/bad of C++ different ways to approach the same task. Here is some of the errors:
This is a four motor drive train:
1) In RobotMap.cpp, they get the error that "RobotMap has not been declared and Member declaration not found" with this line of code: std::shared_ptr<SpeedController> RobotMap::driveTrainTalon1;
2) In DriveTrain.cpp they get the error "symbol driveTrainTalon1 could not be resolved" with this line of code: talon1 = RobotMap::driveTrainTalon1;
3) In RobotMap.cpp getting error on "LiveWindow *lw = LiveWindow::GetInstance();" it says "Function 'GetInstance' could not be resolved.
4) In RobotMap.cpp getting error on driveTrainTalon1.reset(new Talon(0)); "Method 'reset' could not be resolved".
Again, I know this is not a complete picture, however maybe these are common errors that someone may have an answer for. Here is the first part of RobotMap.cpp:
#include "RobotMap.h"
#include "LiveWindow/LiveWindow.h"
// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=ALLOCATION
std::shared_ptr<SpeedController> RobotMap::driveTrainTalon1;
std::shared_ptr<SpeedController> RobotMap::driveTrainTalon2;
std::shared_ptr<SpeedController> RobotMap::driveTrainTalon3;
std::shared_ptr<SpeedController> RobotMap::driveTrainTalon4;
std::shared_ptr<RobotDrive> RobotMap::driveTrainRobotDrive;
// END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=ALLOCATION
void RobotMap::init() {
// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=CONSTRUCTORS
LiveWindow *lw = LiveWindow::GetInstance();
driveTrainTalon1.reset(new Talon(0));
lw->AddActuator("Drive Train", "Talon 1", std::static_pointer_cast<Talon>(driveTrainTalon1)) ;
Our students are working with C++ this year. They have been able to get a robot that drives with the help from a mentor early on using iterative setup . They have been trying to use Robot Builder to speed up the process with our subsystems. They can create a new project, launch Robot Builder add subsystems and update the project. From there they get errors and cannot get a driving robot. We have watched the YouTube video (based around Java) to try to help, but like most resources does not give a full picture. They have looked at sample code from other teams, with not luck. The good/bad of C++ different ways to approach the same task. Here is some of the errors:
This is a four motor drive train:
1) In RobotMap.cpp, they get the error that "RobotMap has not been declared and Member declaration not found" with this line of code: std::shared_ptr<SpeedController> RobotMap::driveTrainTalon1;
2) In DriveTrain.cpp they get the error "symbol driveTrainTalon1 could not be resolved" with this line of code: talon1 = RobotMap::driveTrainTalon1;
3) In RobotMap.cpp getting error on "LiveWindow *lw = LiveWindow::GetInstance();" it says "Function 'GetInstance' could not be resolved.
4) In RobotMap.cpp getting error on driveTrainTalon1.reset(new Talon(0)); "Method 'reset' could not be resolved".
Again, I know this is not a complete picture, however maybe these are common errors that someone may have an answer for. Here is the first part of RobotMap.cpp:
#include "RobotMap.h"
#include "LiveWindow/LiveWindow.h"
// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=ALLOCATION
std::shared_ptr<SpeedController> RobotMap::driveTrainTalon1;
std::shared_ptr<SpeedController> RobotMap::driveTrainTalon2;
std::shared_ptr<SpeedController> RobotMap::driveTrainTalon3;
std::shared_ptr<SpeedController> RobotMap::driveTrainTalon4;
std::shared_ptr<RobotDrive> RobotMap::driveTrainRobotDrive;
// END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=ALLOCATION
void RobotMap::init() {
// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=CONSTRUCTORS
LiveWindow *lw = LiveWindow::GetInstance();
driveTrainTalon1.reset(new Talon(0));
lw->AddActuator("Drive Train", "Talon 1", std::static_pointer_cast<Talon>(driveTrainTalon1)) ;