Archives For Robots

I led R&D of this autonomous drone in 2016-2017 at NVIDIA. It uses Deep Neural Network for model-free end-to-end navigation from pixels to control. Our drone, named Redtail, can fly along forest trails autonomously, achieving record-breaking long-range flights of more than 1 kilometer (about six-tenths of a mile) in the lower forest canopy. We released our navigation DNN (TrailNet), as well as other models and control code on GitHub as open source project (Redtail). The tech can be used to create autonomous drones or ground rovers that can can navigate complex, unmapped places without GPS. I presented this work at IROS 2017 conference. 

Continue Reading...

This is a mixed reality / VR drone prototype I created in 2015. It allows a remote pilot to fly a drone via VR headsets like Oculus Rift. The pilot has an immersive stereoscopic telepresence with 180 degress field of view. It greatly simplifies flight maneuvers compared to traditional narrow field of view monocular systems. I was also planning to use the system to train autopilot AI via deep imitation learning.

Continue Reading...

Sailing Boat Simulation

February 18, 2014 — Leave a comment

I made this sailing simulation demo back in 2009-2010 while learning how to sail. The sailboat model is motivated by the real physics of sailing, but it is not 100% correct. I made a dynamical system that roughly approximates the real thing. NPC agents use optimization techniques to race (and catch) the player boat.

Continue Reading...

Here I describe how to control Robotis Dynamixels (smart actuators) from a PC via a serial protocol. I also provide code for this.

Continue Reading...

Here is the walking quadruped robot that I created some time ago:

It uses simple self-balancing controller and keyframe based motions to walk. It turned out that 4 legged motion is pretty hard to get right. It took me quite some time to fix all the balancing and motion issues, so it can walk well. Turning left and right was especially challenging since it does not have enough levels of freedom in some directions. It uses 12 Robotis dynamixels (smart actuators). It seems like dynamixels and walking is quite energy efficient, since it can walk a very long time even on a small battery (2S lipo). It makes lots of noise when walking though. It can avoid obstacles with its ultrasound sensor and do cool flips 🙂 The Biolod coding language does not scale well when you try to implement complex logic. I guess the best approach is to control the robot from a PC (or netbook) and use on-board controller only for low level motion control due to its current limitations.

Bioloid Robotic Kit

April 29, 2008 — 1 Comment

    Recently, I have been playing with a robotic kit – Bioloid from a Korean company Robotis (this kit has been around for quite some time, so this post may repeat well known facts). If you are interested in robotics, but do not want to deal with low level details, this kit might be for you. It is very easy to create robots with it – you only need a screwdriver and a PC. At the same time it is very flexible and allows creating a variety of robots – from simple manipulators to humanoids.

    Here is how this kit looks like when you buy it (this is a “comprehensive” version of the kit, the humanoid robot does not come pre-assembled):

Bioloid Comprehensive Kit

It includes: 1 main controller, 18 servos, 1 sensor, wires and a variety of frames. Robotis calls their servos and sensors dynamixels. They all have the same unified casing (even sensors) and serve as basic construction blocks for robots. Dynamixels are wired together (and to the main controller) in a daisy chain fashion (see picture). This minimizes wiring and simplifies assembly.

Daisy Chain Link

Each dynamixel has a unique ID and when they are wired together they form a “chain of responsibility”, i.e. each dynamixel reacts only to commands that are sent to it even though they all listen to all commands on the wire. In addition to controlling servos, the main controller can read their parameters, e.g. current position, temperature, applied force, etc. Bioloid servos, sensors and frames are connected together with small nuts and bolts, which makes assembling a bit tricky.

Bioloid comes with great software support. There are 2 main tools for programming a Bioloid robot – Motion Editor and Behavior Control Programmer. It is also possible to program in C if you want to have greater control.

    The Motion Editor allows recording basic joint movements. This process looks like making a cartoon animation – you move joints by hand and record snapshots in sequence. Then this sequence is given an ID and saved in the main controller, so it can be invoked later by a higher level behavioral program.

Motion Editor

    The Behavior Control Programmer allows writing higher level programs that either use pre-recorded motions or control servos directly. Bioloid has its own language that looks like BASIC. If you are familiar with basic programming you will have no problems coding in this language. Programs are event driven – they respond to events from sensors and launch different motions or procedures according to current state.


    Behavior Control Programmer


    Here is the video of a manipulator that I made with this kit. This simple robot detects objects in front of its sensor and tries to grab them. The claw and the sensor have some slack, so objects may be placed in a small area and not only in one spot:

It took me about 2 hours to assemble and to program it. I spent most of the time assembling it mechanically, because the kit has rather small nuts and bolts (at least for my hands) and it is pretty tricky to put nuts into their slots in dynamixels/frames. Programming was very easy and straightforward – I recorded several basic motions with the motion editor and then used them in the Behavior Control Programmer tool. It required very basic scripting skills and I think anyone can do it, but I am a software developer, so it could be easier for me than for others.

Here are pros and cons of Bioloid kit that I can think of after playing with it for some time:


  • Very flexible. Allows creating a variety of robots
  • Very easy to assemble and program robots
  • Motion Editor is great – it takes just a few minutes to create a very complex motion


  • It includes only 1 sensor. It is infrared and very inaccurate. It would be great to have a set of different sensors including ultrasonic distance sensor.
  • Assembling/disassembling robots can be tricky due to very small nuts/bolts and not precise slots in frames.
  • It is easy to code a small program in the Behavior Control Programmer, but this tool and the Bioloid language does not scale well in terms of complexity – when you want to create something more complex, it becomes very hard to maintain and change control programs. It is almost impossible to code any AI algorithm of medium complexity (to be fair – you can program Bioloid in C, but in this case, the complexity goes through the roof and this kit loses its attractiveness)

Overall, I think it is a great educational kit/toy for people interested in robotics