V3 AI Vision Robotic Lawn Mower, 1600 Sq.Ft, Black Silver
£237.99
- 🚚 Free shipping to all destinations
- ↩️ 30-day free returns
- 📦 Delivered in 4–6 business days
- 🕐 Order before 11:00 PM (GMT), ships next working day
You’re now subscribed to price tracking for this product. We’ll notify you if the price drops.
Free Shipping
Free delivery to your door in 4-6 business days. Order before 11 PM (GMT).
30-Day Free Returns
Not happy? Return it within 30 days, free of charge, for a full refund.
/**
* Common event handler for click and keydown events.
* @param {Event} event – The event object.
* @param {Function} handleClickOrEnter – Function to handle click or Enter key events.
* @param {Function} handleEsc – Function to handle Esc key events.
*/
// [TODO][AplusMantle-8064] Create common event handler util(key events, click events) in AplusModuleResources
function handleClickAndKeyEvents(event, handleClickOrEnterOrSpace) {
const ENTER_KEY_CODE = 13;
const ESCAPE_KEY_CODE = 27;
const SPACE_KEY_CODE = 32;
const isClick = event.type === ‘click’;
const isKeydown = event.type === ‘keydown’;
const isEnter = isKeydown && event.keyCode === ENTER_KEY_CODE;
const isSpace = isKeydown && event.keyCode === SPACE_KEY_CODE;
const isEsc = isKeydown && event.keyCode === ESCAPE_KEY_CODE;
if (isClick || isEnter || isSpace) {
handleClickOrEnterOrSpace();
} else if (isEsc) {
handleEsc(event);
}
}
/**
* Function to handle esc key event.
* @param {Event} event – The event object.
*/
function handleEsc(event) {
event.target.blur() // force remove focus
}
(function(f) {var _np=(window.P._namespace(“PremiumAplusModule”));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {
P.now(‘premium-module-11-faq’).execute(‘init-premium-module-11-faq’, function(init) {
if (init) {
return;
}
P.register(‘premium-module-11-faq’, function() {
return function() {
P.when(‘A’, ‘jQuery’, ‘ready’).execute(‘premium-11-faq’, function(A, $){
function initFaq(module) {
const MODULE_CLASS_NAME = ‘premium-aplus-module-11’;
const FAQ_CONTAINER_CLASS_NAME = ‘faqs-container’;
const FAQ_BLOCK_CLASS_NAME = ‘faq-block’;
const moduleId = $(module).data(‘faq-block’);
const $faqBlocks = $(‘.aplus-v2 .’ + MODULE_CLASS_NAME + ‘ .’ + FAQ_CONTAINER_CLASS_NAME + ‘.’ + moduleId + ‘ .’ + FAQ_BLOCK_CLASS_NAME);
/**
* Function to handle click or Enter or Space key events.
* @param {Element} element – The this object from which the event is dispatched
* @param {faqBlocks} faqBlocks – List of all the Question and Answer blocks.
*/
function handleClickOrEnterOrSpace(element, faqBlocks) {
const $element = $(element);
const isActive = $element.hasClass(‘aplus-active’);
faqBlocks.removeClass(‘aplus-active’);
faqBlocks.find(‘[data-faq-question]’).attr(‘aria-expanded’, ‘false’);
if (!isActive) {
$element.addClass(‘aplus-active’);
$element.find(‘[data-faq-question]’).attr(‘aria-expanded’, ‘true’);
}
}
/* Using jQuery event namespace for preventing duplicate binding on twister refresh */
$faqBlocks.unbind(‘click keydown.premiumAplusModule11ClickHandler’).bind(‘click keydown.premiumAplusModule11ClickHandler’, function(event) {
handleClickAndKeyEvents(event, () => handleClickOrEnterOrSpace(this, $faqBlocks));
});
}
$(“.aplus-v2 .premium-aplus-module-11 .faqs-container”).each(function(index, module) {
initFaq(module);
});
});
};
});
});
}));
(function(f) {var _np=(window.P._namespace(“PremiumAplusModule”));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {
P.now(‘premium-module-12-nav-carousel’).execute(‘init-premium-module-12-nav-carousel’, function(init) {
if (init) {
return;
}
P.register(‘premium-module-12-nav-carousel’, function(){
return function() {
P.when(‘A’, ‘jQuery’, ‘a-carousel-framework’, ‘ready’).execute(‘premium-12-nav-carousel’, function (A, $, framework) {
function initiateCarousel(module) {
var MODULE_ID = $(module).data(‘module-id’);
/**
* Carousel button element classname
* @const
*/
var GOTO_BTN_CLASS_NAME = “aplus-goto-btn-” + MODULE_ID;
/**
* Carousel button element active classname
* @const
*/
var GOTO_BTN_ACTIVE_CLASS_NAME = “aplus-active”;
/**
* AUI name for aui carousel
* @const
*/
var CAROUSEL_NAME = “premium-aplus-12-carousel-” + MODULE_ID;
/**
* Module class name
* @const
*/
var MODULE_CLASS_NAME = “.aplus-v2 .premium-aplus-module-12″;
/**
* Carousel text container class name
* @const
*/
var TEXT_CONTAINER_CLASS_NAME = MODULE_CLASS_NAME + ” .aplus-carousel-text-container-” + MODULE_ID;
/**
* Carousel text hidden class name
* @const
*/
var TEXT_CONTAINER_HIDDEN = “aplus-hidden”;
/**
* Carousel horizontal scroll container class name
* @const
*/
var HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME = MODULE_CLASS_NAME + ” .aplus-horizontal-scroll-container-” + MODULE_ID;
function showCarouselText(oldIndex, newIndex) {
var oldClass = TEXT_CONTAINER_CLASS_NAME + “-” + oldIndex;
var newClass= TEXT_CONTAINER_CLASS_NAME + “-” + newIndex;
$(oldClass).addClass(TEXT_CONTAINER_HIDDEN);
$(newClass).removeClass(TEXT_CONTAINER_HIDDEN);
}
function scrollToCarouselButton(scrollLeft) {
if ($(HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME).length) {
$(HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME).animate({scrollLeft}, 200);
}
}
/**
* Creates a CarouselButton class for provided carousel instance
* @param {object} carousel – AUI Carousel instance
* @returns {Class} – CarouselButton Class
*/
function CarouselButtonTemplate(carousel) {
/**
* Button for controlling the active slide
* @constructor
* @param {number} index – slide index
* @param {DOMElement} [elem] – optional DOM element to use as this objects DOM representation
*/
function CarouselButton(index, elem) {
var self = this;
this.index = index;
this.carousel = carousel;
/* create the button element */
this.elem = this.getElem(elem);
this.$elem = $(this.elem); /* store jquery version */
this.elem.addEventListener(‘click’, self.handleClick.bind(self));
this.elem.setAttribute(‘role’, ‘tab’);
/* add this object to the object manager */
CarouselButton.objects.byId[index] = this;
CarouselButton.objects.all.push(this);
}
/**
* Describe behavior for click events on this.elem
* @memberOf CarouselButton
*/
CarouselButton.prototype.handleClick = function(e) {
e.preventDefault();
this.carousel.gotoPage(this.index);
};
/**
* Enter active state
* @memberOf CarouselButton
*/
CarouselButton.prototype.activate = function() {
this.$elem.addClass(GOTO_BTN_ACTIVE_CLASS_NAME).attr(‘aria-selected’, ‘true’);
};
/**
* Enter inactive state
* @memberOf CarouselButton
*/
CarouselButton.prototype.deactivate = function() {
this.$elem.removeClass(GOTO_BTN_ACTIVE_CLASS_NAME).attr(‘aria-selected’, ‘false’);
};
/**
* Returns an existing or creates a new bound element for this object
* @memberOf CarouselButton
* @param {DOMElement} [elem] – optionally provide an existing element in the DOM to use
* @returns {DOMElement} – this objects DOM representation
*/
CarouselButton.prototype.getElem = function(elem) {
if (this.elem) return this.elem;
if (elem) return elem;
var createdElem = document.createElement(‘span’);
createdElem.className = GOTO_BTN_CLASS_NAME;
return createdElem;
};
/** @const Object manager */
CarouselButton.objects = {
byId: {},
all: [],
};
return CarouselButton;
}
framework.onInit(CAROUSEL_NAME, function(carousel) {
/** @const {Class} */
var CarouselButton = CarouselButtonTemplate(carousel);
/* create carousel controls */
var $carouselBtns = $(safeClassSelector(GOTO_BTN_CLASS_NAME));
var btns = $carouselBtns.map(function(i, btnElem) {
return new CarouselButton(i + 1, btnElem);
});
/* activate first one */
CarouselButton.objects.byId[1].activate();
/* Listen to slide changes */
A.on(“a:carousel:” + CAROUSEL_NAME + “:change:pageNumber”, function (data) {
var newCarouselButton = CarouselButton.objects.byId[data.newValue];
var marginLeft = parseInt(getComputedStyle(newCarouselButton.elem).getPropertyValue(‘margin-left’));
var positionLeft = newCarouselButton.elem.offsetLeft – marginLeft;
newCarouselButton.activate();
CarouselButton.objects.byId[data.oldValue].deactivate();
scrollToCarouselButton(positionLeft);
showCarouselText(data.oldValue, data.newValue);
});
});
/**
* @returns {string} – css classname prefixed with module selector
*/
function safeClassSelector(className) {
return ‘.’ + MODULE_CLASS_NAME + ‘ .’ + className;
}
}
$(‘.aplus-v2 .premium-aplus-module-12 .aplus-carousel-container’).each(function (index, module) {
initiateCarousel(module);
});
framework.createAll();
framework.initializeAll();
});
}
})
});
}));

(function(f) {var _np=(window.P._namespace(“PremiumAplusModule”));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {
P.when(‘premium-module-12-nav-carousel’).execute(‘invoke-premium-12-nav-carousel-desktop-top’, function(init){
init();
});
}));
(function(f) {var _np=(window.P._namespace(“PremiumAplusModule”));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {
P.when(‘premium-module-12-nav-carousel’).execute(‘invoke-premium-12-nav-carousel-desktop-right’, function(init){
init();
});
}));
(function(f) {var _np=(window.P._namespace(“PremiumAplusModule”));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {
P.when(‘premium-module-12-nav-carousel’).execute(‘invoke-premium-12-nav-carousel-desktop-top’, function(init){
init();
});
}));
P.now(“premium-aplus-13-carousel-4”).execute(“init-pagination-carousel”, function(init) {
if (init) {
return;
}
P.register(“premium-aplus-13-carousel-4”, function() {
return function() {
P.when(“A”, “jQuery”, “a-carousel-framework”, “ready”).execute(“paginate-carousel”, function (A, $, framework) {
const ENTER_KEY_CODE = 13;
const ESCAPE_KEY_CODE = 27;
const LEFT_ARROW_KEY = 37;
const RIGHT_ARROW_KEY = 39;
const HOME_KEY = 36;
const END_KEY = 35;
var moduleId = “4”;
var carouselName = “premium-aplus-13-carousel-4”;
var paginationAction = “aplus-pagination-dot-action-” + moduleId + “-” + carouselName;
var paginationGroup = “#aplus-pagination-group-” + moduleId + “-” + carouselName;
/* If the carousel goes to a new page */
A.on(“a:carousel:”+carouselName+”:change:pageNumber”, function (data) {
A.$(paginationGroup+” .carousel-slider-circle”).removeClass(“aplus-carousel-active”).attr(‘aria-selected’, ‘false’).attr(‘tabindex’, -1)
.eq(data.newValue – 1).addClass(“aplus-carousel-active”).attr(‘aria-selected’, ‘true’).attr(‘tabindex’, 0);
});
function syncPaginationDotsWithCarouselPages(numPages) {
const parentElement = document.querySelector(paginationGroup);
if (parentElement && parentElement.children) {
const children = parentElement.children;
for (let i = 0; i = numPages) {
// If number of dots > num of pages, we should hide other dots
children[i].classList.add(‘aplus-pagination-dot–display-none’);
} else if (children[i].classList.contains(‘aplus-pagination-dot–display-none’)) {
// Reset display of dots if it was hidden before
children[i].classList.remove(‘aplus-pagination-dot–display-none’);
}
}
}
}
framework.onInit(carouselName, function (carousel) {
try {
var totalPages = carousel.getAttr(‘totalPages’);
syncPaginationDotsWithCarouselPages(totalPages);
/* Resize event handler to re-calculate the pagination dots count based on orientation */
window.addEventListener(‘resize’, function() {
carousel.resize();
totalPages = carousel.getAttr(‘totalPages’);
syncPaginationDotsWithCarouselPages(totalPages);
});
A.declarative(paginationAction, ‘click keydown’, function(event){
var isClick = event.type === ‘click’;
var isKeydown = event.type === ‘keydown’;
var isEnter = isKeydown && event.$event.keyCode === ENTER_KEY_CODE;
var isEsc = isKeydown && event.$event.keyCode === ESCAPE_KEY_CODE;
var isLeftArrow = isKeydown && event.$event.keyCode === LEFT_ARROW_KEY;
var isRightArrow = isKeydown && event.$event.keyCode === RIGHT_ARROW_KEY;
var isHome = isKeydown && event.$event.keyCode === HOME_KEY;
var isEnd = isKeydown && event.$event.keyCode === END_KEY;
if (isClick || isEnter) {
var data = event.data;
carousel.gotoPage(data.page);
} else if (isEsc) {
event.$target.blur();
} else if (isLeftArrow || isRightArrow || isHome || isEnd) {
event.$event.preventDefault();
const dots = A.$(paginationGroup + ” .carousel-slider-circle”);
const currentIndex = dots.index(event.$target);
let nextIndex;
if (isLeftArrow) {
nextIndex = currentIndex > 0 ? currentIndex – 1 : dots.length – 1;
} else if (isRightArrow) {
nextIndex = currentIndex < dots.length – 1 ? currentIndex + 1 : 0;
} else if (isHome) {
nextIndex = 0;
} else if (isEnd) {
nextIndex = dots.length – 1;
}
dots.eq(nextIndex).focus();
carousel.gotoPage(nextIndex + 1);
}
});
} catch (e) {
P.log('Failed to init ' + carouselName + '. Error: ' + e.message, 'FATAL', 'AplusModuleResources');
}
});
});
}
});
});
(function(f) {var _np=(window.P._namespace(“PremiumAplusModule”));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {
P.when(“premium-aplus-13-carousel-4”).execute(‘invoke-premium-13-carousel-desktop’, function(init){init();});
}));
-
Does this robotic lawn mower need perimeter wires for operation?
No. This robot lawn mower uses advanced AI visual recognition technology to identify lawn boundaries and obstacles automatically, reducing the need for complicated wire installation and making setup easier for homeowners.
-
How loud is the mower during operation?
This robotic lawn mower features a low-noise design, making it quiet enough for daytime or evening use without significantly disturbing your family, neighbors, or pets.
-
How tall of grass can this lawn mower cut?
This mower can trim grass between 0.8 and 2.4 inches in height. If the grass is taller than 2.6 inches, the machine may detect it as an obstacle. Therefore, we recommend manually cutting taller grass first to ensure optimal mowing performance.
-
Does the V3 lawn mower mow in a regular, organized pattern?
Since the V3 lawn mower operates using a random mowing path, it requires more time to fully cover and trim the entire lawn.
-
What should I pay attention to if the V3 robotic lawn mower will not be used for a long time?
If the V3 robotic lawn mower will be stored for an extended period, please charge the battery to approximately 75% before storage to help prevent over-discharge and protect the battery pack from damage caused by long-term inactivity.
(function(f) {var _np=(window.P._namespace(“PremiumAplusModule”));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {
P.when(‘premium-module-11-faq’).execute(‘invoke-premium-11-faq’, function(init){
init();
});
}));
- 【Smart AI Vision Navigation】The LEBOSBO V3 robotic lawn mower is equipped with AI vision technology that intelligently recognizes obstacles and lawn areas, helping improve mowing safety and efficiency.
- 【32FT Magnetic Boundary Strip Included】Quickly set up no-go zones with the included 32FT magnetic strip. Ideal for blocking off flower beds, pathways, playgrounds, or other areas you want to protect.
- 【Easy APP Operation】Control your robot lawn mower from anywhere using the smart APP. Easily manage mowing schedules, operating modes, and mower status directly from your mobile device.
- 【Plug & Play Without Boundary Wires】No wiring or complicated installation required. Simply charge the mower and begin mowing immediately, making lawn care easier for small yards up to 1600 sq.ft.
- 【Quiet Working & Height Adjustment】The low-noise motor provides quieter operation for residential use. Adjustable mowing height allows flexible grass cutting based on seasonal or lawn care needs.
- 【Everything You Need Included】Includes the robotic lawn mower, 18V charger, 32FT magnetic strip, ground stakes, replacement blades, and user manual for convenient setup.
| Brand | LEBOSBO |
| Power Source | Battery Powered |
| Color | Black Silver |
| Cutting Width | 6.3 inches |
| Operation Mode | Automatic |
| Product Dimensions | 17″D x 14″W x 8.6″H |
| Number of Items | 1 |
| Item Highlight |
(function(f) {var _np=(window.P._namespace(“DetailPageProductOverviewTemplatesJava”));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) { P.when(‘A’).execute(function(A){ A.on(‘a:truncate:po-attribute-truncate-7:updated’, function(data) { var isTruncated = !data.truncateInstance.getIfTextFits(); var seeMoreElement = document.getElementById(‘po-attribute-see-more-id-7’); if(seeMoreElement) { seeMoreElement.style.display = isTruncated ? ” : ‘none’; } }) }); })); AI Vision Obstacle Avoidance, Smart APP Control, Low-Noise Operation, Adjustable Cutting Height, NO-GO Zone Function See more |
| Maximum Adjustable Cutting Height | 2.4 inches |
| Unit Count | 1 Count |

Reviews
There are no reviews yet.