Synapseindia dotnet development robot technical talk

Page 1

ROBOTC Technical Talk


ROBOTC Overview 

A complete ‘C’ programming language for robotics. − −

I’ll answer the question now: NO MAC SUPPORT − −

Developed for Teaching, Powerful enough for Hobbyists/Professionals Developed in Microsoft Visual C++ 2008 and IAR Embedded Workbench Works great under Bootcamp, Parallels or VM Ware Fusion. MAC support is desired, but hasn’t made a business/development case yet.

Extremely easy to use for both beginners and advanced users −

Most “robot functions” are a single line commands.


ROBOTC Language 

Single Programming Language / Multiple Platforms − − −

Developed for Education (High School/College) − −

Mindstorms – NXT (soon to support EV3) Innovation FIRST – VEX PIC, VEX Cortex, and VEX IQ Arduino - Arduino Uno, Mega, Mega 2560 controllers Students learn in a friendly environment about C-Based programming Friendlier Compiler, GUI Device Configuration, Code Templates

Focus is for new programmers to C, but powerful to make experienced programmers feel comfortable.


ROBOTC as a Language 

Language extensions for robotics − −

Built-in variables for robotics devices – motors, sensors, joysticks Example: One line command to drive motors 

User “friendly” compiler − −

NXT - motor[motorA] = 100; //Turn Motor A @ 100%

Auto-correct from popular programming errors Letter case errors in variable names: “playSound” for “PlaySound”.

Compiler is NOT CASE Sensitive – This is by design!


Development Environment 

Normal-style source code editor − − −

Compiler, linker and program downloader – integrated and combined −

No command line tools required (or available…)

Interactive Run-Time Debugger −

Syntax highlighting and formatting Code completion Integrated help/support

Allows monitoring of tasks (threads), variables, devices such as motors and sensors.

User friendly − −

“Basic”, “Expert” and “Super User” mode to adjust features and menus 100+ programming examples in the “Sample Code” Library


Interactive Real-time Run-Time Debugger 

Run/Stop, Suspend/Resume programs from PC

Single step through program execution, one line at a time.

Unlimited user defined breakpoints

Read / write / display the contents of any user variable.

Consciously view the status of all devices in at run-time from your PC. Zero additional coding required, enabled by default!


ROBOTC vs. “Other” Languages 

#1 Reminder: You are creating code to be run of a 256kb ARM Processor – not a desktop! Variables and Memory −

The NXT Supports… 

− −

The NXT has room for 15,000 bytes of variables Adding “const” in front of a variable will make that variable a constant. 

− − −

Integers, Longs, Floats, Bytes, Bool, Chars and Strings (String are limited to 20 characters – use Char[] for longer strings)

This will prevent the variable from being changed by the program

Constants do not take up any memory on the NXT New for ROBOTC 3.5 – Support for Pointers/Recursion (standard ANSI C-style) ROBOTC is a procedural language – there are no classes. You can use a “struct” as an alternative for variables.


Functions and Tasks  

You can create functions (up to 255) Standard C programming style for declaration −

 

Utilize library (.h) files to organize your code You can create “tasks” too – Up to 20 tasks per program. − − −

task myTask() – Create a Task (no parameters) startTask(myTask) – Starts the Task stopTask(myTask) – Ends the Task

Key thing to remember: Single processor, single thread at a time. − −

void functionName(int parameters, float otherParameters)

The internal task manager will run other tasks when idle time is available Create idle time in a task by using the “wait1Msec(time)” command

Main structure in ROBOTC is “task main()”, not “void main()”


ROBOTC vs. “Other” Languages 

Libraries and Workspaces − −

ROBOTC is built around a 1-program model – no workspace files. ROBOTC automatically includes all of the headers behind the scenes 

− 

Stuff like math libraries, string support, standard language libraries are already included.

You can create your own external libraries and do a “#include” to bring them into your program.

Advanced C Data Structures −

New for ROBOTC 3.5 - Pointer Support (* and &) 

void testFunct(int &tempVar)

Structs and Typedefs are supported 

Standard ANSI-C support in most cases.


ROBOTC vs. “Other” Languages 

LCD Capabilities −

You have full control of the LCD – Take a look at the help documentation / samples. You can turn individual pixels on or off, or use some of the drawing libraries already built into ROBOTC.

Advanced Ideas with NXT −

I2C Support – Big 3rd party sensor library or roll your own • http://botbench.com/blog/robotc-driver-suite/

File I/O 

− −

See Sample Programs – You can write to text files and use the NXT File Management utility to download the file to your PC

Bit Shifting and Comparators operators are available Arrays – ROBOTC supports up to 2-dimention arrays.


Support and Curriculum 

ROBOTC.net Community Forums – www.robotc.net/forums − Over 3500+ active users − Most questions can be answered here

ROBOTC Technical Support – support@robotc.net – Ticketing System − Or e-mail Tim (tfriez@cmu.edu) or John (jwatson@robotc.net) directly

Help Documentation / Function Reference −

Built-In and Online at www.robotc.net

Video based curriculum −

Answers questions about how to use hardware and gives beginning programming tutorials

– http://tinyurl.com/RCNXTTraining


ROBOTC Licensing 

You’re entitled to a free copy of ROBOTC thanks to this class −

Use the following licensing information: − − −

Download from http://www.robotc.net/download/nxt/ ROBOTC for MINDSTORMS License ID: 60905893 Password: Howie2014

You may need the LEGO USB Driver as well This is typically included in the installer package and automatically installed. – http://www.robotc.net/files/NXT_USB_Driver_120.zip −


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.