Cách chế tạo Robot - Tránh chướng ngại vật
Phần năm của loạt bài viết về cách chế tạo một robot có thể đi theo đường thẳng hoặc tường và tránh chướng ngại vật!
Phần năm của loạt bài viết về cách chế tạo một robot có thể đi theo đường thẳng hoặc tường và tránh chướng ngại vật!
Những bài viết liên quan
Cách chế tạo Robot:
Phần 1: Thiết kế và Sơ đồ
Phần 2: Thiết kế PCB
Phần 3: Kiểm tra phần cứng
Phần 4: Người theo dòng
Phần 6: Robot theo dõi tường
Tổng quat
Tôi nghĩ sẽ thật gọn gàng nếu tạo ra một con robot dễ dàng lắp ráp lại với nhau bằng một chiếc mỏ hàn duy nhất và giá cả cũng phải chăng. Tôi đã đưa ra các yêu cầu sau cho rô bốt của mình:
- Nhiều bộ dụng cụ đắt tiền, vì vậy nó phải tương đối rẻ.
- Nó phải dễ dàng ghép lại với nhau mà không cần thiết bị đặc biệt.
- Nó phải được lập trình dễ dàng mà không cần IDE hoặc lập trình viên phức tạp.
- Nó phải đủ mạnh để có thể mở rộng.
- Nó sẽ chạy khỏi một nguồn điện đơn giản.
- Nó phải có thể đi theo một đường hoặc một bức tường và tránh chướng ngại vật.
Trong bài này, tôi sẽ nói về cách lập trình robot để tránh chướng ngại vật.
Tránh chướng ngại vật
Cách tiếp cận mà tôi sẽ thực hiện là nếu phát hiện chướng ngại vật trên đường đi của robot, robot sẽ lùi lại và thử một hướng mới. Điều này cho phép robot khám phá các khu vực mà không bị mắc kẹt hoặc làm hỏng chính nó. Cảm biến được sử dụng trong robot này chỉ cho đầu ra nhị phân. Nói cách khác, có điều gì đó cản trở hoặc không. Cảm biến cũng có góc tiếp nhận khá rộng, do đó, các vật thể hơi lệch sang một bên cũng có thể được phát hiện. Điều này hạn chế độ phức tạp của thuật toán có thể được sử dụng. Nếu bạn có một cảm biến thực sự có thể đo khoảng cách đến một đối tượng một cách đáng tin cậy, bạn có thể tính toán xem bạn có đủ bán kính rẽ để tránh đường mà không phải lùi lại hay không.
Thuật toán tôi quyết định sẽ yêu cầu robot sao lưu trong 1 giây nếu phát hiện chướng ngại vật. Sau đó nó sẽ ngẫu nhiên rẽ trái hoặc phải để tránh chướng ngại vật. Trong khi rẽ trái hoặc phải, nó tiếp tục kiểm tra các chướng ngại vật trên đường. Nếu phát hiện chướng ngại vật, nó sẽ dừng quay đầu và lặp lại chu trình lùi / rẽ cho đến khi thoát khỏi chướng ngại vật.
Lập trình
Bản phác thảo sau thực hiện logic:
- Khởi động trình điều khiển rô bốt và đợi 5 giây. Điều này giúp bạn có thời gian để đặt robot ở nơi bạn muốn trước khi nó bắt đầu di chuyển.
- Tiến về phía trước.
- Nếu cảm biến giữa được kích hoạt, hãy đảo ngược trong 1 giây.
- Chọn ngẫu nhiên trái hoặc phải.
- Bật trong tối đa 1 giây với điều kiện là cảm biến giữa chưa được kích hoạt.
- Nếu cảm biến giữa được kích hoạt, hãy chuyển sang bước 3.
- Nếu cảm biến chưa được kích hoạt, hãy chuyển sang bước 2.
#include "robot.h"
void setup()
{
Serial.begin(38400);
Serial.println("Boot");
rbt_init();
delay(5000);
rbt_move(FWD,100);
}
uint16_t lleft,lmid,lright;
boolean wleft,wmid,wright;
uint16_t avoid_count=0;
void loop()
{
rbt_sns(&lleft,&lmid,&lright,&wleft,&wmid,&wright);
/*reverse if something is in the way and try to change direction*/
if(wmid)
{
rbt_move(REV,100);
delay(1000);
/*choose a direction at random to avoid an obstacle*/
if(random(10)>5)
{
rbt_move(LEFT,100);
avoid_count=1000;
while(avoid_count){
delay(1);
rbt_sns(&lleft,&lmid,&lright,&wleft,&wmid,&wright);
if(wmid) break;
}
}
else
{
rbt_move(RIGHT,100);
avoid_count=1000;
while(avoid_count){
avoid_count--;
rbt_sns(&lleft,&lmid,&lright,&wleft,&wmid,&wright);
if(wmid) break;
}
}
rbt_move(FWD,100);
}
}
Tránh chướng ngại vật!
Phần kết luận
Trong bài viết này, tôi đã chỉ ra cách bạn có thể sử dụng cảm biến để tránh chướng ngại vật với rô bốt. Tránh chướng ngại vật là điều quan trọng trong các phương tiện tự hành để tránh làm hỏng môi trường hoặc bản thân robot. Một bổ sung quan trọng cho robot này là các cảm biến ở phía sau để tránh chướng ngại vật khi ngược chiều. Trong bài viết tiếp theo, tôi sẽ tạo ra một bức tường thành bằng cách tận dụng cảm biến bên!
Bài viết tiếp theo trong sê-ri: Cách chế tạo rô bốt bám tường
Không có nhận xét nào