HuskyLens is an AI Machine Vision sensor based upon the powerful Kendryte K210 processor. Today we will take a look at this amazing device, both by itself and with an Arduino.
The Kendryte K210 processor is a 64-bit RISC microcontroller which has been designed for machine vision and voice recognition applications. I’ve picked up a few sensors based upon this powerful microcontroller, and today we will look at one of them - the HuskyLens.
The DFRobot HuskyLens packages the power of the K210 with a video camera, small TFT screen and a microSD card socket. This powerful, yet inexpensive, device can perform several machine visions tasks including face recognition, object classification, object detection and line following, plus many more.
Today we will take a detailed look at the HuskyLens. After updating the firmware, we will put the device to the test in all of its different modes.
After that, we will hook a simple Arduino Uno to the HuskyLens and observe the data we can get back from it.
We will also see how we can perform more advanced functions with Arduino and HuskyLens, such as updating the text on the screen. And we will also see how to save our trained models using the microSD card.
I’ll even give you a quick peek at a small robot I’m deigning around the HuskyLens!
Here is the Table of Contents for today's video:
00:00 - Introduction
00:00 - Look at HuskyLens
00:00 - Firmware Update
00:00 - Face Recognition demo
00:00 - Object Tracking Demo
00:00 - Object Recognition Demo
00:00 - Line Tracking Demo
00:00 - Color Recognition Demo
00:00 - Tag Recognition Demo
00:00 - Object Classification Demo
00:00 - HuskyLens with Arduino - UART Mode
00:00 - HuskyLens with Arduino - I2C Mode
00:00 - Modifying HuskyLens Text
00:00 - Using the microSD Card
00:00 - Conclusion
As I said I have a few sensors based upon the Kendryte K210, the HuskyLens is only one of them. I’ll be showing you more of these advanced machine learning devices in future episodes.
"Never trust a computer you can’t throw out a window." — Steve Wozniak
Can this device be programmed/setup via Arduino I2C.
What an amazing amount of tech/ AI on such a tiny form factor, very impressive device ... just wow!
Spudger
The rocket worked perfectly, except for landing on the wrong planet.-
Wernher Von Braun
What an amazing amount of tech/ AI on such a tiny form factor, very impressive device ... just wow!
Yes, it's very impressive. As are the other Kendryte K210 based sensors that I'm playing with.
Can this device be programmed/setup via Arduino I2C.
Not quite sure that I follow the question? I used I2C in my demonstrations (except, of course, the UART demo). Could you be more specific as to what you'd like to do with it?
😎
Bill
"Never trust a computer you can’t throw out a window." — Steve Wozniak
Yes amazing with its built-in machine learning technology. Also another well presented demonstration of the technology and how to use it by your good self.
One day any budding robot builder will be able to go into the electronics shop, or order online, a Chinese made positronic brain to plug into their robot body also made in China and be good to go.
Once floating point arithmetic was done in software, then came the math coprocessor. Graphic routines were once written in software, then came the graphic chips. Once neural networks were written in software now the process is being accelerated by hardware for "deep learning".
This old dinosaur remembers the old Z80 days learning how to do floating point arithmetic in software or draw a line on the screen or generate sounds and music by sending numbers out the computer i/o port to a DAC connected to an amp and speaker.
Hi all
Thank Guru for this forum. I am a fan of your channel.
I am French, nobody is perfect, and I apologize for my English.
The HuskyLens seems like a dream machine, but one of my friend said to me that an ESP32 Cam is the same and very cheaper.
So, I wonder. What is the difference between the HuskyLens and the ESP32 Cam ?
Thank you in advance for your answer.
@dronebot-workshop You demonstrated several "training" modes and following modes. Cab those be done via I2C
The ESP32 Cam doesn't have the intelligence built into as does the HuskyLens.
SteveG
I am French, nobody is perfect, and I apologize for my English
No apologies necessary, my French is terrible, and I live in Montreal!
The HuskyLens seems like a dream machine, but one of my friend said to me that an ESP32 Cam is the same and very cheaper.
They are by no means the same. While the 32-bit ESP32-CAM is capable of simple recognition tasks, it has nowhere the power of the 64-bit Kendryte K210. It certainly can't recognize a cow, and programming it to track an object is difficult (but not impossible).
Also, the HuskyLens is meant to be used as an external sensor, while the ESP32-CAM is a microcontroller with I/O ports, WiFi and Bluetooth. So they aren't even really in the same category.
A better comparison would be to compare the HuskyLens with the Pixy 2 camera, a much older technology. The HuskyLens is much more powerful, and cheaper too.
Not to mention that the ESP32-CAM doesn't come with a 2-inch display, which is where a lot of the cost of the HuskyLens is incorporated.
But your friend is correct about one thing, the ESP32-CAM is much cheaper. You can buy five of them for the price of one HuskyLens. But, again, you are really comparing two different categories of device.
The real beauty of a device like the HuskyLens is what I referred to at the beginning of the video - it's an "edge computing" device. So it does all the hard work, making it easier for the microcontroller.
I'll be reviewing some more similar sensors that use the Kendryte K210, these are from Seeedstudio, and they bring out many of the K210 I/O pins. I have three of them, and one of them even has an ESP-32 onboard for wireless connectivity.
You demonstrated several "training" modes and following modes. Cab those be done via I2C
I think you are asking if you can use the microcontroller in place of the training buttons, is that correct? If so, then I don't think you can. But keep in mind you need also the screen for training, and the buttons are mounted on top of the screen.
😎
Bill
"Never trust a computer you can’t throw out a window." — Steve Wozniak
Thanks Codecage.
Thank you Bill for taking the time to give this very long and clear answer.
I ordered a HuskyLens and hope to use it as a line follower on my future quadruped.
Maybe I should install it on a Gimbal. I will be very proud to show you the result.
Thanks again.
'https://www.youtube.com/user/oracid1/videos'
Hi. Happy New Year everyone an stay safe.
I'm trying to install the driver that I have downloaded from Silicon Labs, https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
I have downloaded the "CP210x Universal Windows Driver". But I suck! Which file should I run? I don't see anything executable and in my Device Manager, in PORT (COM & LPT), I don't see Silicon Labs, as described on this page, https://wiki.dfrobot.com/HUSKYLENS_V1.0_SKU_SEN0305_SEN0336
Thank you in advance for your help.
It seems ok ! I have just connected the HuskyLens at the USB and the driver appears in the Device Manager.
Hi everybody
I made a line follower with my HuskyLens, thanks to Bill.
@oracid. Hi... ! Was just admiring your tank robot and as wondering what version of the HuskyLens you managed to upload to your Huskylens, and what PC system OS are you using? ie Windows, Mac, Linus.. mine came with ver: 0.4.7aStable, and I'm running on windows 7 platform.. couldn't get the HuskyLens Uploader_v2.1 to load on my system, so I can't install the new ver: firmware 0.5.1a so I can use all the functionally of the HuskyLens.. The divice runs ok on the version it came with, but the huskylens.setCustomName() function doesn't work.. I suspect it because of the lower version installed from the vendor. IF you can help, let me know.. and BTW, great job getting it to run around chasing that line!...lol
kind regards;
LouisR
LouisR
@inst-tech Hi. Thank you.
I work on Windows 10 and now on Windows 11. My version is Pro 05.1aNorm
I don't know much about HuskyLens, but I have compile with the functiun "huskylens.setCustomName("Oracid",ID1);" and everything is ok.
Hope you get through. Do not hesitate to ask.
Here is my last code which run a little Cannon Carriage robot (2 wheels and a skate):
CannonCarriage-LINE_TRACKING-V2-ref.ino
// 07/02/2022 - Cannon Carriage robot
#include <HUSKYLENS.h>
#include <Servo.h>
void(* resetFunc) (void) = 0; // soft reset function
Servo sR,sL; // right servo and left servo
int R, L; // right servo value, left servo value
HUSKYLENS huskylens; int ID1=1; // HuskyLens objet
void setup() {
delay(400); // for soft reset consideration
Serial.begin(9600); // Serial initialization
pinMode(6,INPUT_PULLUP); // start/stop/reset button attachment
sL.attach(2);sL.write(90); // right servo, 0->FW, 90->stop, 180->BW
sR.attach(3);sR.write(90); // left servo, 0->FW, 90->stop, 180->BW
Wire.begin(); // I2C initialization
while (!huskylens.begin(Wire)) {Serial.print("\n Check I2C"); delay(100);}
huskylens.writeAlgorithm(ALGORITHM_LINE_TRACKING); //Switch to line tracking.
Serial.print("\n\t To start, click on the Start button"); while( digitalRead(6) ); delay(400);
}
void loop() {
if (! digitalRead(6)) resetFunc();
huskylens.request(ID1);
HUSKYLENSResult result = huskylens.read();
int e = map(result.xTarget,0,320,-90,90); //Serial.print(String()+("\n err=")+err); // getting and maping error
if ( e < 0) { L=-e; R=0; } else { L=0; R=e; } // error makes turning left or right
sL.write(L); sR.write(R); // left and right servos order
}