23

There are a couple of projects out there that mate the Arduino platform to the Node.js javascript execution engine. Take a look at Johnny-Five, which is a library on top of the Arduino Firmata remote control protocol or node-reflecta, which is a Node.js interface for the Arduino Reflecta remote control protocol. I've personally built a Node.js controlled ...


13

Hmm, interesting question! I personally would suggest that you take a look at the Arduino platform. It's programmed in C, so the syntax is going to be... familiar, to a JavaScript writer. In my humble opinion, knowing how the syntax (while loops, if/than blocks, etc) is laid out is 70% of the battle, once you're familiar with that, you can plug and play. You ...


9

Robot Operating System (ROS) offers the ability to use Javascript to control your robots. Specifically you will want to look at rosbridge. You will then need to use rosserial to interface with the microcontroller controlling your robot. While I am a big fan of ROS this is an overly complicated way to begin exploring the field of robotics IMHO. You would be ...


8

"We have tried NXC and LeJos. Plus, I tried out the Microsoft Robotics Development Studio, but with all these different possibilities we are a little bit overwhelmed." That basically leaves RobotC - which is easier to use, and reasonably powerful. As it is based on C, you will not find it as powerful a language as JAVA (LeJOS), but robotics stuff is built ...


6

In general you don't need to learn assembly to be able to program a microcontroller. As long as you know C, it's enough for you. Knowledge of assembly of course would help. Specifically, it would help in writing optimized code (or rather, not writing stupid code) as well as having a good estimate of how fast or slow a piece of code could be. Sometimes in ...


5

The short answer is, frustratingly, "it depends". Nearly every established language can be used to program one robot platform or another. In my short career as a roboticist I have already used Python, Java and C++ to program different robots. There are even tools to program the Lego NXT in Ada, would you believe that? So whatever programming language you ...


5

Generally there are many ways to use node.js with a platform, like this one for the RPi. There are a lot more similar ones if you just search for them. Another interesting one is ArduGate, which lets web pages communicate with the arduino via JS (though probably not exactly what you wanted since it doesn't compile and load to the arduino) Though I really ...


5

This is one of those "open-ended" questions that the moderator doesn't like. So I'm going to leave you with some short, general answers. These are based on over 20 years in industry designing various bits of hardware and software for embedded systems: Learning enough about microprocessors so that assembly language programming comes naturally will be a big ...


4

As NXC is a compiled language, I would assume calling a non-existent function or accessing a non-existent variable would throw a syntax error during compilation as it does in other compiled languages I have used. Conversely, in interpreted languages like PHP and Python you can often call or access things that don't exist without creating an issue until that ...


4

Robots tend to be portable devices powered by batteries. Portable battery operated devices tend to use embedded processors with limited power and memory. Compiled code has several advantages over interpreted code in such applications: Compiled code usually takes up less space. So you can have more code in the same amount of space. Compiled code usually ...


3

The major disadvantage of assembly language is that it is different for each processor that you use. Therefore there is a big learning curve whenever you change processor. Clearly, if you only ever plan on using a single processor (or family of processors) then this is less of an issue; however, life is rarely that simple. Equally, assembler allows you to ...


3

NXT-G is based on LabView. If you don't like LabView, you won't like NXT-G. Good news though. Lego just debuted Mindstorms EV3. It uses a language based on ICON. Something you may be more interested in. It should be available this winter. http://mindstorms.lego.com/en-us/News/ReadMore/Default.aspx?id=476243 Also, while browsing questions on this site, I ...


3

The kit supplied NXT software is a bit basic, agreed... but before trying anything more complex, I can commend NI LabView for NXT Not only is this an improvement on the NXT-G but this gives you an introduction to LabView which is widely used in the Real World for data acquisition and test systems. I'm sure there must be a C/C# API out there (I've not ...


3

Currently FRI can only be controlled in C++. Java is also necessary to initialize the FRI interface. The C++ code if found in a file called FRI-Client-SDK_Cpp.zip which is included in the kuka connectivity suite. You need to go in the menus to the software components and check the box that enables FRI (fast robot interface). Look in the docs for how to ...


2

A friend of mine actually has a pretty powerful tank robot that's controlled with NodeJS over wifi. The robot itself isn't exactly "small-robotics" at 150 pounds, but you could probably learn quite a bit from the source code. It has a netbook onboard running a webserver and talking to an Arduino. You can find the source code on his Github project page. The ...


2

Microsoft Robotics uses a protocol called Decentralized Software Services Protocol (DSSP) and they released the specs under a license that allows anyone to implement it in any language. The DSSP protocol is totally compatible with current web standards and I think it would be a great idea to implement it in JavaScript and NodeJS. That can make it possible ...


2

These are matrix-vector math libraries. They are related to inverse kinematics only because inverse kinematics involves matrices, vectors, and math. If you need an implementation of an inverse kinematics library, that is a different question. But any of those would be fine for doing the required math, once you solve the inverse kinematics in closed form or ...


2

No, it seems that there's no such possibility, because there's no method in the manual.


2

A lot of the different options with regards to language are listed on the NXT wiki page http://en.wikipedia.org/wiki/Lego_Mindstorms_NXT_2.0. NXT-G NXT-G is the programming software included in the standard base kit. It is based on LabVIEW graphical programming. It features an interactive drag-and-drop environment. LabVIEW Toolkit[edit] NXT-G is powered by ...


2

I dont use NXC, so I am hesitant to propose this as an answer, but I will comment that the sensors ARE linear - not binary. They measure dark, grey, and light - On, middle, off of line. You simply devise a scheme to get a unique #, and use that as the SetPoint to PID - works great. See Mindsensors light array for sample NXC code for their array. Adopt it to ...


2

http://playground.arduino.cc/Main/PS2Keyboard The extended version http://playground.arduino.cc/Main/PS2KeyboardExt2 This example will show you how to read data from keyboard.The library will let you process keys in real time.From there simple if statement can be used to get the desired effect.I hope that the links will answer any other questions you have. ...


2

I am not sure which end of the AI work you intended, so this may not apply. If you are working disconnected from hardware one might be better off with straight MATLAB / Octave. If you are planning to demonstrate on hardware, the widest robotics control architecture / middleware is ROS which was the DARPA funded Player/Stage / Gazebo. There are many ...


2

Ravi - This is a great question. So many great ideas stop simply because we don't know how to kick things off. I'll try to list a few options below for each of your questions so I don't sound like I'm selling one method or product. Your question is at a very high level, so I'll try to point you to some great resources; if I went too deep, I'd have a novel ...


2

The GPS gives the actual coordinates. The compass gives the orientation. The waypoints also have coordinates, and as I see in your code, you have defined movement primitives for your robot. From the actual and waypoint coordinates you cen compute the heading vector required. You can compare that with the current heading vector from the compass. Your goal ...


2

If you want to start programming a robot that's already built, the Scribbler 3 (S3) robot by Parallax, inc. is relatively affordable and comes already assembled. The programming relies on Blockly, a GUI-based programming language for robotics systems. I think it's popular in schools. If you're interested in something a bit more robust, why not look into the ...


2

How does a controller translate a move x 20 units to moving the stepper x amount of steps and keep dimensional accuracy? If the CAD G-code says move 200 mm in the x direction, how to you translate the G-code to tell the stepper motor that 200 mm? The G-Code interpreter interprets the motion command. It applies some basic transformations on it to make sure ...


2

The code for “task autonomous()” should be outside of the main() function.


1

As one user has said, ROS is a very good framework for robotics platforms that supports python and c++. I highly recommend downloading the VirtualBox image of ROS and giving it a try, it takes about 5 minutes excluding download. ROS will give you a communication framework between machines on a network, and also between subsystems on the robot (mobility, ...


1

Ubuntu is fine if you are familiar with it, if you start having jitter issues you can add the real time mods to the kernel but that is almost certainly not a problem you will face. Adafruit has some decent python libraries for the beagle bone black at https://github.com/adafruit/adafruit-beaglebone-io-python. Genrally it is best to prototype in the easiest ...


1

You're going to want to do this using ros. This will allow you to use both python and cpp. I would reccomend doing all control and estimation in cpp and and camera stuff in python. Ros also works on networks of computers so you will be able to communicate with other linux machines running ros on the same network.


Only top voted, non community-wiki answers of a minimum length are eligible