Announcement

Collapse
No announcement yet.

EV3 classroom (rant)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • EV3 classroom (rant)

    I just don't know why, but it's just bad.
    EV3 classroom is a app for robotics, I have it and we (students) are doing the current one, cargo connect.
    Every sensor is great! BUT that color sensor, IT RUINS EVERYTHING!
    There is a issue with the color sensor detecting colors! I failed a assignment using 3 sensors. It's that cursed color sensor!
    Another issue (and the worst) is... Bluetooth.
    Both the Bluetooth and the USB cord suck!
    Bluetooth: You can't connect to your bot because of the stupid Bluetooth setup!
    USB:Takes too long to connect, also disconnects for no reason.
    I do like lego, but they should have already fixed it! whoever made ev3 should have already fixed these issues!
    (this is about the new update, and current)
    Well then... Bye!

  • #2
    EV3 is a dead product. You would like the quick connect times and good BT performance of the new platform, Spike Prime.

    My guess about the color sensor is you don't understand the limitations of color detection and this is causing you to use the sensors in ways that are not appropriate.

    The most common problems I see using the color sensor are:

    1. Trying to identify colors that don't match the 7 colors the sensor recognizes. Green is very picky.
    2. Trying to use color detection with the sensor too far from the object (should be 1-2 cm away).
    3. Trying to use color detection while moving.

    The first problem is easy and impossible to solve. Test all your targets with the sensor to verify it can detect the color. If the sensor cannot identify the color under ideal conditions then the solution is don't use color detection as part of your solution. At least not for that color. Easy!

    My first attempt using the color sensor was sorting M&M's. It was not very good at this because the Green M&M is not at all similar to LEGO Green. Did I mention that the Color sensor is calibrated to identify LEGO brick colors? It was also difficult to center an M&M in front of the sensor at the correct distance. Some colors sorted well; yellow and red for example. Green was usually identified as No Color. Brown sometimes was identified as Black. The sorting wasn't horrible, but it wasn't perfect. This was fine because I ate the miss-sorted candies, but I would not like to use this as part of an important FLL mission.

    The reason for the moving problem is pretty obvious. What is the color of white/black or white/red or red/black? If the sensor is aimed at two different (or three or more) colors, what should it report. Quite often the sensor doesn't get a great match for any color and reports No Color, but sometimes it gets confused and reports a completely different color. If you are trying to identify colors while your robot is moving there will be a lot of times when the sensor is seeing more than one color. This happens as different colored objects move in and out of view. During these transitions you cannot depend on the color reading. If you want to use color detection you should ignore the color reading until you know you are in a good position to read the color.

    Most teams quickly ditch the idea of looking for a color and start using the sensor in "reflect light intensity" mode. This is more robust (less problems) that identifying colors, but a bit more limited. It is hard to reliably tell a blue line from a black line using reflected light intensity, but it does a great job identifying when the sensor moves from a white background to a dark line. If you want to know what color line you could use the two modes in combination. Drive using reflected light intensity until you see dark, stop, check what color you see.

    The main thing limiting your success is your creativity. The robot cannot do everything perfectly, but what would be the fun of that? Your robot will do some things very well and some things poorly. Your solution should take advantage of the things it does well and limit how often you have to do the things it isn't good at.

    Comment


    • #3
      Originally posted by Dean Hystad View Post
      EV3 is a dead product. You would like the quick connect times and good BT performance of the new platform, Spike Prime.

      My guess about the color sensor is you don't understand the limitations of color detection and this is causing you to use the sensors in ways that are not appropriate.

      The most common problems I see using the color sensor are:

      1. Trying to identify colors that don't match the 7 colors the sensor recognizes. Green is very picky.
      2. Trying to use color detection with the sensor too far from the object (should be 1-2 cm away).
      3. Trying to use color detection while moving.

      The first problem is easy and impossible to solve. Test all your targets with the sensor to verify it can detect the color. If the sensor cannot identify the color under ideal conditions then the solution is don't use color detection as part of your solution. At least not for that color. Easy!

      My first attempt using the color sensor was sorting M&M's. It was not very good at this because the Green M&M is not at all similar to LEGO Green. Did I mention that the Color sensor is calibrated to identify LEGO brick colors? It was also difficult to center an M&M in front of the sensor at the correct distance. Some colors sorted well; yellow and red for example. Green was usually identified as No Color. Brown sometimes was identified as Black. The sorting wasn't horrible, but it wasn't perfect. This was fine because I ate the miss-sorted candies, but I would not like to use this as part of an important FLL mission.

      The reason for the moving problem is pretty obvious. What is the color of white/black or white/red or red/black? If the sensor is aimed at two different (or three or more) colors, what should it report. Quite often the sensor doesn't get a great match for any color and reports No Color, but sometimes it gets confused and reports a completely different color. If you are trying to identify colors while your robot is moving there will be a lot of times when the sensor is seeing more than one color. This happens as different colored objects move in and out of view. During these transitions you cannot depend on the color reading. If you want to use color detection you should ignore the color reading until you know you are in a good position to read the color.

      Most teams quickly ditch the idea of looking for a color and start using the sensor in "reflect light intensity" mode. This is more robust (less problems) that identifying colors, but a bit more limited. It is hard to reliably tell a blue line from a black line using reflected light intensity, but it does a great job identifying when the sensor moves from a white background to a dark line. If you want to know what color line you could use the two modes in combination. Drive using reflected light intensity until you see dark, stop, check what color you see.

      The main thing limiting your success is your creativity. The robot cannot do everything perfectly, but what would be the fun of that? Your robot will do some things very well and some things poorly. Your solution should take advantage of the things it does well and limit how often you have to do the things it isn't good at.
      Well I agree with you.

      Comment


      • #4
        I've been looking for a decent review of the newer products. My team has 10+ EV3s. We have a large collection of motors and sensors as well. Every year we build about five identical robots for the team. Replacing the hardware will be expensive, to say the least. (We use the other sets for classes and things outside of FLL).

        As for the software, we have been using labview since forever. We have returning kids each year, and they are comfortable with what they have done. They very much like to build off of the code they have used before. Not trying to brag, but I would definitely consider my team pretty advanced with their coding. But the returning kids would hate it if I came in on the first day of practice and told them that they needed to convert all of their old code to the new code. To put things in perspective, I have not personally used Classroom yet. I have only seen screenshots of it.

        I am thinking about making the SW switch this coming year. I have a couple of really strong programmers that I can work with over the summer to try converting our standing labview code to classroom. I don't see us switching HW for some time, unless unless we get a few of those large technic dump truck models filled with cash!

        So, before we get started, does anyone have any tips/tricks/lists of things to watch out for? What can we easily do with labview that will not work with classroom (remembering that we are still using EV3s)? Code wires? Concurrent code rails? Sensor blocks? Myblocks? Ctrl-I Inspect to manage the brick? Port View on the laptop? Commenting? Speed of execution? Code debugging on the laptop (can we see what block a program is executing)? BT connection? USB connection?

        Thanks in advance!
        Norfolk, Virginia, USA
        FLL Coach and Regional Tournament Head judge since 2014

        Comment


        • #5
          You should download the software and give it a try. Things I noticed quickly that are related to your concerns.

          A library of my-blocks is impossible in EV3 classroom. You can copy my-blocks between projects by manipulating the project files outside the EV3 classroom software, but there is no way to import a my-block into a project using the EV3 software. Copy/Paste between two projects does not work and boy is it needed.

          There is only one "file" per project. Scratch is one big sheet of paper that contains all of your code, including my block code, and you slide it around to find what you want to see. I put my-blocks together way off to the right where I cannot see them. This kind of gives me a "program screen" and a "my-block screen".

          There are no wires in EV3 classroom. You'll use variables to pass information. At least you don't have to worry about typo's in Scratch like you did in the old EV3 software.

          For parallel execution you'll use an event to start another code stack. This is how the old RCX brick programs worked. And the Spike prime controller is yellow, just like the RCX. Everything old is new again!

          Comments look like post-it notes. There are floating comments and comments that are connected to program blocks. They are collapsible which is nice. The connected comments move when you move their program block. The floating comments can be moved by themselves, but lock in place when collapsed. I collapse most of my comments to lock them in place.

          Port view in EV3 classroom is really nice.

          There is not any code execution feedback of any kind to help with debugging. You can look at variable values in real-time and of course you can use the displays and sounds. I am regularly surprised by how much more I like the new "large brick" over the EV3. The 5x5 LED matrix is sooooo much more useful than the EV3 display when debugging. I could only read the display while holding the robot in my hand. I can see the matrix all the way across the table,

          I don't know what you mean by "speed of execution". Since it sits on top of the existing firmware, I expect speed of execution will be about the same. I have not run any kind of tests, but It line follows just fine. Or are you referring to the long startup times or program run times that Micropython has on the EV3? I just had an FLL meeting and the kids did some rapid prototyping. Download and run times are just like they were with the old EV3 software. Long power up times. A few seconds for download and run. Program start times about a second when using the run button on the brick. Almost faster to use download and run from the laptop. One time the laptop software went into a forever busy loop during a download and we had to shut down and restart EV3 classroom, but that was 1 time in maybe 30 downloads. And it only takes 10 seconds to restart the software and reconnect to the EV3 over BT.
          Last edited by Dean Hystad; 10-26-2021, 03:44 PM.

          Comment


          • #6
            Originally posted by Dean Hystad View Post
            Comments look like post-it notes.
            I created a My Block with no label and one input. It just looks like a red block with an oval. Then I put comments into the oval instead of using the post-it style comments.

            The My Block doesn't need to do anything however, you could optionally display the comment on your computer while the program is running, which is helpful for debugging. You could alternatively add the comments to a List and then download the list to your computer after the program completes. Basically, you can use it like a log file, rather than simply comments.

            Using an empty My Block provides in-line comments that move nicely with the stack they are in. I only use post-it notes for really big comments.

            Comment


            • #7
              If you have a collection of EV3s and are interested in trying another language in the off-season, you should give Robot JavaScript a try. This compiler is available from Microsoft's App Store and only runs on Windows 10/11 computers. JavaScript is an easy language to learn for beginner students. There are no compiler directives or special "libraries" to include. This software works with EV3s using the standard Lego firmware. So, you don't have to alter the operating system of the robot. You can compile programs using Robot JavaScript onto the same robot that you are also using Lego Mindstorms EV3-G language.

              Comment


              • #8
                Sorry, Dean Hystad , I just saw your response. Don't know how I missed it.

                Our season is wrapping up and there is a lot of talk about us getting new Spike hardware in time for the next season, so I am giving this a hard look. I still don't have a Spike Prime, so I can't test yet, but I am thinking about getting one just so I can get a head start on it. I am pretty sure my kids will want to use Micro Python since it is an option. When I was referring to "speed of execution" I meant when you press the start button, does the robot start right away? I tested some other software last season on the EV3 (think it was JS???) and when you pressed the "go" button, it took like ten seconds before the robot started moving. That won't work with FLL for sure. So does the Spike Prime respond quickly when the announcers call out 3-2-1-Lego? Question applies to both block and micro python.

                One last question: If the kids go the Micro Python route, I would think they could make their own libraries which would take the place of MyBlocks, right? And those could be shared between different laptops/students.
                Norfolk, Virginia, USA
                FLL Coach and Regional Tournament Head judge since 2014

                Comment


                • #9
                  If it's taking around 10 seconds to start the program, then that's probably ev3dev-lang-python on the ev3. I haven't timed the program start-up speed on the Spike, but it seems fast. On the ev3 using pybricks, it's around 1-2 seconds to start.

                  For FLL, my kids often map the program for each run onto the buttons on the ev3 (eg. "Up" to run the first run, "Down" to run the second). It's much faster than scrolling through the menu and negates the issue of the slow start-up. Note that if you're using ev3dev-lang-python, the slow execution speed can still be an issue.

                  Using pybricks micropython on the ev3, you can write libraries (modules in the python terminology) to share functions easily. Haven't played around much with the Spike so I'm not sure about that, but you should at least be able to cut and paste functions easily.

                  If you're using the blocks based programming environment (ie. ev3 classroom), this https://quirkycort.github.io/ev3copy/ can help with sharing my blocks between programs.

                  Comment


                  • #10
                    The Robot JavaScript application in the Microsoft Apps Store starts programs immediately. That's because the JavaScript is compiled into a standard LEGO program file on the robot that has the same format as files compiled by EV3-G. When you select a file to run on the robot, it runs immediately.

                    Comment


                    • #11
                      Originally posted by Dean Hystad View Post
                      You should download the software and give it a try. Things I noticed quickly that are related to your concerns.

                      A library of my-blocks is impossible in EV3 classroom. You can copy my-blocks between projects by manipulating the project files outside the EV3 classroom software, but there is no way to import a my-block into a project using the EV3 software. Copy/Paste between two projects does not work and boy is it needed.

                      .
                      This link was posted in an FLL forum. It's a browser app that allows you to copy block sets from one file to another.



                      Comment


                      • #12
                        Pyton on Spike Prime is a little odd. You can create modules, but you download them like programs and then have to run a loader program, that you write, to copy the module to a place where your programs can import it. Th process is annoying and error prone enough that convenience trumps design, and I put all my "modules" in one file.

                        Spike Prime Python comes with two robot interfaces. You get a well documented Spike Prime interface, and you get an undocumented micro Python robot interface. You can mix and match as far as I can tell.

                        There is little Python debugging support other than using the display and sounds. The display is a 5x5 matrix of dimmable square lamps, so no screen printing. Sounds are limited to tones, or the click sound. The software has an extensive sound library, but these are played on your laptop, not on the brick's tiny speaker. If you launch the program from your laptop you can hear the sounds, and the "console" displays the output of "print" commands.

                        Comment


                        • #13
                          We are just beginning to figure this out. We are using python and VS Code, and have the code completion working. We use a plugin that enables us to load the program to the hub and run it. We even have a separate module for our BaseRobot class, where we have our custom code (think shared myblocks), like gyro drive and gyro turn. We share all of the BaseRobot class module with all of the kids and upload it to their hub. Hopefully they don't find any bugs in it or else we will have to fix the bug and re-upload them to all of the hubs.

                          It is really unfortunate that debugging doesn't work at all. We hadn't noticed what you said about playing sounds on the laptop instead of on the hub. What the heck is that for?!?!? That makes no sense, and it should be fixed.
                          Norfolk, Virginia, USA
                          FLL Coach and Regional Tournament Head judge since 2014

                          Comment


                          • #14
                            Originally posted by SkipMorrow View Post
                            We are just beginning to figure this out. We are using python and VS Code, and have the code completion working. We use a plugin that enables us to load the program to the hub and run it. We even have a separate module for our BaseRobot class, where we have our custom code (think shared myblocks), like gyro drive and gyro turn. We share all of the BaseRobot class module with all of the kids and upload it to their hub. Hopefully they don't find any bugs in it or else we will have to fix the bug and re-upload them to all of the hubs.

                            It is really unfortunate that debugging doesn't work at all. We hadn't noticed what you said about playing sounds on the laptop instead of on the hub. What the heck is that for?!?!? That makes no sense, and it should be fixed.
                            Spike word blocks also only plays beeps on the brick. Other sounds are on the computer. The beep playing on the brick is almost too quiet to hear at 100% volume. I've only tried it on three bricks, they're all the same, so not broken speaker on one of them.

                            Comment

                            Working...
                            X