Robotics is the branch of technology that deals with the design, construction, operation, and application of automated machines known as robots. It also involves the computers systems for their control, sensory feedback, and information processing.

Share tech news, updates, or what's on your mind.

Sign up to Post

I'm developing a mobile robot application and i'd like to add a text to speech function which let the robot "talk" with the humans by reading some text strings which i'll pass to it.

For example, since my robot has a sonar network, i'd like to let it signal an obstacle presence by diretcly speacking with the human operator.

Something like:

if(sonar_front_detect == ok){

speak_to_human("I found an object in front of me);


Open in new window

Is there any simple open-source library which i can use to accomplish this task?
I'm looking for something which is very easy to use because i am not an expert programmer; it would be fine to use a library which has a function which takes as parameter the string which the robot has to read.

I hope to find a solution to my problem.

Thanks to all!
Hey Guys,

I am trying to fix a windows application that communicates with a com port that is attached to a robotic device that moves.  This application was built a long while back using VStudio 2003 and a library called TransPort that is used to communicate with the com port has 'expired' . So now I am working to get this going on VS2005 with the System.IO.Ports. Seems I have some of it working but it crashes when it tries to move because there is a line of code that I cannot convert and need help.

 private void MoveY(int Y)
            //Connect to the kaidan
            string Ymove = ("YR+" + (Y * 1000).ToString());
            comm.WriteData((Ymove + LF_RETURN));
            YReady = false;
            txtDebug.Text += "Attempting to Move Y";

            //Start Timer to Check every 2 seconds if the move has been completed
            YZTimer.Interval = 2 * 1000;
            YZTimer.Tick += new EventHandler(YZTimerTick);

            } while (!YReady);


            YZTimer.Tick -= null;

After the above method sends the command to move the following eventhandler was in place to check for a response.

 private void YZTimerTick(object obj, EventArgs e)
I'm writing a mobile robot C program which reads data from a serial port to check some sensors and then try to load a joypad to control two servos.

Since i'm using a blocking read to acquire data for sonars from serial port, i can't get input from joypad and from the serial port at the same time, so i can't stop my robot in time if sonars detect a possible collision.

For this reason, after having received few infos from the serial port, I start an infinite while loop to reads possible collisions from the serial port and I start a new thread with Boost library to load and receive input from the joypad.

With this solution, i'm able to use the joypad and receive collisions information at the same time; the problem is that i'm not able to share variable between the previous thread which reads from serial port and the new thread which load the joypad so the previous thread is not able to communicate the the joypad thread if a collision occurs.

I want to do this:

Previous thread detect a collision -> write a value in a linked list -> new thread read it and stop servos.

What can i do in order to let the new thread detect a collision from the previous thread?
I have to use signal() function?

When i try to compile this code, g++ says me that linked list, and in particular, result variable is not declared in the scope.
I think because new thread does not share the old variables and declarations.

int main(){
// do a lots of stuff then..


Open in new window

I'm having a problem with my program flow because I'm trying to receive information from a blocking function.
I'm trying to control a mobile robot in C by using a blue-tooth joy-pad and two C program which communicates over a serial port: a program control joy-pad and servos, the other one controls the sonars. If sonars detect a collision, then servos have to stop immediately.

I try to explain better what my problem is.
At the moment, my program flow is:

1. Open Serial port
2. Send and Receive information over the serial port
3. Load a blue-tooth joy-pad with robot_move()
4. Every time there is an input from the joypad, call send_event() which is a function to move servos and in parallel trying to receive information about collision with another function check_coll() which reads these data from the serial port.

The problem is that check_coll() uses a blocking read to acquire data on the serial port, so i'm not able to send commands to my servos because every time i have to wait for check_coll().

I was thinking to use fork() to start two process: the first for the send_event() function and the second for the check_coll() function; then, when there is a collision, check_coll() sends a signal to send_event() to stop the servos.

Do you think it is possible?
It's a little bit difficult to do this for me, but i'd like to know if this can be a solution.

Or may be, is there a more simple solution just editing the while loop inside the send_event function?
I'd like to use my bluetooth joypad to control my mobile robot direction.
I've found on the net a C program which let Ubuntu recognize my joy-pad and load it as a bluetooth mouse.
This program works greatly since I'm able to use my joy-pad as a mouse.

What i need to do is just to detect the key pressing and the direction signals which come from the joy-pad and use them to control my robot; the problem is that i tried to do this by modifying the code a little bit and the key pressing works fine but I realised that sometimes the detected directions are not correct.

I added some printf() in order to check if the modifies are ok and sometimes if, for example, i move the joy-pad stick to the left and i actually see the mouse pointer going to the left, the program (with the modifies i did) detect the wrong direction.

I'm posting the whole code below: I added to Boolean variables to detect the X or Y axis and i check them in the send_event() function.

Can you help me to correctly detect when I move the joy-pad stick, please?
This code is a little bit difficult to understand for me.
I'd like to delete the mouse moving function and to substitute it with a function which detect the stick direction and control my mobile robot direction.

Thanks to all, guys!

EDIT: I attached the C file for a better reading.

#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>
#include <stdbool.h>

#include <sys/types.h>

Open in new window

I'm writing a mobile robot application under Ubuntu and i'm using two C/C++ applications which share information over the serial port like client and server.
In particular, client controls the sensors and sends information to the server which use these information to control the servos.
At the moment, i'm using three sonars (A,B,C), a 2-axis gyroscope and two encoders.

I thought about a communication protocol to use to send information about all the sensors in the same string by avoiding multiple writings on the serial port.

I'd like to know if it is possible to let the client to enclose information about all the sensors in a long string, such as:


Open in new window

# character is to mark the beginning and the end of the whole string
* character is to separate the information

For example, with the previous string, server should now that:
sonar A, sonar B and sonar C are all ok if the following integer value is 1, on the contrary, if A1B0C1 then sonar B is not working correctly; if integer value is 2 then a collision has detecting by that sonar.
gyroscope and encoders are OK

The problem is when i have to send more information about encoders and gyroscope, for example, after the first check, when i run the robot, i'd like to send strings like this:

Open in new window

where, for example, for the gyroscope, X=12 and Y=12,5 are the coordinates and for …
I'm developing a mobile robot and i'd like to remote control it.
My system use Ubuntu and i'm developing the main application to control the robot in C/C++.

I want to use Zeemote in order to control the direction of my mobile robot, but i do not know how to do it.
(Zeemote is like any other bluetooth joypad)

On the zeemote website there is a developer section, but it only describes Android code which i'm not able to translate in C code because I'm not an expert programmer.

I think I need to trap the bluetooth signal sent between Zeemote and my Ubuntu pc in order to implement something like:

if(zeemote_stick == UP) robot_direction = head;
elase if (zeemote_stick == RIGHT) robot_direction = right;

Open in new window

and so on.

The problem is that i never used Zeemote and Bluetooth application so 'm not able to understand what i should have to do.

Can you help me, please?
Thanks a lot!
Hi guys,
Since I have conscious, I know I love computers
And electronic devices
And mechanic designs.

Now there is an industrial science which is called mechatronics includes all of them.

After some device designs and learning ASM for PIC controllers and getting experience with Delphi I realised I just not love mechatronics, besides I have talent for it.

My plan is getting enough money with my current job (8 hours a day) and (same time) get experience by projects and reading (10 hours a day) after getting enough foundation get good education for mechanic, electronic and Delphi from a Professional.
So, which universiy in USA you can recommend me
Or do you think should I hire experts to teach me for the advances of programming, electronics and mechatronics?
Or what would you do if you were me?
Thank you

** additional information added at askers request (evilrix EEZA)

A mechatronics project to stop Hunger in Africa

Hi guys,

I love mechatronics

And my real job is Veterinarian an I also love it.

I have seen Pictures of childreen from Africa for years and suffer for them.

When I combine these 3 situations I decided to make a project.

Self managed robotic barns with digital and infrared camera visioned different kind of robots.

I want to build prototypes in my country then in the other countries which suffer from hunger.

I have sense that I can accomplish this idea in years. But I need your guide to be a good mechatronic
Hi all,
I need to control a USB connected machine with robotic arms.
And I need to say it " go this coordinate (X,Y,Z)"
However because it is not serial connected instead it is USB connected I am in trouble.
What can I do

Here is what I have
- I used USB monitor program and I exactly know which commands to send
- I have the driver (.inf) file
Need Writing help.  Can you help me with this?  I just want it to sound professional.

What are some of the "emerging technologies" of five years ago? Ten years ago? Which were successful, and which were unsuccessful?
“Emerging Technologies” of ten years ago
Peer-to-Peer computing – Successful
      Distributed computing and peer-to-peer computer is the result of increased bandwidth and increased processing needs such as information sharing, file sharing and printer sharing (Herring, 2000).
Upstaging – Unsuccessful
Bricks and mortar retailer upstaged the beginning of the revolution thus insisting the venture capitalist to stick to the basics.  They believe the old ways of doing business is the right way (Herring, 2000).  
Transformation of the military - Successful
September 11, 2000 terror attacks hastened the transformation of military and internal security because they were responding to the new global wars, which resulted in a dependency on the primacy of intelligence and also the usage of technologies such as the robot aircraft, night vision goggles, battlefield computing networks, automatic bomb detections, facial scanning and  anti-bioterrorism devices (Herring, 2002).
NTT DoCoMo's Internet-enabled cell phones – Successful
Acceptance of the NTT DoCoMo's Internet enabled cell phone has Japan’s cellular phones leading the Asian countries towards fixed line of infrastructures and then wireless (Herring, 2000).
Red Herring touts nanotech – Successful
I have a device(FINCH robot) the shows up as a


on ubuntu linux. The device seems work correctly using Java software provided by the device vendor, without any modifition on the Linux/JDK or whatever.

I need to write my own code to drive the device, with either PHP or C/C++.
I had assumed it was simply a USB/Serial device and trying to implement the commands listed at this site:

, apparently with no success, until someone from the vendor told me it is an HID device, not a serial. Their Java code works on top of a C++ HID library, as I was told.

Now I need two things: 1) a quick education on Linux/USB/HID, to the level just being able to understand how to send these simple serial-like commands and received responses (reports in HID).

 2) C/C++ interface libraries on Linux (uBuntu) for HID devices. With sample codes that include  "/dev/usb/hiddev0"  file desciptor, would be most appreciated. In fact I would rather write PHP code; if someone has a Linux/PHP/ HID code, that will be amazing.

Thanks in advance

Hi to all,

i have two applications which communicate by using a UDP socket: the first application send some commands and the second one receive them to control a robot.

I'd like to calculate the delay between the sent command and the received one.

I'd like to let the first application prints some like:
Sent packet at 3:16:57:07
and the second:
Receveid packet at: 3:16:58:05

in order to evaluate how many ms pass between the sent command andthe received one.

So i think i have to print the timestamp with the ms information, but how to do this?
What's the best way to include a time stamp in C ?
I have created a game that is similar to Simon says, except with Arrows.

 Eight arrows one in each direction, the game shows an arrow and the player needs to point a Nintendo Wii remote in that direction then Press a button to submit that direction. The levels increase with an additional arrow being added per level, so the player needs to remember all the arrows. The game has the Wii remote connected to it but also an Infrared box which sends a signal to a Robot, the robot receives a code and does something, i.e. laugh, burp dance etc....

So creating a use case diagram is proving tricky, as I have no idea how much I need to include. I have four actors.

Player, Robot, wii remote and infrared box.

I am breaking the game down like so:

The Player launches the game
The software creates a connection to the Bluetooth hardware, infrared hardware and robot hardware
The infrared sends a signal to the robot
The robot does something
The player access the game manual by pressing a button
The infrared sends a signal to the robot
The robot does something
The player exits the manual by pressing a button
The infrared sends a signal to the robot
The robot does something
The infrared sends a signal to the robot
The robot does something
The player starts the game by pressing a button
The infrared sends a signal to the robot
The robot does something
The player begins to play level one by pressing a button
The infrared sends a signal to the robot
The robot does something
The player completes…
   I am doing a project on building a faster robot.The General idea of the project is to assemble 5 robots to  a starting point and then from there reach another destination point.
My concern is my project is in real time systems, so what are the algorithms/approaches/techniques which i can apply to make my robots reach the destination faster.Mind you the approaches should be within the boundaries of real time systems.

I want to use A* algorithm does this count?
We've recently build a kiwidrive robot, and now we want to use it as a musical instrument.
It has three wheels, each with a motor that produces a distinct tone.
The formulas used to calculate motor speeds are as follows:

M1 = 0.5 * X - 0.866 * Y + R
M2 = 0.5 * X + 0.866 * Y + R
M3 = X + R

Since we are no good at math, we need help reversing these formulas so that for a given M1, M2 and M3, we want to calculate X, Y and R.

hey...I have a problem with the memory of the c++ program that I am running. This c++ program is receiving sensor data and image information from a robot. What I want it to do is detect a color when the robot moves on a certain path. To get the image information I am using the code that I've attached. This code is called very often once every 300 ms or more often. I observed that the memory increases considerably when running the image capturing is increasing very fast and at the end of the path it has double the memory than at the beginning. So everything gets messed up because of this memory leak..and I have to stop it..but still have the same frequency of image reads. Please help me if you can..I really need it fixed fast..thank you
		VARIANT pvInfo; 
		unsigned char *pData;

		long captureresult=m_vitCtrl.GetSnapshot(4,&pvData,&pvInfo);

Open in new window

I'm not looking for free answers. I need to understand how the problem works and how to solve it.

I want to build an Interstellar Near Light Speed Robotic Spacecraft in my backyard or INLSRS.

It works like this. Launch a space station into space that would orbit the Lagrangian point L1.

This space station is a circular tube. The tube has super conducting electro magnets along the inside in two types: a levitating type and a propulsion type. The INLSRS has a bunch or permanent magnets on its outside. It also has a number of cameras, telescopes, microwave antennas, robotic arm, nuclear or antimatter power source and ion propulsion drives.

The electro magnets on the space station pulse in such a way as to send the INLSRS around the inside circular tube at great speed. Once the speed is fast enough the INLSRS breaks out and orbits the earth. On each orbit the INLSRS flies through the center of the space station  receiving  a kick with electromagnets along the outside surface, inner ring or the circular space station. INLSRS then speeds up and the orbit changes to include the sun. The INLSRS then speeds up faster until near light speeds are approached and is then, directed to alpha centori at near light speeds.

What is the problem with this design?

All comments welcome.

Ryan Upton

I work for a production company and I program robotics on their production line.

They currently have 4 machines that are all controls by an rs485 connection to their production computer. Currently, we can only plug in one machine at a time. The machines are all the same make and I know that it is possible to daisy chain them together through the rs485 so that they can all be controlled at the same time.

Does anyone have a simple to understand wiring diagram for daisy chaining RS485?
We've ordered an RS485 hub from the supplier but they are taking weeks over it and I'm sure we can do it ourselves with a bit of wiring.

Many thanks
Hey, I'm trying to figure out the math for having one object "seek" another object.  I've done things that kind of almost do it, one in particular hit the object if it wasn't moving.  But what I need specifically is how to calculate the change in direction for an "artificially intelligent" enemy to follow my "hero" object on the x,z plane, and ultimately make contact with it.  

This may sound confusing but any help would be appreciated and I can explain more if need be!
Hello Experts,

I have a winforms application that has several competing threads doing background work and updating the UI Controls on both dialog forms and the Main form. I am using VS 2008 and SQL Server 2008 Express. The DB resides on the client but outside of the solution.

It is starting to look like the application needs to be parted out into seperate stand alone programs that must share real time information. This is a robotics control application.

My question is if you were starting from scratch what technologies would you use and how would you go about communicating between the applications.
I am involved in selectively redesigning some legacy robotics hardware, a part of which uses an embedded Phillips 87C750 microcontroller, datasheet:

We don't mind reusing this part if it is current but I can't find a statement regarding it's current production status. I've attempted to contact nxp but no response.

We have firmware already written for the application that uses this microcontroller that we would like to reuse without modification if possible.

So my question is:
Does anyone know if this part is still active, and if not - what microcontroller could I use that would accept the existing firmware without modification? Ideally it would also be a pin compatible part but this may be asking too much.

In the field of robotics and autonomous systems.  What is the difference between a Sensor and a Perceiver?  I see both terms used interchangeably.  Is a perceiver simply a smart sensor?  Or is there more to it?
With he new version of skype, i cant find any way to send numbers. After i make a call and a robot answers, i am required to send 1 for choice this and a 2 for choice that. Problem is that when i hit the 1 button no tone get send. Have skype really taken away this function ar am i missing something?
I have to choose one track or another. Either Computer Science or Computer Engineering. The only reason i might to go with Computer Engineering is to build a robot with the following specifications:

A small semi circle robot that has circle wheels beneath it. The robot should move fairly fast equivalent to a speed of regular remote control car. This robot will have a lens that can move vertically up to 90 degrees. What does this robot do?

Whenever this robot sees a human, it follows him/her, so there will be a sensor that sense a presence/movement of a human. Afterward, the robot turn and point the lens to where it sensed. Most of the time it will point to the human, then the lens should immediately move vertically until it sees the head figure then stops by there. Whenever this person moves, the robot follows it. Whenever the person lowers his/her head or try to get away, the lens follows it. Since the robot have circle wheels it will be very flexible in its movements. The lens has to be fast enough in tracking the head so the person can not easily get away. The robot should always be distance away from the person.

That's it. This is the basic idea/foundation of the project. This project might sound ridiculous for the time being but i believe this can be very practical in different aspects of our life. In the later stages, i can add AI so the robot can …






Robotics is the branch of technology that deals with the design, construction, operation, and application of automated machines known as robots. It also involves the computers systems for their control, sensory feedback, and information processing.