I have joined our local high school's FIRST robotics club, but their programmer graduated last year, so who got selected? The wimpy freshman: me! I am an intermediate programmer (PLEASE don't look at my previous posts, I now know two languages, and am better). So I downloaded an instruction booklet. However, the leader wanted me to learn the SDK in C++ (I am way more comfortable with Java) because it is so much faster.

So, the problem is, I have to learn this super-class by the time we get the robot, not during that time. However, I learn by experimenting, which is impossible without a simulator. Besides, I only really know Objective-C and Java. So my point is, it would be extremely helpful if there was a compiler emulator. Nothing to complex, just something to give me a visual of what the code does. This would be extremely helpful.


Recommended Answers

All 7 Replies

You haven't gotten a response because the question is a bit vague. You'll have to say what type of robot it is, the exact type of programming you'll be doing, etc. It's pointless to just learn C and C++ because you'll be learning things that you probably don't need to know for this assignment. Nobody can tell you whether there's an emulator without knowing what the robot is, what type of chip it runs on, the exact compiler, etc.

Being a robotics engineer, I feel a bit obligated to answer... but also very happy to do so, however, your question is too vague, thus, my answer will be as well.

>>learn the SDK in C++
What SDK? What is the platform? Is it the LEGO Mindstorm? Or a micro-processor, like gumstix? Or a micro-PC?

If it is a micro-controller, then WinAVR, AVR Studio, and Arduino are the typical examples of free software on which you can program and test your programs. But these are simple I/O emulators or embedded system emulators (not a full-blown robot simulators).

The Microsoft Robotics Developer Studio is a comprehensive tool (which I am not so familiar with since it is quite new I haven't had a chance to test it out yet). It will allow you to build simulations and test your code. However, I would imagine the learning curve would be very steep for a high-school freshman.

In my experience, developing a simple simulator for a robot is far easier than writing the code to control it. And since every robot is different, custom tools are very common. And frankly, I don't know of any generic tool, but I'm sure they exist. Mostly, people build up robotics libraries (in C or C++) over the years, and good ones rarely get out of the company or research center who paid for it! CLARAty is one example of a comprehensive robotics library that was only partially released by NASA (although the part they released is quite trivial and have very little use to me, they might interest you). I have worked with a few extensive robotics library for control, simulation, and hardware abstraction, but these are not open to the public.

You should contact the people of the FIRST group, they probably have a much better idea of tools that are appropriate for the types of robots you will be making/using and tailored to your level of skill.

Please give more details on what platform you have, what kind of robot it is (without giving away its secrets to your competitors!), and what kind of simulation / emulation you are looking for. Only then, can you hope to get a more specific answer.

If it is a micro-controller, then WinAVR, AVR Studio, and Arduino are the typical examples of free software on which you can program and test your programs.

Only if you're going to use an Atmel-uC.

@OP: The main question is: What micro controller are you using?

Thank you all for all the extremely helpful replies. One of the reasons I was so vague was because I didn't know all the answers, but now that you pointed them out I will answer all that I can.

1. As I said, the programmer is now a college freshman, and the team leaders know as much programming as I know about Tim-Bukh-Tu. Therefore, they did not know or care what had been used before.

2. The kit I have been using is called WPILib. It is extremely easy, and open-source, but is it a good, powerful library? It was written for both C++ and Java, but older versions can be found for straight-out C, but I definitely cannot go back to classless programming.

3. I'm sorry, I feel really stupid. SDK was totally the wrong word. I meant library. They ca be easy to confuse. In case even "library" is wrong, even though I doubt that, the kit is just a bunch of classes written for the robot.

I'm sorry that's all I can answer right now. Mike, you were extremely helpful, and try all the software as well as contact FIRST.

Thank you all for all the help!

>> The kit I have been using is called WPILib. It is extremely easy, and open-source, but is it a good, powerful library?
WPILib is certainly very easy to use... is it powerful?.. well you don't need a sledge-hammer to kill a bug. This tool will do just fine for all your purposes. If you need to simulate your robot's operation, you will have to write another library that has all the same functions as WPILib (or at least, those that you will use). Then, you implement those functions to match the behavior of your robot (to whichever degree you like). If you need some graphics and physics, look at SDL (Simple DirectMedia Layer, for simple graphics) and ODE (Open Dynamics Engine, for simple physics). You should start by just simulating without graphics and without physics, because I know that in this type of project/competition, you run out of time quickly and there is no point in trying to simulate too much. So, focus on the abstract tasks (motion planning, finite state machine, etc.) while you don't have the hardware, and worry about hardware interface and fine-tuning of performance once you have the robot at hand.

Thanks to you all. No one specifically gave me the concluding answer, but combined, these all solve my problem.


Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.