add WallTime và WallTimer
This commit is contained in:
66
README.md
66
README.md
@@ -98,7 +98,70 @@ Rate tự động tính toán thời gian còn lại trong mỗi chu kỳ và sl
|
||||
- Có thể quản lý nhiều timer đồng thời
|
||||
- Cung cấp thông tin chi tiết về timing để debug và monitoring
|
||||
|
||||
### 5. WallRate - Rate dùng thời gian thực
|
||||
### 5. WallTime - Thời gian thực (Wall-clock Time)
|
||||
|
||||
`WallTime` đại diện cho thời gian thực từ hệ thống, luôn sử dụng wall-clock time và không bị ảnh hưởng bởi simulated time.
|
||||
|
||||
**Đặc điểm:**
|
||||
- Luôn sử dụng thời gian thực từ system clock
|
||||
- Không cần khởi tạo (`Time::init()`)
|
||||
- Không bao giờ throw exception
|
||||
- Không bị ảnh hưởng bởi simulated time
|
||||
- Thread-safe và cross-platform
|
||||
|
||||
**Khác biệt với Time:**
|
||||
- `Time` có thể sử dụng simulated time (hữu ích cho testing)
|
||||
- `WallTime` luôn dùng thời gian thực, không phụ thuộc vào simulated time
|
||||
- `Time` cần khởi tạo, `WallTime` không cần
|
||||
|
||||
**Ứng dụng:**
|
||||
- Đo thời gian thực thi (profiling/benchmarking)
|
||||
- Timeout và thời gian chờ thực tế
|
||||
- Logging với timestamp thực
|
||||
- Giao tiếp với hardware cần timing chính xác
|
||||
- Performance monitoring
|
||||
|
||||
### 6. WallTimer - Hẹn giờ định kỳ với thời gian thực
|
||||
|
||||
`WallTimer` tương tự như `Timer` nhưng sử dụng wall-clock time thay vì simulated time. Đây là công cụ mạnh mẽ cho các tác vụ cần timing chính xác trong thời gian thực.
|
||||
|
||||
**Đặc điểm:**
|
||||
- Chạy trong thread riêng, không chặn thread chính
|
||||
- Luôn sử dụng wall-clock time (không bị ảnh hưởng bởi simulated time)
|
||||
- Có thể là one-shot (chỉ chạy một lần) hoặc repeating (lặp lại)
|
||||
- Callback nhận thông tin chi tiết về timing (WallTimerEvent)
|
||||
- Có thể start/stop và điều chỉnh period động
|
||||
- Tự động cleanup khi hủy
|
||||
|
||||
**Khác biệt với Timer:**
|
||||
- `Timer` sử dụng `Time`/`Duration` (có thể bị ảnh hưởng bởi simulated time)
|
||||
- `WallTimer` sử dụng `WallTime`/`WallDuration` (luôn dùng thời gian thực)
|
||||
- `Timer` phù hợp cho ROS messages và simulation
|
||||
- `WallTimer` phù hợp cho performance monitoring, hardware interfaces, và real-time operations
|
||||
|
||||
**WallTimerEvent chứa thông tin:**
|
||||
- Thời gian thực tế khi callback được gọi (wall-clock time)
|
||||
- Thời gian mong đợi khi callback được gọi (wall-clock time)
|
||||
- Thời gian của callback trước đó (wall-clock time)
|
||||
- Khoảng thời gian giữa các callback (để phát hiện drift)
|
||||
|
||||
**Ứng dụng:**
|
||||
- Performance monitoring và profiling
|
||||
- Real-time deadlines và timeouts
|
||||
- Hardware interfaces cần timing chính xác
|
||||
- Benchmarking và measurement
|
||||
- Background tasks cần chạy theo thời gian thực
|
||||
|
||||
**Ví dụ:**
|
||||
```cpp
|
||||
// Đo thời gian thực thi
|
||||
robot::WallTime start = robot::WallTime::now();
|
||||
doSomething();
|
||||
robot::WallDuration elapsed = robot::WallTime::now() - start;
|
||||
std::cout << "Took " << elapsed.toSec() << " seconds" << std::endl;
|
||||
```
|
||||
|
||||
### 6. WallRate - Rate dùng thời gian thực
|
||||
|
||||
`WallRate` tương tự như `Rate` nhưng luôn sử dụng thời gian thực (wall-clock time) thay vì simulated time.
|
||||
|
||||
@@ -218,6 +281,7 @@ Sử dụng simulated time để chạy các test cases với timing cụ thể,
|
||||
|
||||
## Tài liệu tham khảo
|
||||
|
||||
- `WALLTIME_USAGE.md` - Hướng dẫn chi tiết về WallTime với các ví dụ và use cases
|
||||
- `TIMER_USAGE.md` - Hướng dẫn chi tiết về cách sử dụng Timer với các ví dụ
|
||||
- `TIMER_EVENT_EXPLANATION.md` - Giải thích chi tiết về TimerEvent structure và các trường dữ liệu
|
||||
- `CHANGELOG.rst` - Lịch sử thay đổi và version history
|
||||
|
||||
Reference in New Issue
Block a user