Làm thế nào mạnh mẽ tính toán là một bảng Arduino Uno?


8

Một bảng Arduino như Uno thực sự có thể làm gì? Tất nhiên những điều đơn giản như kiểm soát một vài servo là rất dễ dàng cho nó. Tuy nhiên, tôi không nghĩ rằng một bảng Uno sẽ có thể tạo ra SLAM 3D thời gian thực từ dữ liệu đám mây điểm được thu thập từ cảm biến Kinect trên robot di động, phải không? Nếu robot có bất kỳ tốc độ nào thì Arduino sẽ không thể theo kịp, đúng không? Nó có thể làm 2D SLAM trong khi di chuyển và có thể theo kịp? Điều gì về việc lấy 1/10 điểm từ cảm biến Kinect và chỉ xử lý những điểm đó?

Về cơ bản, một số ví dụ về các hạn chế tài nguyên của một bảng Arduino như vậy là gì?

Câu trả lời:


6

Nó phụ thuộc - vào số lượng cột mốc trong bản đồ tính năng và thời gian bạn sẵn sàng đầu tư điều chỉnh thuật toán cho tốc độ và một số tham số khác mà bạn có thể hoặc không thể kiểm soát cho một ứng dụng nhất định.

Chỉnh sửa: Là một thử nghiệm suy nghĩ , tôi nghĩ về mặt lý thuyết sẽ đủ mạnh để thực hiện SLAM gần như thời gian thực cực kỳ đơn giản trong một môi trường rất khó khăn, chẳng hạn như trung tâm của sàn phòng tập thể dục với một vài hình nón được đặt ra. Nó có thể lấy một dòng quét từ Kinect và cập nhật bản đồ nội bộ 2D, độ phân giải thấp, cập nhật định kỳ (cứ sau 10 giây).

RAM 2K của Uno có thể là một công cụ giảm giá, nhưng Mega có thể có đủ (8K) và có hack để nâng cấp nó lên 520K.

Trong thực tế, thực hiện các phép tính ma trận dấu phẩy động trên bộ xử lý 8 bit không phải là một ý tưởng hay.


Ok, vì vậy bạn đang nói rằng ngay cả việc thử 2D SLAM với Arduino cũng sẽ hơi khó khăn. Cảm ơn.
golmschenk

6

Arduino luôn bị thiếu sức mạnh khủng khiếp.

Bạn có thể nhận được một đống khám phá stm hoặc bảng dev dựa trên ARM khác với giá của một arduino duy nhất, và mỗi bảng trong số đó sẽ là những đơn đặt hàng có cường độ mạnh hơn arduino.

Tính phổ biến của arduino cũng đã cản trở nhiều dự án nên được biết đến nhiều hơn. Ổn định tứ cực và thực thi mã g theo kiểu Reprap là hai lĩnh vực chính mà arduino đã bị ép buộc vượt quá khả năng của nó và nó cho thấy. (Dự án ardrupilot cần ba arduinos.)

Hy vọng rằng các công cụ thiếu niên / do / tờ rơi sẽ giúp phát triển ARM thân thiện hơn. Nhiều dự án mới hơn / tốt hơn như smoothie, openpilot, vv cũng đã tạo ra bước nhảy vọt.


1
Đồng ý, không nghi ngờ gì nữa! Tôi đã mua một cánh tay robot đơn giản tại một cửa hàng điện tử cũ, cổ điển năm 1980. Bộ điều khiển có 19 MHz, so với 16 của Arduino và RAM gấp 3 lần! Từ năm 1980! Điều đáng buồn là, mọi người phản ứng với sự quyến rũ của bảng màu xanh nhỏ. Arduino rất giống Java - tuyệt vời cho những gì nó là, nhưng không đủ sức mạnh và bị lạm dụng quá mức vì bất kỳ lý do nào.
Chris

@Chris, Nói một cách công bằng, tôi nghi ngờ rằng cánh tay robot chỉ có giá 24 đô la vào năm 1980 (ngày nay thật khó để tìm ra một thứ rẻ tiền mà không phải là rác hoàn chỉnh). Tôi cũng nghi ngờ nó có một cộng đồng người dùng khổng lồ và thư viện phần mềm miễn phí khổng lồ có sẵn cho nó. Có nhiều giá trị của phần cứng hơn là tốc độ và bộ nhớ. Rất nhiều sản phẩm đã thất bại vì chúng được định giá quá cao trong khi sử dụng, ngay cả khi chúng vượt trội về mặt kỹ thuật.
Cerin

4

Các thông số kỹ thuật liệu trên vi điều khiển của Arduino tốc độ danh sách đồng hồ cao như 16 hoặc 20 MHz - xung quanh tốc độ của một 386 máy tính giữa những năm 1990 Intel.

Điều đó nghe có vẻ hứa hẹn, cho đến khi bạn xem xét thực tế rằng nó không hỗ trợ toán học dấu phẩy động - phép đo " FLOPS " mà hầu hết các CPU được so sánh. Tôi đã thấy một số bản demo arduino tính toán tốc độ của Arduino ở khoảng 60 kFLOPS, trong khi Intel 386 ở 20 MHz làm được điều gì đó giống như 170 kFLOPS (theo trang này ).

Ngoài ra, cần lưu ý rằng Arduino thực hiện toán 8 bit và 386 đang thực hiện toán 16 bit và 32 bit. Một bảng DSP có thể phù hợp hơn với kiểu thu thập dữ liệu đó, nhưng tôi không có quyền tư vấn ở đó.

Để mã đó hoạt động trong một môi trường bị hạn chế như Arduino có thể là có thể, nhưng nó sẽ mất rất nhiều tối ưu hóa. Bạn sẽ được phục vụ tốt hơn bằng cách sử dụng CPU mạnh hơn để thực hiện các thuật toán đó; đảm bảo rằng chúng hoạt động trên CPU mạnh, sau đó cố gắng tối ưu hóa cho CPU yếu.


Nhưng bạn phải nhớ, Apple II có RAM 6502 (8 bit, 1 MHz) và 16K RAM. AppleSoft BASIC là điểm nổi và "ứng dụng sát thủ" của nó là liên kết VisiCalc . Bạn có thể làm khá nhiều với phần cứng hạn chế, khi đó là tất cả những gì bạn có. (và toàn bộ ngành công nghiệp đứng đằng sau nó)
Paul Williams

1
Bạn đang so sánh một bộ vi điều khiển với một bộ vi xử lý. 386 không có bộ tạo phần cứng PWM sáu kênh, ADC, bộ so sánh tương tự, hai thiết bị của nó có nghĩa là hai công việc khác nhau. Ngoài ra, nếu ai đó cần thông lượng điểm phao cao, họ sẽ sử dụng một đơn vị có thể là FPU, nhưng tôi đã thực hiện nhiều dự án không cần điểm nổi và trong một số trường hợp, đây là câu hỏi về tối ưu hóa. ATMega đi gần 20MIPS ở 20Mhz trong khi 386 đi 9,9 MIPS ở 33 MHz.
Diego C Nascimento

1
Câu hỏi này là về SLAM, vì vậy FLOPS là số liệu duy nhất có liên quan để sử dụng để so sánh 2 đơn vị xử lý này.
Ian

2

Với giá của Arduino Uno, hoặc ít hơn, một lựa chọn gần đây là TI Stellaris Launchpad với giá 12,99 đô la (bao gồm cả FedEx trên toàn thế giới): Arm Cortex M4 với bộ thư viện tích hợp tuyệt vời có tên StellarisWare nằm trên ROM - vì vậy Flash của bạn và RAM vẫn miễn phí cho sử dụng ứng dụng.

Sức mạnh tính toán lớn hơn nhiều so với Arduino Uno, nhưng cho đến nay không có sự tham gia của cộng đồng có mặt khắp nơi mà Arduino đã thu được.


1

Đúng là Arduino bắt đầu bị thiếu sức mạnh khi mọi người đang ở Raspberry Pis, nhưng tôi nghĩ nó phụ thuộc nhiều hơn vào ứng dụng. Tôi thích arduino vì mã này rất dễ viết, nó thực sự dễ dàng để flash mã mới và thực sự dễ dàng để nối các cảm biến mới. Tôi sẽ không sử dụng nó cho một ứng dụng tầm nhìn như kinect hoặc webcam, nhưng nó có thể làm được nhiều hơn so với việc nói chuyện với các servo. Một ví dụ tốt sẽ là một ứng dụng loại segway; arduino là lý tưởng để nói chuyện với các cảm biến gia tốc, thực hiện một số phép toán không gian 3D và sau đó nói chuyện với các servo để giữ cho mọi thứ cân bằng.


Tôi nghĩ điều quan trọng ở đây là so sánh táo với táo ở đây và so sánh chip ATMega của Uno với các bộ vi điều khiển khác. ARM 700 MHz trong Raspberry Pi có màu cam. Điều đó đang được nói, các chip ARM Cortex-M3 trong Arduino Do / LeafLabs Maple và chip PIC32 trong các bo mạch Digilent chipKIT, v.v ... tất cả đều thổi bay Uno ra khỏi nước tính toán với cùng một môi trường lập trình.
Joe Baker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.