Ideal vs Realistic robot behaviour
Page 1 of 1

Author:  wahk [ Sat Feb 15, 2014 10:03 pm ]
Post subject:  Ideal vs Realistic robot behaviour

I understand the virtual NXT tries to simulate a real physical robot where the movement is not precise. For example, a robot programmed to turn 90 degrees will not always turn 90 degrees when the same program is run. It can be a little less and a little more depending on various factors such as speed, traction and motor conditions. An ideal robot will be one that turns the same amount every time it is run.

Is it possible to include an option to set the 'realistic' level? For example 0 = Ideal, 100 = realistic. The option to set to 'Ideal' will allow beginners and young learners to complete their activities easier. I find that most kids (under 12) gets a bit frustrated each time they run the program and the robot behaves a little different while trying to complete the activities. Setting to 'Ideal' also allows the kids to focus just on the programming aspect of the robot.

Author:  jbflot [ Mon Feb 17, 2014 6:00 pm ]
Post subject:  Re: Ideal vs Realistic robot behaviour

The Robot Virtual Worlds are built using a programming software called Unity, which includes an actual physics engine. The Virtual NXT itself isn't inserting any kind of purposeful error into the equation - it actually has much more to do with the physics engine in the software and the processing speed of your computer.

When the robot moves, it's actually the wheels spinning across a surface, which as friction, that make it move. When the physics engine calculates these movements, it does some amount of rounding in order for it to happen in real-time. This is not always consistent from run to run. Also, the rate that sensor data is generated in the world, updated, and sent to the Virtual NXT is somewhat dependent on your computer's speed - a little bit of lag can cause some inconsistency.

For best results, go to the Settings/Options section of the virtual world and set the quality settings to the lowest. Also, slowing the robot down in your programs and using encoder data to control movement will help yield the most consistent results.

Author:  wahk [ Tue Feb 18, 2014 10:59 pm ]
Post subject:  Re: Ideal vs Realistic robot behaviour

I would like to demonstrate a simple 90 turn which I have trouble repeating using a single 'Large Motor' block.

Target World: Curriculum Companion Table
Robot: Rembot (w. Touch)
Table: Utility (Turn Table)
Software: EV3
Large Block Parameters: Port B, ON for rotation, power:20, rotation:1, brake on

This simple demonstration will turn the robot about 90 deg left. When it is run the first time, the robot behaves normally with a pivot turn to the left and the 'C' wheel fixed on the table and not turning. However, if I will to click the play button (in the Curriculum Companion table) to repeat the program, the robot behaves differently. You will notice that the 'C' wheel slowly turns and the robot can therefore never achieve a 90 deg turn. The same can be observed if two 'Large Motor' blocks are placed adjacent to each other. The first block will behave normally but the 'fixed' wheel on the second block will turn. I believe this is a bug in the program. I would like to hear your advise. Thanks.

Author:  rcahoon [ Wed Feb 19, 2014 11:47 am ]
Post subject:  Re: Ideal vs Realistic robot behaviour

Hi wahk,
When I tried this out, everything worked fine for me. Can you post your program file to the forum so I can try running it (in case I've missed setting some parameter).

One thing that I noticed is that power level 20 is close to the border between where the virtual robot will move and where it won't (due to the friction model the virtual robots use). Try using a higher power level and see if that fixes your problem.

Also note that using Large Motor block will result in a less accurate move than if you use one of the Move blocks, so you may be getting some inconsistency from that.


Author:  wahk [ Wed Feb 19, 2014 6:28 pm ]
Post subject:  Re: Ideal vs Realistic robot behaviour

Hi Ryan,
Please find attached, the EV3 file. I have increased the speed to 40 (from 20). There are two programs. They are similar except the first (1Rotation) has only 1 rotation and the second (2Rotation) has 2 rotations.

You will notice that the first move block behaves as expected. However, on the second (identical) move block, you will notice that the 'pivot' wheel is also rotating (slowly) and hence the robot does not turn as expected. The 'pivot' wheel should not rotate at all.

You will notice that the first move block behaves as expected initially. Towards the end of the rotation (still on the first block), you will notice that the 'pivot' wheel starts to rotate. Like the first program, the 'pivot' wheel on the second move block also rotates when it should not.

In addition, if you click on the PLAY button on the Curriculum Table window after the very first run, you will notice that the 'pivot' wheel always rotate.

I hope you can observe the issues above.


Attachments: [4.06 KiB]
Downloaded 828 times

Author:  rcahoon [ Thu Feb 20, 2014 6:09 pm ]
Post subject:  Re: Ideal vs Realistic robot behaviour

Hi Wah,
I see what you're talking about now. Virtual NXT is giving the proper commands to the virtual robot; I believe the issue here is that the friction forces being simulated on the virtual robot do not match the physical robot. Simulating the physics accurately with the tail caster on that robot model is quite difficult. You may get better results from one of the other robots.

Author:  wahk [ Thu Feb 20, 2014 11:07 pm ]
Post subject:  Re: Ideal vs Realistic robot behaviour

Hi Ryan,
I believe the problem may be caused by something bigger apart from the friction model. In fact, the friction model may not be the problem at all. To demonstrate, I have attached another EV3 project with two programs. Both programs tries to move the robot along a square. A steering block is used to drive the robot straight. A tank block is used to make the pivot turns where the 'C' wheel should not rotate while the robot is turning.

In Program1, we have a basic program to do just that but as we have discuss earlier, there is a problem where the 'C' wheel rotates slowly. I don't believe this is due to the friction model as what the robot needs to do is to 'lock' the 'C' wheel since no power is applied to that wheel.

In Program2, the only difference is that I have set the power to the 'C' wheel (or motor) on the tank block as 1. You will observed that the 'C' wheel does not rotate (maybe a tiny bit) as we would expect. The robot now behaves much more like the physical robot.

So the question is why would that small change improves the behavior of the virtual robot. Is setting the power to zero causes the virtual robot to behave strangely?

I have plan to use the virtual world for our classrooms. If the virtual robot behaves too differently from the physical robot, it makes it more difficult to teach the kids. Using a different robot like the Mammal Bot is not an option since our classroom is equipped with Mindstorm robots. Furthermore, the Mammal Bot drives are not setup like the RemBots where both the front wheels are powered. I think the Mammal Bots have one powered wheel at the front and one at the back and diagonally across.

Hope you can advise further.

Attachments: [7.05 KiB]
Downloaded 841 times

Page 1 of 1 All times are UTC - 5 hours [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group