What's next after 0.8.1 beta?

This is where you talk about the EV3 software itself, installation issues, and programming talk.

Moderators: roger, gloomyandy, skoehler

What's next after 0.8.1 beta?

Postby AlanG » Thu Aug 14, 2014 2:32 pm

Can the leJOS development team give us any idea of when the next EV3 leJOS release will come? Will it be another beta? What will be its most significant features?
AlanG
New User
 
Posts: 15
Joined: Wed May 21, 2014 10:02 pm

Re: What's next after 0.8.1 beta?

Postby gloomyandy » Thu Aug 14, 2014 3:23 pm

Yes it will be another beta. Main features as far as I can remember (Lawrie, please feel free to add)...
* Much improved audio playback
* Fast i2c interface (100KHz as well as 10KHz)
* Raw uart access
* Updated automatic device detection (avoid causing i2c data errors)
* Lots of fixes to various sensors
* Various classes renamed
* Added fsck and use use it to fix sdcard errors
* Support for web cams
* Bug fixes
* Java 8 support
Some of the above is already in git master, some is still being worked on.

Are there any features you are particularly looking for?
User avatar
gloomyandy
leJOS Team Member
 
Posts: 3993
Joined: Fri Sep 28, 2007 2:06 pm
Location: UK

Re: What's next after 0.8.1 beta?

Postby AlanG » Thu Aug 14, 2014 4:44 pm

Based on several years' experience designing software for both military and civilian GPS systems, I have a few recommendations for changes to the GPS NMEA message classes. Among these, my main request would be for the conversion and reporting of latitude and longitude as double, rather than float. Currently available GPS receivers are quite capable of reporting NMEA messages containing lats and lons that are accurate to about one meter - the 5th or 6th decimal place of a value in degrees. So, for high latitudes (near the poles) or high longitudes (near the International Date Line), the lat and lon values in degrees are actually accurate to 8 or 9 digits. An IEEE 754 floating point "float" value is not quite that good. A "double" value is.

Also, as part of the documentation in a future release, could the development team provide execution profile data on the high-rate threads that are part of the leJOS code? I am interested right now in the PID thread that runs in the JavaRegulatedMotor. Your code shows that that thread runs every 4 ms, i.e., 250 HZ. At that repetition rate, what percentage of an ARM9's throughput does that require? I'm concerned about the effect of using NXTRegulatedMotors (or any regulated motors) in my multi-threaded real-time robot code.

Thanks!
AlanG
New User
 
Posts: 15
Joined: Wed May 21, 2014 10:02 pm

Re: What's next after 0.8.1 beta?

Postby gloomyandy » Thu Aug 14, 2014 5:53 pm

The default motor regulator is no longer Java based (and so does not have a high priority thread). The PID loop is executed in a kernel module and actually runs at interrupt time. The older Java based regulator is provided as an alternative, but it is not the default and will not normally be used.

If you are concerned about real time issues then you probably need to run your own tests, from my limited testing the jit and gc are bigger issues than high priority threads (unlike on the NXT Java on the EV3 does not use a pure priority based threading model, so even with high priority thread other threads will always run). The EV3 is not as good a real time system as the NXT, though it obviously has other advantages. The jit in particular causes pauses in the running code (this was one of the reasons we moved the PID code out of Java). If you do run such tests we would be interested to see the results.

As to the GPS code, I'm not sure if/when this will be addressed. I suspect it will not be a high priority item as not many of the current dev team have GPS devices and our past experience has been that thy are of little use for robots that operate indoors. Do you plan to operate your robot outside? Do you have access to a GPS system that works indoors? Feel free to update the class to use doubles it should be pretty straight forward to do so, if you do then I'm sure we would be happy to include the updated code in the main release.
User avatar
gloomyandy
leJOS Team Member
 
Posts: 3993
Joined: Fri Sep 28, 2007 2:06 pm
Location: UK

Re: What's next after 0.8.1 beta?

Postby AlanG » Thu Aug 14, 2014 7:26 pm

Thanks for mentioning the movement of the PID algorithm out of the Java VM and into the kernel. That assuages some of my concerns about real-time performance. Previous experience with programming Java to work in real time has taught me to write tight thread loops that just:
1. Do all essential work, then, as soon as possible,
2. Thread.sleep
I'm already using System.currentTimeMillis() quite a bit to tell me how these threads are doing. Except for the first iterations of threads, jit compiling does not seem to be a problem - "the math" runs fast, it's the reading of sensors that takes up the time! I make the threads operate on instance variables and method-local variables, so that the same arrays and Stringbuffers get used over and over. So, I'm trying to keep "new"s and gc to a minimum. I also keep the execution of any "synchronized" methods or critical sections "short and sweet".

As to GPS, I use a consumer Bluetooth GPS called the Dual XGPS150. It's made with a SkyTraq GPS chipset, one of the three top-performing consumer chipsets, along with MTK and SiRF. All such devices are capable of acquiring and tracking satellites indoors routinely, although the accuracy of indoor fixes will generally be lower than the accuracy of outdoor fixes. One can characterize indoor fixes as "accurate to + or - 1 room or office", whereas outdoor fixes from these chipsets are "accurate to + or - 1 square of concrete on a paved sidewalk" (about 1 square meter). Also, either an indoor or an outdoor fix can correct a robot's internal timekeepers to atomic clock accuracy.

I have 6 short text files that I can zip and send you, so that you will have updates that I have made to your GPS NMEA classes. How do I transmit those to you?
AlanG
New User
 
Posts: 15
Joined: Wed May 21, 2014 10:02 pm

Re: What's next after 0.8.1 beta?

Postby lawrie » Mon Aug 18, 2014 7:37 pm

If you send the new NMEA classes to me at lawrie.griffiths@ntlworld.com, I will update leJOS to include them. I wasn't sure if anyone still used those classes. I tested them with my Holux device but have never used them for any project. There seems to be a lot of interest in the Bluetooth serial code, which unfortunately isn't very good at the moment.
lawrie
leJOS Team Member
 
Posts: 921
Joined: Mon Feb 05, 2007 1:27 pm

Re: What's next after 0.8.1 beta?

Postby lawrie » Mon Aug 18, 2014 7:45 pm

On the features on the next release, I think my main contribution is the remote control API that works with Android (which does not support Java RMI).
lawrie
leJOS Team Member
 
Posts: 921
Joined: Mon Feb 05, 2007 1:27 pm

Re: What's next after 0.8.1 beta?

Postby AlanG » Mon Aug 18, 2014 9:30 pm

Lawrie,

Thanks to you and gloomyandy for your prompt responses. I have just emailed you a zip file, per your instructions.

As to the Bluetooth serial code, I'm certain that a full implementation of the Bluetooth Serial Port Protocol ("SPP") is your fastest path to compatibility with all current and future Bluetooth GPS devices. Current plans for the GPS satellites all point toward GPS indoor performance getting better and better over the next several years. (And then, of course, leJOS' Bluetooth serial compatibility will also be needed for Galileo devices in Europe, GLONASS devices in Russia, and Beidou devices in China!)

As to Android functionality, I'm very much looking forward to building up a lot of Java SE robot control code on my laptop, then porting that code over to an Android smart phone. So, please "press on"!
AlanG
New User
 
Posts: 15
Joined: Wed May 21, 2014 10:02 pm


Return to EV3 Software

Who is online

Users browsing this forum: No registered users and 3 guests

more stuff