How To Program An Nxt Segway
BALANC3R (left) and Gyro Boy (right)This tutorial will show you how to build and program a self-balancing LEGO MINDSTORMS EV3 robot that can drive around a room. You can build and program BALANC3R (left) or Gyro Boy (right). Hello,Followed the building instruction for Banlanc3r, updated my firmware to 1.06E, downloaded your code into EV3.

Checked everything twice!When I start both program for Balanc3r, I hear the single beep, then the two ones and then; the motor connected to port A goes -100% (backward)power continuous while the other is idle.Do you have any hint on what can be wrong?———————-Hi,Forget about my previous mailMy gyro was dead 🙁, tried with a new one and all works now.No I need to tune the parametersBRAl. I did not want to tear my car down so I used sensors and motors from my NXT kit. To make the Balanc3r work, I had to rearrange a few items in your building instructions. When I executed the program, got the one beep, then 2 beeps and then the Robot started to balance, waited for 7 secs and then went straight forward at high speed, fell down and then stopped with “ERROR” showing on the screen.Before delving into your program for learning,I will try your program using the formul3r car as the robot. If this fails, then I will finish reading your book and try building the robot according to your instructions. Thanks for posting this, I’m rather new to mindstorms.

I’ve ben working on translating the HiTechnic balancing bot program(NXT-G) to (EV3-G). I’ll keep working on it and compare it to your program (which works great!!) and see if one is better than the other. Thanks again!!!!!!!!!!!!!!
P.S I tried your program with a bot like the Educator bot made from #31313, and a different bot of my own design and it still worked!!!! Is it okay if I post the link to here on Mindstorms Community and pics of your bot?. As I have only one large motor is available for now, I made a single motor but 2 wheels robot base on BALANCE3R with small change on robot structure and program. It is able to keep stand stable and move forward/backward, but it cannot steer (of course it cannot).
It is my first self-balance robot. Thanks Laurens!One question, the ReadEncoder block contains one parameter 57.3.
What this value means? Does it depending on robot structure? The robot is higher and bigger than BALANCE3R do I need to change this value?.
Thanks for a good program in EV3 language. After re-reading your answers and directions again, I finally got your balancing robot to run.I run my robot on a rectangular (3ft by 6 ft) board with 4 inch walls. What I want to do is lower the ev3 Sensor from the top of the robot down near the wheels. Any idea if this will work without adjusting any of your parameters.Next point is that I want to build the balancing robot using the VEX Cortex system. I believe that I can make a bigger robot using your code (robotc).
I like to program in “C” type code.Your book was a big help in getting me going with the EV3 system. Hi Brian,That’s correct. I didn’t use the Color Sensor in the example program, but the program was designed in such a way that you can add such features yourself.I encourage you to look at the basic GyroBoy program to start with. You can use the Color Sensor to make the robot drive in different directions (Using the light blue Move blocks) when it sees different colors.All of the balancing happens in the background, so you won’t have to worry about it.To begin, try modyfing the wait blocks in the drive control loop. Currently, they wait for 7 seconds before changing the speed with the Move block. You could modify these Wait blocks to wait for a specific color, using Color mode.
In this way, the robot will, for example, drive forward until it sees red, rather than driving forward for 7 seconds. Hi Laurens,You did a great job! I’ve downloaded your EV3 code and realized that you’ve implemented both robots with support of 3 gyro sensors:– Lego– Dexter Industries– HiTechnicI’ve reviewed difference in the EV3 code between all three sensors. It seems that all differences are in a GyroRate block where for:– Lego and Dexter Industries sensors you use gyro rate as is– HiTechnic sensor you take raw value from gyro and divide on -4Why am I explaining all this? Because I have an AbsoluteIMU-ACG gyro from Mindsensors. Thus I want to adopt (if necessary) your EV3 code to make BALANC3R with this gyro work.I remember that one of your first balancing robots was built with AbsoluteIMU-ACG gyro. Perhaps, you can provide coefficients that are specific for Mindsensors gyro?
Or should it work as Lego and Dexter Industries gyro out of the box?Thanks in advance,Andrey. As I’ve seen with some, I built BALANC3R but kept getting ERROR on the brick after it ran quickly and fell over. I tried a dozen times or more with no success. I double check my build and firmware versions and all was correct.
Then, out of the blue it worked once – I was so excited! What I learned over time is that the ERROR message occurs whenever the robot cannot find its sense of balance. For me, it is a very delicate procedure to place the robot at just the right position (every so slightly leaning backwards from an equilibrium position), so that when it starts running it balances itself. Also, I delicately hold it upright with the slightest amount of pressure, so as not to hinder its movement when it starts under its own power. Now that I’ve practiced, I can get it going correctly about 90% of the time.
Hi Laurens,I built and tried the GyroBoy and it works great. First I had forgotten to import the sensor blocks which resulted in a number of errors listed above: ERROR, fast moving backward (in my case), Importing and activating the sensor blocks and restarting LabView took care of that. I’ve been looking at your code and come across variables(?) in grey programming blocks. The palette shows the standard blocks (green, yellow, blue, red, etc) but no grey blocks. Can you tell me where they come from?Thanks in advance.Kind regards,Frank. Hi Laurens,Ordered your book on march 19th (Standaard Boekhandel), got a message on march 30th that it had been sent (was on order from the distributor that long).
Lego Nxt Segway Program
Got another message on april 2nd that it had been returned damaged. Now still awaiting delivery (grinding teeth). By no means your fault of course. Just to illustrate that patience is a virtue 😉Anywho. We (Overpelt Lego Builders Club in association with KWB Koersel) had a build and show weekend a week ago where I showed the Gyroboy. Very well received!
Eyecatcher and many questions.Thanks for the excellent project!. Hello, i have build Balanc3r using nxt motors set but with an ev3 brick and lego gyro. That means i had to modify the design, since the nxt motors are different in terms of both holes and axle alignment. I tried to maintain the sensor on the same vertical as the wheel axes, and the center of the brick on the wheel axle also. I am using 62.4×20 diameter tires so i set that up on the program (still trying to source some 43.2×22’s and rims for them). I have fresh batteries. I ditched the IR sensor for now, and disabled the move code.
Basically i should have a Balanc3r that stands in place. The robot is started laying down, so the gyro is not drifting. I can also post some photos of it.Every time i start the robot, it goes in only one direction (depending on how good i balanced it) and then goes ERROR. I have built the light sensor segway with a fair bit of success with the same makeshift lego set, but this one with the gyro is not as successful.Any suggestions i could try (tune the parameters?)?. Hi,I’ve been going through your balance loop because I like to figure out how things work and I must say that I am very impressed. I am currently trying to build a robot that balances on one wheel with the help of the my blocks you created here. There is one particular piece of the program that I simply can’t wrap my head around and was wondering if you could help.
That is, the ReadGyro block. I simply don’t understand what’s going on at the beginning of the code and why.
The following is the main question I have.What does the ‘mean’ variable represent? I tried for so long and couldn’t understand why the mean subtracted from the current value gives the angular velocity. I thought the value outputted from the GyroRate block was the angular velocity itself.
If you could shed some light on this I would really appreciate it. Thanks and always a fan 🙂. My Gyro boy will not balance and the programming I am using is the one you linked. Once I stand him up and release after the second beep nothing happens except for him falling over and saying error I was super excited to build this but am not getting very frustrated.
I have gone through all of the things that may be wrong but he just doesn’t seem to be working and I have followed all the instructions please help I need this robot to work for a huge school project and i was certain it was but now it is completely failing.PLEASE REPLY!. Also, don’t forget to download and install the driver (or block) for the gyro sensor from the Mindstorms website as per the instructions in Step 2 above. Without the driver installed, the robot will never work, whatever you try.And, I find that the support (Gyro-Boy building instructions steps 1 through 17) helps real well to keep the robot up right when starting the program.As Fred said: the robot needs to be at its equilibrium when starting the program.
It is at this time that the position of the gyro-sensor is zeroed. If this happens when the robot is e.g. Leaning forward (even only one degree) the robot will always try to adjust deflections to that zero position, which is leaning forward. This will always end up in an ERROR status. Hi, i’m trying to get the Balanc3r with infrared remote control an extra ultrasone and Button sensor to make noise when someone comes close or say something when you push on the button.But now it looks the balancing functions can’t keep up and the robot falls.Is there a way to let them work together or is the processor not quick enough to calculated all the code?When i watched the NXTway-GS balancing robot i noticed that is drives much faster then the balanc3r, is this possible with EV3 or not?Thanx in advance,Allan.
Hi, I am retired from a technical profession and I discovered Lego and Mindstrom thanks to you book, with a lot of fun both for me and my grand children.Thank you for your very interesting site!I have built Gyroboy and made some modifications:I have changed the position of the color detector so that it allows gyroboy to walk on a table without falling out of it. See here:I also added the IR sensor to be able to drive Gyroboy.Nevertheless, I tried to change the beep before the driving loop on your program example to have Gyroboy say: “Let’s go now!”, but it seems that it interrupts the balancing loop too long, because it makes it fall most of the times.Is there a way to do this without interrupting the loop too long?.
Hi, I’m a researcher in robotics and AI and I am interested in using this as part of my research, it’s a very well built controller!I only have two questions that I don’t understand about the code used, if you don’t mind giving me some info?1) When getting the motor speed and motor position values, you divide both by 57.3. Is this just a constant? Otherwise, what is the purpose of that number?2) When you get the angular rate and use it in the running average, you use dt x 0.2. Why do you multiply it by 0.2?Thanks a lot!.

Your code was amazing! It worked right out of the box. I just started a Masters program in control systems myself and built the gyroboy to see if I could understand more about PID. I’ve only done line followers so far. Your Lego code looks fairly straight forward to understand so far in the basics section.I notice you have a very high integral gain which I assume is causing the oscillations and long settling time when I push the robot.
Geforce 7000m windows 8 driver. Operating System, Windows Vista 64-bit. This is a reference driver that can be installed on supported NVIDIA GeForce notebook GPUs.
I just started playing with it trying to bring the Ki lower. Have to tried to tune for such scenarios like pushing the robot so that there woulda be less oscillation?By the way, I put a little platform on top of the robot to hold my water bottle. Your code is able to compensate for the load and it runs just fine. Awesome!Thanks for the contribution!Chris.