zalo
Chat ngay

Vật lý nhanh hơn trong Python

Chúng tôi đang mở mã nguồn một thư viện Python hiệu suất cao để mô phỏng robot bằng công cụ MuJoCo, được phát triển trong quá trình nghiên cứu robot của chúng tôi trong hơn một năm qua

Thư viện này là một trong những công cụ cốt lõi của chúng tôi để  nghiên cứu robot học sâu(mở trong cửa sổ mới), mà chúng tôi hiện đã phát hành như một phiên bản chính của  mujoco-py, liên kết Python 3 của chúng tôi dành cho MuJoCo. mujoco-py  1.50.1.0(mở trong cửa sổ mới) mang lại một số khả năng mới và cải thiện hiệu suất đáng kể. Các tính năng mới bao gồm:

+ Xử lý hiệu quả các mô phỏng song song

+ Kết xuất 3D không đầu được tăng tốc bằng GPU

+ Truy cập trực tiếp vào các chức năng và cấu trúc dữ liệu của MuJoCo

+ Hỗ trợ tất cả  các tính năng của MuJoCo 1.50 giống như trình giải quyết tiếp xúc được cải tiến của nó

Mô phỏng hàng loạt

Nhiều phương pháp trong tối ưu hóa quỹ đạo và học tăng cường (như LQR, PI2 và TRPO) được hưởng lợi từ khả năng chạy nhiều mô phỏng song song. mujoco-py sử dụng tính song song dữ liệu thông qua  OpenMP và quản lý bộ nhớ truy cập trực tiếp thông qua  Cython và  NumPy để làm cho mô phỏng hàng loạt hiệu quả hơn.

Sử dụng ngây thơ của phiên bản mới  MjSimPool giao diện cho thấy tốc độ tăng 400% so với giao diện cũ và vẫn tăng khoảng 180% so với mô hình sử dụng được tối ưu hóa và hạn chế bằng cách sử dụng  gói đa xử lý của Python để đạt được cùng mức độ song song. Phần lớn tốc độ tăng lên đến từ việc giảm thời gian truy cập vào các cấu trúc dữ liệu MuJoCo khác nhau. Hãy xem qua  [examples/simpool.py](https://github.com/openai/mujoco-py/blob/master/examples/simpool.py) chuyến tham quan MjSimPool.

Ngẫu nhiên hóa kết cấu hiệu suất cao

Chúng tôi sử dụng  miền ngẫu nhiên kỹ thuật trên nhiều dự án tại OpenAI. Phiên bản mới nhất của mujoco-py hỗ trợ kết xuất GPU không đầu; điều này mang lại tốc độ tăng lên ~40 lần so với kết xuất dựa trên CPU, cho phép chúng tôi tạo ra hàng trăm khung hình mỗi giây dữ liệu hình ảnh tổng hợp. Trong hoạt ảnh (làm chậm) ở trên, chúng tôi sử dụng điều này để thay đổi kết cấu của một trong những rô-bốt của mình, giúp nó xác định cơ thể của nó khi chúng tôi chuyển nó từ trình mô phỏng sang thực tế. Kiểm tra  examples/disco_fetch.py để biết ví dụ về việc tạo kết cấu ngẫu nhiên.

Thực tế ảo với mujoco-py

API được mujoco-py cung cấp đủ để cho phép tương tác Thực tế ảo mà không cần bất kỳ mã C++ bổ sung nào. Chúng tôi đã chuyển  ví dụ C++ VR của MuJoCo sang Python bằng mujoco-py. Nếu bạn có thiết lập HTC Vive VR, bạn có thể thử bằng  ví dụ này (hỗ trợ này được coi là thử nghiệm, nhưng chúng tôi đã sử dụng nội bộ trong một thời gian).

API và cách sử dụng

Cách đơn giản nhất để bắt đầu với mujoco-py là với  lớp MjSim. Đây là một lớp bao bọc xung quanh mô hình mô phỏng và dữ liệu, cho phép bạn dễ dàng thực hiện từng bước mô phỏng và kết xuất hình ảnh từ cảm biến camera. Sau đây là một ví dụ đơn giản:

con trăn
 
12345678
1
from mujoco_py import load_model_from_path, MjSim
2
 
3
model = load_model_from_path("xmls/tosser.xml")
4
 
5
sim = MjSim(model)
6
sim.step()
7
print(sim.data.qpos)
8
# => [ -1.074e-05 1.043e-04 -3.923e-05 0.000e+00 0.000e+00]

Đối với người dùng nâng cao, chúng tôi cung cấp một số giao diện cấp thấp hơn để truy cập trực tiếp vào các cấu trúc và hàm MuJoCo C. Tham khảo  README  và  tài liệu đầy đủ để tìm hiểu thêm.

Xem thêm: mua tài khoản ChatGPT Plus chính hãng giá rẻ

Hot Deal

Họ tên (*)

Số điện thoại (*)

Email (*)

Dịch vụ

Đăng ký để nhận bản tin mới nhất !