Khi nào nên sử dụng các GPU trong Robotics?


12

FPGA có những điểm tốt như rất nhiều điểm IO nhưng một lần nữa bạn cần nghĩ mọi thứ ở mức rất thấp với flip-flop và tiên phong trên các lĩnh vực mà mọi thứ chưa trưởng thành - ví dụ như xem câu hỏi này ở đây về các công cụ phát triển trên FPGA - đây là sự hiểu biết của tôi hiện tại! Bây giờ, FPGA đã được sử dụng để tạo ra sự khéo léo tuyệt vời trong tay robot như ở đây . Bây giờ một số người tiếp thị đồ họa để tạo mẫu nhanh và thiết kế "hướng tới tương lai" như ở đây , tôi không hiểu hết về chúng: nếu bạn không cần nhiều điểm IO cho những thứ như cảm biến, tại sao lại chọn đồ họa cho robot? Vì thế

Khi nào nên chọn FPGA cho một dự án về robot?


Nếu bạn cần sự song song thì sẽ có ý nghĩa khi sử dụng FPGA vì bạn có thể đạt được điều đó. Ngoài ra, bạn có thể điều chỉnh "thiết kế chip" của riêng mình và "dễ dàng" nâng cấp một số chức năng mà không cần chip phần cứng mới. Tôi thấy các ví dụ về phát hiện nhiều đối tượng từ camera trong thời gian thực. Để chắc chắn rằng nó là chi phí cho các dự án nhỏ hơn.
Gossamer

Câu trả lời:


4

Tôi không chắc những gì trong câu hỏi được liên kết về các công cụ phát triển khiến bạn nghĩ rằng chúng chưa trưởng thành. Đúng là hầu hết trong số họ là độc quyền và không phải là nguồn mở. Nhưng tôi nghĩ rằng các công cụ đã khá trưởng thành ngay cả khi câu hỏi đó được hỏi ba năm trước. Ngày nay Xilinx , AlteraLattice đều có môi trường phát triển có sẵn miễn phí chạy trên Windows và Linux với sự hỗ trợ 32 và 64 bit. Nếu bạn nhấn mạnh vào mã nguồn mở Icarus Verilog có thể làm khá nhiều. Nhưng cá nhân tôi vẫn gắn bó với các công cụ cụ thể của nhà cung cấp.

FPGA không chỉ là một loạt các flip flop cấu hình. Hãy xem xét Altera NIOS II . Bộ xử lý lõi mềm 32 bit có khả năng chạy Linux. Trộn và kết hợp thông tin liên lạc và các thiết bị ngoại vi khác từ OpenCores hoặc từ Xilinx , Altera hoặc Lattice và bạn đã xây dựng một bộ vi điều khiển tùy chỉnh với mọi thứ bạn cần và không có gì bạn không có. Bạn thậm chí có thể viết mã C cho bộ xử lý NIOS II và có các chức năng nhất định được triển khai trực tiếp trong phần cứng FPGA nếu bạn cần tốc độ. Là cấp độ cao đủ suy nghĩ cho bạn?

FPGA có chi phí đầu tư ban đầu cao. Nhưng nó rẻ hơn và dễ dàng hơn để thêm chức năng sau này trong quá trình thiết kế. Đó là những gì có nghĩa là thiết kế "nhìn về phía trước". Hãy xem xét một dự án mà bạn muốn thêm một số động cơ bổ sung vào robot của mình nhưng bạn đã hết bộ tạo PWM trên bộ vi điều khiển của mình. Bạn làm nghề gì? Thêm một vi điều khiển? Mua chip PWM riêng biệt và kết nối chúng với giao diện truyền thông? Điều gì nếu tất cả các giao diện truyền thông của bạn đang được sử dụng? Với một đồ họa, điều này được giảm gần như hoàn toàn thành thao tác sao chép và dán. Nó dễ dàng hơn nhiều, rẻ hơn và nhanh hơn để mở rộng một thiết kế để bao gồm chức năng mới mà không cần mua nhiều phần cứng bổ sung với một FPGA.

Nhưng có lẽ lý do lớn nhất để sử dụng một FPGA là tốc độ. Tôi không nói về tốc độ đồng hồ thuần túy. Nhưng khi bạn cần rất nhiều thứ xảy ra đồng thời. Như Gossamer đã đề cập, tính song song là những gì mà FPGA thực sự giỏi. Thiết kế bộ lọc đặc biệt được hưởng lợi từ loại kiến ​​trúc song song này. Nếu bạn cần lọc và phản hồi với một cảm biến thay đổi nhanh chóng, thì bạn cần một đồ họa. Họ cũng khá giỏi trong việc xử lý video vì điều này cũng có lợi từ việc xử lý song song.

Ví dụ như robot tay tốc độ cao này . Nó cần xử lý video từ camera thị giác máy tốc độ cao (1000 khung hình / giây) cũng như các cảm biến xúc giác và phản hồi bằng cách điều khiển nhiều bộ truyền động chỉ trong vài mili giây. Loại dự án này là khi bạn cần chọn các GPU.

xử lý tầm nhìn song song


Bạn có thể làm rõ "Cái này có chi phí đầu tư ban đầu cao không?"? Liên quan ở đây : giá trông rất thấp. Bạn có nghĩa là chi phí đào tạo cao hoặc một số con số khác?
hhh

1
@hhh Tôi không nói về chi phí chip thô. Tôi đã nói về chi phí phát triển. Hãy xem xét một bộ phát triển vi điều khiển như tại PandaBoard . Chứa ARM Cortext A9 với giá $ 181. Một bảng phát triển FPGA có thể chứa A9 như Cyclone V là $ 1,099.
embedded.kyle

@hhh Tất nhiên có bộ dụng cụ phát triển đồ họa rẻ hơn. Nhưng tôi đã cố gắng tìm một số liệu để so sánh hai thứ rất khác nhau. Vì vậy, một bộ công cụ phát triển có (rất) khả năng xử lý gần như nhau gấp khoảng 10 lần.
embedded.kyle

@hhh ARM rẻ nhất trên Mouser là $ 0,80 . Đồ họa rẻ nhất là $ 2,80 .
embedded.kyle

2
@hhh Bàn tay đó đang nghiên cứu tiên tiến với khả năng hàng chục nếu không phải là hàng trăm ngàn đô la thiết bị tùy chỉnh chạy nó. Xử lý video nói chung có xu hướng ở mức cao hơn. Xem ở đâyở đây . Và không ai có thể xử lý video 1kfps. Giống như 30-60fps. Bảng bạn liệt kê không có bất kỳ đầu vào video. Mặc dù nó chắc chắn có thể điều khiển các cơ cấu chấp hành và xử lý các cảm biến xúc giác. Chắc chắn có thể mô phỏng bàn tay bạn liên kết.
embedded.kyle

2

Tôi nghĩ rằng có thể có một quan niệm sai lầm xung quanh những gì một thực sự là một FPGA và khi nó được sử dụng trong các thiết kế. Vì vậy, hãy để tôi cố gắng giải thích phần đó đầu tiên.

FPGA và khi người ta có thể muốn có một ...

Có nguy cơ đơn giản hóa, một bộ vi xử lý ít hơn một bộ xử lý có thể 'cấu hình lại được'.

Tại sao ai đó muốn có một bộ vi xử lý 'có thể cấu hình lại'? Chà, vì chi phí quá cao để chế tạo bộ xử lý silicon đủ khả năng để làm điều đó cho một, hai hoặc thậm chí hai trăm chip. Bạn cần phải chạy hàng ngàn chip để làm cho nó khả thi về mặt kinh tế.

Vì lần đầu tiên không có thiết kế nào không có lỗi, nên việc đi theo con đường silicon có hiệu quả cam kết với một công ty ít nhất hai lần nếu không chạy thử nghiệm nhiều hơn, tất cả đều có chi phí chế tạo lớn.

Điều đó về cơ bản có nghĩa là rất ít công ty thương mại sẽ quan tâm đến việc thiết kế và đưa vào chế tạo bất cứ thứ gì khác ngoài chip với sức hấp dẫn thương mại đủ rộng.

Vì vậy, nếu bạn đưa ra một thiết kế tuyệt vời để chứng minh cho bộ vi xử lý tùy chỉnh, thì bạn có thể cố gắng đưa ý tưởng của mình vào ngân sách hạn hẹp bằng cách triển khai nó trong một đồ họa, trong đó chip thực tế chỉ là một bộ sưu tập cổng và 'Chương trình' (thường là VHDL hoặc Verilog) sắp xếp các cổng đó thành một bộ vi xử lý thực tế.

Nhưng đó hoàn toàn là một con đường hoàn toàn khác (thiết kế bộ vi xử lý!) ...

Điều đó dẫn tôi đến đề nghị rằng

... Các GPU không cần thiết cho robot - ít nhất là ngay từ đầu

Những gì bạn cần cho robot là một bộ xử lý . Một FPGA chỉ là một loại bộ xử lý đặc biệt (có thể cấu hình lại).

Bạn hỏi liệu bạn 'nên'? Điều đó phụ thuộc vào kiến ​​thức của bạn cũng như sở thích thực sự của bạn nằm ở đâu - thiết kế bộ vi xử lý trước hay robot trước?

Nếu vi xử lý là niềm đam mê của bạn, thì bằng mọi cách! Và robotics là một lĩnh vực ứng dụng tuyệt vời cho các bộ vi xử lý tùy chỉnh - có lẽ là vỏ thị giác với nhiều đường dẫn quyết định song song được xử lý trực tiếp trong phần cứng, hoặc nhân kéo căng đặc biệt trong phần cứng - về cơ bản mọi thứ mà bộ xử lý chung không thể xử lý tốt.

Nhưng nếu bạn đang thiết kế bộ vi xử lý trong các GPU, thì dĩ nhiên bạn sẽ cần phải có tất cả những kiến ​​thức cấp thấp mà bạn đề cập, và hơn thế nữa - vì về cơ bản, bạn sẽ thiết kế bộ xử lý của riêng mình. Điều này thực sự không liên quan gì đến robot, mặc dù ứng dụng mục tiêu của bạn có thể là robot.

Hầu hết các nhà thiết kế có thể tìm thấy một bộ xử lý hiện có sẽ làm hầu hết những gì họ cần.

Vì vậy, tôi nghĩ rằng bạn có thể không cần một đồ họa.

Một lộ trình khởi đầu: từ khả năng thương mại đến (có thể) một ...

Theo tôi, mục tiêu đầu tiên là cố gắng đưa tất cả các khái niệm sáng tạo của bạn được xây dựng thành một robot hoạt động (bản thân nó là một thách thức khá lớn).

Nếu bạn thấy rằng bạn có các tắc nghẽn xử lý cụ thể và đáng kể trong thiết kế của mình, thì mục tiêu tiếp theo là tối ưu hóa việc lựa chọn / thiết kế bộ xử lý của bạn, vẫn là các chip có sẵn trên thị trường. Có thể lớn hơn, nhanh hơn (đánh đổi bằng rút điện, tản nhiệt). Có thể nhỏ hơn, các chip chuyên dụng xử lý các tác vụ cụ thể và giao tiếp với bộ não chính (đánh đổi với các biến chứng thuật toán / logic).

Chỉ khi có các khả năng mà bạn sẽ không thể xử lý chip thương mại, thì bạn mới có thể xem xét triển khai bộ xử lý chuyên dụng bên trong một GPU bởi vì tại thời điểm đó, sẽ có những lợi thế rất rõ ràng mà bạn hy vọng đạt được bằng cách tự lăn ', Và bạn có thể tập trung vào việc thực hiện các khả năng đó, với các giao diện phù hợp với phần còn lại của thiết kế.

Mặt khác, bạn có khả năng bị theo dõi phụ từ mục tiêu chính của mình (mà tôi sẽ giả định là thực sự chế tạo robot!)

Điểm mấu chốt: Các GPU là một sự xao lãng khi bắt đầu chế tạo robot --- cho đến khi bạn hoàn toàn đi theo con đường robot - và đã đạt được một số thành công lớn trong thiết kế bộ vi xử lý / điện tử kỹ thuật số ở đâu đó trên đường đi.


Tôi có thể nghĩ nhiều ví dụ trong các lĩnh vực như xử lý video trong đó xử lý song song với FPGA là điều cần thiết cho tốc độ và kết quả chính xác hơn. Nhìn thấy những thất bại trong đó mọi người cố gắng thực hiện thời gian thực phát hiện mống mắt ồn ào với một cpu. Không. FPGA có các khu vực cụ thể của riêng mình, nơi nó đá như tay robot có độ khéo léo cao hoặc xử lý video chính xác / nhanh. Tôi không thể đảm nhận việc kết nối đồ họa và vi xử lý như thế. Chúng là những con thú rất khác nhau với những mặt tốt / xấu của chúng. Sai lầm? Bất kỳ ý tưởng cho dù loại khu vực tốt cho FPGA được liệt kê ở đâu đó?
hhh

Bạn chắc chắn đúng rằng có rất nhiều lĩnh vực mà các GPU là một lợi thế - tôi không loại trừ những điều đó trong câu trả lời của mình. Vấn đề là bạn đang ở đâu trên đường cong kinh nghiệm và mức độ rõ ràng của bạn về những lợi thế cụ thể mà bạn muốn đạt được khi sử dụng một FPGA. Nếu bạn không biết câu trả lời cho điều đó, thì có lẽ bạn không cần! (Điều này lặp lại câu trả lời của Jakob bên dưới.)
Assad Ebrahim

1

Đã làm việc với cả hai loại GPU và Vi điều khiển trong các dự án robot, tôi thực sự sẽ nói ngay bây giờ: bất cứ ai thực hiện nhiệm vụ đều có nhiều kinh nghiệm nhất. Nếu bạn biết rõ cả hai, bạn sẽ không tự hỏi mình câu hỏi. Nếu bạn không biết rõ, thì đây sẽ là những điểm cần phải làm:

  • Có thời gian phức tạp trên các cổng I / O cần thiết không? Điều khiển động cơ 3 pha có thể có những yêu cầu như vậy. FPGA có một lợi thế nhỏ ở đây.
  • Bạn có thể song song thuật toán độ trễ siêu thấp của bạn? Ở đây, FPGA không thực sự cạnh tranh với vi điều khiển, mà nhiều hơn với các PC nhúng. Hầu hết mọi thứ tôi sẽ dùng cho PC nhúng, nhưng bạn có thể có lợi thế với một GPU cho một số ứng dụng cụ thể. Ví dụ, xử lý âm thanh nổi dày đặc thường được thực hiện trong các GPU. Rất nhiều máy ảnh sử dụng các GPU để xử lý luồng dữ liệu.

Những gì cũng thường được sử dụng là các giải pháp lai. Hoặc là với hai chip, do đó, một vi điều khiển cho mã chương trình và một GPU cho IO hoặc một số tác vụ khác. Ngoài ra còn có một số các GPU thực sự có một vi điều khiển được nhúng.

Tôi sẽ không quá gay gắt trên các GPU như một số bài viết khác, nhưng nói chung cũng sẽ tranh luận rằng, trừ khi bạn biết rõ về VHDL của mình, bạn sẽ sử dụng vi điều khiển tốt hơn, hoặc thậm chí còn tốt hơn cho các PC nhúng.


Bạn có thể chỉ ra một số dự án ví dụ sẽ giúp hiểu được loại nào là tốt để làm với các GPU và những gì với vi điều khiển? Ví dụ, giả sử một số robot theo dòng: nó hoạt động khá tốt với một bộ vi điều khiển duy nhất trên bề mặt sạch cho đến khi có nhiều đường mờ hơn đòi hỏi phải làm sắc nét / kết cấu / v.v. Nếu một đường trong rừng (hoặc bề mặt ồn ào khác), đó sẽ là thử thách khó khăn hơn nhiều (tôi nghi ngờ liệu có thể làm được với fpga hay không). Bạn đã thực hiện bất kỳ dự án robot trong thế giới thực nào, nơi bạn đã sử dụng fpga chẳng hạn cho thời gian thực xử lý hình ảnh / video? +1 cho VHDL.
hhh
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.