Archive for the ‘Robotics’ Category

This book review has taken me longer than usual. I have had a copy of this book for a while now, but I literally just finished it. The reason is not what you might expect. To put it simply, I got caught up in the book. I cant recommend this book enough. Laurens Valk did it again!

The LEGO MINDSTORMS EV3 Discovery Book is an essential book for both new and old MINDSTORMS builder alike! First off, the print quality off the book is excellent and this is key. As I spent hours building and referencing the diagrams in the book, it was helpful to have full color and high resolution images. As any LEGO builder knows, some parts are hard to see and the high quality images, coupled with Laurens’s excellent building instructions made constructing each bot a breeze.

If you have read any of Laurens’s other books, some of the bots might seem familiar. (SNATCH3R for example) EV3 is an awesome new platform and seeing the bots upgraded to take advantage of all the updates.  Laurens has bots for everyone, from cars to bugs. Each bot is an extreme joy to construct and program. The book provides excellent programming instructions to get you started, but like any LEGO set, the true excitement comes from building on that idea. For each bot, there were countless moments of “oh I bet I could made it do that!”. For example, I added a marker and had it drawing shapes on the floor (and then had SNATCH3R following the line!).

10346787_10202149765089508_989164222_nFor the seasoned LEGO MINDSTORMS Builder, there are excellent diagram on showing how to build with Technic. This would be super useful for teachers and FIRST LEGO League students.  One of the most innovative things Laurens presents is the use of graph paper with LEGO. As you can see in the image left, the grid really works well for figuring out angles and layout bot designs. This makes building complex mechanical designs or even super large robots significantly easier. Laurens uses this technique for more than just triangles, but you will need to get the book to see those!

In case it wasn’t clear by this point, I have really enjoyed this book. The book is a few hundred pages of LEGO MINDSTORMS awesome. I have been building robots with LEGO MINDSTORMS for well over a decade and a half and yet I still learned new techniques from The LEGO MINDSTORMS EV3 Discovery Book. I cannot recommend this book enough. Every LEGO MINDSTORMS builder will find something they enjoy in this book.  Don’t be surprised if you spend countless hours building, programming, and playing. It is an excellent reference that I am sure you will be visiting multiple times. In fact, this book hasn’t made it to my shelf yet. I think it might have a permanent home on my desk. Play well!

I want to share something I have learned in life. I hesitate to call it “wisdom” as I am not sure I have enough life experiences to make that claim. Whatever we call it, just consider this advice next time someone asks for help.

I have many things to be proud of, achieving the rank of Eagle Scout, the various academic awards during high school and college, success at finding a job, etc. All those things are special and I am grateful for the recognition. However, something always seemed missing to me. I can’t say any of that recognition motivated me. I can’t say any of it defined me. Something just seems missing.

Yet tonight, I have something to be proud of that surpasses everything. Tonight we recognized 11 high school students for an amazing FIRST season. These kids er… young professionals came together to do something remarkable. They raised over $30,000, they built a 100 lb robot, they created a team culture, and best of all they succeeded by winning the Rookie All Star Award at the Orlando FRC Regional. These 11 young professionals have a lot to be proud of. I was honored to be part of the journey: to see the dream become a reality. And tonight, I too am proud.

I have had this feeling before. Back in Terre Haute, Indiana after starting FIRST LEGO League Team, Team Storm. I have it when I attend any FIRST event, especially the FIRST World Championship. And most recently tonight, recognizing the achievements of FIRST Robotics Competition Team 5145, Wolfbotics.

So what is that bit of information I want to pass on? What I have learned from all this?

The things you’re most proud of in life will be the things you inspire others to do.

 

As this journey of life continues and new experiences present themselves, I know what actions define me as a person. I know that “an hour a week” will end up being so much more. But that time will pay in other rewards that I can’t even imagine. I may never be financially rich and that is okay. I am rich in happiness. I am living the “American Dream”. And most of all, I have the honor to be a source of inspiration for others. I have been blessed.

Tonight as I go to bed, I know that I changed the world. Maybe I didn’t bring world peace or cure cancer, but maybe I inspired the next young mind that will. And for that, I am most proud.

The Rookie All Star trophy the team gave me and the signed picture of the team.

The Rookie All Star trophy the team gave me and the signed picture of the team.

It is no secret that I bring LEGO robots all over the country. When I travel I usually bring a stock of EV3 flyers and stickers. What is a secret is that I used to spend countless hours putting a sheet of stickers in each flyer booklet.

With EV3, I thought I might go about optimizing this process. FLY3R is a LEGO MINDSTORMS EV3 bot that will put a sheet of stickers into a flyer booklet. The robot is simple: walk up, press button, receive flyer + stickers. Check out the video to see it in action!

The icing on the cake is that this entire bot can be constructed out of a single EV3 retail kit. Call it a “one kit wonder”! Over the next few days I will be working on some building instructions as I have a few people already asking to build the bot. The code is posted on the Downloads page of my blog. You can open it with the EV3 retail software. If you’re interested in building the bot, be sure to leave a comment below so you get notification of when the instructions are posted.

Port layout:
Motor A: Medium Motor – Sticker stuffing wheels
Motor B: Lare Motor – Flyer opening arm
Motor C: Lare Motor- Flyer opening roller wheels
Motor D: Open
Sensor 1: Button – Start stuffing flyers
Sensor 2: Open
Sensor 3: Color – Flyers present/in correct orienttion
Sensor 4: IR Distance – Detecting when the flyer is open

This is not my first post about FIRST, and it certainly wont be my last. In case you missed it, I was a mentor/coach for FIRST Robotics Competition Team 5145, WolfBotics. I have to give a shout-out to NASA here as they were our title sponsor and without them our team would not exist. As a coach/mentor, I helped the students design, build, test, and compete with a robot. At the Orlando Regional, WolfBotics won the Rookie All Star Award and was invited to the FIRST World Championship in St. Louis, Missouri. As a boy from the Midwest (I am from Ohio and did my undergrad in Indiana), I couldn’t wait to share some of the sights I grew up with. Naturally the St. Louis Arch and some of the amazing food. (Although they are yet to try Skyline Chilli.)

The first video above shows our pit setup on Wednesday night. It took a few hours, but I have it condensed to about 20 seconds for your enjoyment. Below is the trip from Gainesville, Florida to St. Louis, Missouri. We had a motor coach to drive us (thank goodness!) for the 13 hour drive.

Now everyone wants to know what the robot looked like, so below is a picture of our bot. I am super proud to say that it was all design, built, programmed, and operated by the students. When things went wrong, the team sprang into action and did an amazing job of fixing the bot. It was an excellent learning experience and I am looking for ward to the next season!

WolfBotics Bot

Finally, if you want to stay up with the latest from Team 5145, check them out on Twitter @WolfBotics!

So a few weeks ago I got a VEX IQ set. I have been working on mobile robotic arm. This video showcases the drive base for the robot. I have it working via remote. All the software is written in RobotC. This is just step 1, the arm will be the next challenge, but just wanted to share what I have been doing!

You can learn more about VEX IQ here and join the discussion forum!

Remember that Maker Faire demo I posted about a few weeks ago? Well as promised here is Part 2! This time I dive into the new features I added for the demo. The video format is a bit strange in that it presents a PowerPoint, but that was a requirement for a class. I ended up leveraging this work for my image processing class this semester.

One of the easiest ways to make a demo interactive is to kid a child a maker and say draw. That is exactly what this demo does. As the child draws, the robot or swarm will follow the line. I do some image processing to find the line. The first step is to reduce the search area. This is a huge time saver when it comes to processing and removes many of the issues of shadows or various markers and body parts the camera may see. Then it does a search in this region of interest (ROI) and looks for where the line intersects the ROI.

I tried to keep the new feature as streamlined as possible to avoid the issues of degraded performance. Image processing can be quite processor intensive. Since the code was already doing a lot of processing to get to this point, I wanted to ensure that any further enhancements did not add lag.

There is always room for improvement and one of those areas would be actually projecting the line to calculate the intersection. This would probably help for the cases where the line does not intersect the edge of the ROI, but that is a feature for another time. Check out the video for more details. It came together really well!

1386EN I have been working a lot with MATLAB and Simulink lately. For both my academic work and fun. If you recall the MATLAB demo I took to the Orlando Mini Maker Faire, you know that Simulink is an important part of that project. Simulink works really well for LEGO MINDSTORMS as its dataflow paradigm maps nicely to robotic interactions. I have actually been working on a tutorial to get people started with LMS and Simulink (hopefully will be posted in December or January).

So why the picture of the book? Well I love having a good reference for my work and I am currently reading this book. I will be writing a review for Getting Started With Simulink by Luca Zamboni next week, but  so far it has been a really good resource. It might be worth checking out if you will be working with Simulink. The book assumes you have never used Simulink and gets you up and running, very quickly. Check back for the full review next week!

I am happy to share Part 1 of the demo I took to the Orlando Mini Maker Faire. This video covers the basics of what The MathWorks provided me. As you can tell by the video, it is somewhat dependent on lighting. But let me describe what the base demo does.

WP_20131005_001

The setup is 3 NXT robots running Simulink code that communicates with my computer. There is a camera positioned about 6 feet above the robots. Each robot has a unique pattern that can be seen by the camera. Using this pattern we can determine the position and heading of each bot.

The demo tries to get the robots to form a triangle. The position of the triangle is determined by the user. The robots will follow the triangle as the user moves it.  Check out the video above to see the tech in action! While the video was shot in my apartment, the picture, right, was from the Orlando Mini Maker Faire.

Now I love sharing cool tech with people, but I also love to put my own twist on it. What if we made the demo interactive and allowed kids to draw lines? One might think a robot or a group of robots might follow that line. One might also thing that adding more lines of different colors might allow different robots to follow different lines. Of course that is all speculation.  Maybe the photo below will be a helpful hint. 😉

Part 2...

WP_20131005_008This past weekend was the Orlando Mini Maker Faire at the Orlando Science Center. I am not sure of the final attendance numbers, but I was busy the entire time. I brought a total of 15 robots to display. Naturally I had the Shuttle and segway bots, but this event featured a new NXT project in partnership with The MathWorks, makers of MATLAB and Simulink. The video will be coming (due to poor lighting at the event, I am having to shoot the video at home) but the project features control of the NXTs from MATLAB. Navigation is done by processing the image from a camera positioned above the bots, as you can see in the first picture. I will go into more detail soon, but The MathWorks provided a good foundation for the demo and I then added a few enhancements. The code running on the NXTs was written in Simulink and the image processing and control as in MATLAB. The bots communicated with the computer via Bluetooth. I was able to demo both the example The MathWorks provide and my enhanced version, but since the lighting was spotty, I was only able to do it once. (It was very sensitive to people walking by and casting shadows from the overhead lights.)

WP_20131005_001I also brought a long a few EV3 bots. I had a couple of ‘kit’ bots that were built with the instructions (EV3RSTORM and a robotic arm), but I also decided to make my own flyer stuffing robot. I will save the details of that bot for another post as well, but it is safe to say it was a hit with every one in attendance. You can see it right on the corner of the table in the picture below.

WP_20131005_003Below are a few more pics from the display. Everyone really seemed to like the interactive display. Other members of my LUG had displays that ranged from a trick or treating street, motorized technic models, and a BrickPi. We really had a nice showing and attracted a ton of attention.

WP_20131005_002WP_20131005_005WP_20131005_007I look forward to the next event, although I might need to scale it back a bit. 15 bots was crazy! Plus, I wasnt able to bring a few of my other projects. Stay tuned for more updates. I have quite a backlog and I hope to be updating them soon!

I have gotten several emails over the past few months asking about my RS485 blocks and how to increase the speed or why they cannot get enough information out of the brick in time. Through that email chain I developed some good examples and content which I will share here.

For this example lets assume you are using a Dexter Industries’ NXTBee and a USB xBee receiver. Let’s step through the timing for this at 9600 baud. 9600 baud means we can transfer 9.6 bits per millisecond or just over 1 byte.

Time 0 ms: Write data to RS458 Send in NXT.
Time 1 ms: NXT processes data and prepares to send.
Time 2 ms: NXT sending 1 byte of data. (9600 baud)
Time 3 ms: USB xBee receives data and send to computer.
Time 4 ms: Data arrives on computer.

It took 4 ms to send 1 byte of data. That is slow by any account, but the real issue not not in bus speed. In fact, the NXT RS485 bus was only in use for 1 ms of that entire transfer. We also assume 0 send time for the xBee radios (which is a bit of a stretch). This means receiving a reply from the computer will take 4 ms as well. This issue is called latency. We have a minimum of 4 ms latency per RS485 send. Our throughput for this example is 1 byte and our bus speed is 9600 baud.
Now if we send 4 bytes at 57600 or 5.76 bytes per millisecond we get the following:

Time 0 ms: Write data to RS458 Send in NXT.
Time 1 ms: NXT processes data and prepares to send.
Time 2 ms: NXT sending 4 bytes of data. (57600 baud)
Time 3 ms: USB xBee receives data and send to computer.
Time 4 ms: Data arrives on computer.

Note that the time to get the data is still the same, but we were able to move 4 times a much in the same time chunk. This is why speeding up will improve your throughput. Our latency for this example is still 4 ms per transfer, but our throughput is now 4 bytes on a bus speed of 57600 baud. (And yes, we could have done 5 bytes in there, but I am keeping things in powers of 2.)

Now if we look at this in NXT to NXT communication:

Time 0 ms: Write data to RS458 Send in NXT.
Time 1 ms: NXT processes data and prepares to send.
Time 2 ms: NXT sending 4 bytes of data. (57600 baud)
Time 3 ms: NXT receives 4 bytes of data. (57600 baud)
Time 4 ms: NXT application reads data from RS485 Read.

Now we have a much higher throughput to the NXT via the xBee radios. Mind you if we used a wired connection we have a latency of 3 ms as we do not have that extra receive step. This is why a wired connection has lower latency.

I hope this helps you understand some of the magic of communication protocols. All three factors are important in determining network performance and will vary based on application.