-
背景ロボットの制御周りの基礎ができてきて、ロボットへのコマンド・ロボットからのフィードバックの送信周期を高めて性能向上を狙えるようになってきた 内容今までは、制御方法によって少しずつ内容をスイッチングしてはいるものの、一つのパケットにすべてのコマンド・フィードバック情報を詰め込んでいた。 関連:https://github.com/orgs/ibis-ssl/discussions/372 参考現状のコマンドパケットtypedef struct
{
uint8_t header;
uint8_t check_counter;
float vision_global_pos[2];
float vision_global_theta;
bool is_vision_available;
float target_global_theta;
float kick_power;
float dribble_power;
bool enable_chip;
bool lift_dribbler;
bool stop_emergency;
float acceleration_limit;
float linear_velocity_limit;
float angular_velocity_limit;
uint16_t latency_time_ms;
bool prioritize_move;
bool prioritize_accurate_acceleration;
uint16_t elapsed_time_ms_since_last_vision;
ControlMode control_mode;
union {
LocalCameraModeArgs local_camera;
PositionTargetModeArgs position;
SimpleVelocityTargetModeArgs simple_velocity;
PolarVelocityModeArgs polar_velocity;
} mode_args;
} RobotCommandV2; |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 1 reply
-
現状のコマンドの再構成ここでは
くらいのイメージ
|
Beta Was this translation helpful? Give feedback.
-
そもそも気にしなくて良い説UDPパケットはIPヘッダ20バイト+UDPヘッダ8バイト=28バイトあるので、分割してパケット数増やしたほうがよくなさそうだし、 現状の計算(AI->ロボット)条件
UDPパケットサイズヘッダ28byte + コマンドパケットサイズ64byte = 92byte 1秒あたりのパケット数ロボット6台 × 周期60Hz = 360 帯域92byte × 360 = 33120[ byte/second] ビットに直して、 将来の計算(AI->ロボット)
帯域台数2倍、周期2倍なので、単純に4倍になる 33120 * 4 = 132480 [byte/second] 132480 * 8 = 1059840[bit/second] つまり、ようやく1 Mbpsに到達する。 さらに野心的な240Hzにした場合は2倍の2 Mbps 現状の計算(ロボット->AI)パケットサイズUART時点では内容自体は128byte ここにUDPのヘッダ28byteがのって、156byte 帯域パケットサイズ:156byte 156 * 6 * 50 = 46800 [byte/second] つまり、374.4 Kbps 将来の計算(ロボット->AI)帯域パケットサイズ:156byte 台数2倍、周期2.4倍で4.8倍 374.4 * 4.8 = 1797.12 [Kbps] = 1.79712 [Mbps] となり、約1.8 Mbps 野心的な240Hz送信では2倍となり3.6 Mbpsである 結論将来の想定でも、 AI送信:1.1 Mbps なのでWiFiルーターで扱うUDPではあまり気にすることはない気がする。 ただし、ロボット送信分はマルチキャストなので実際の負荷はもっと大きいものになるかもしれない。 ボトルネックはやはりCM4とマイコン間通信になりそう |
Beta Was this translation helpful? Give feedback.
そもそも気にしなくて良い説
UDPパケットはIPヘッダ20バイト+UDPヘッダ8バイト=28バイトあるので、分割してパケット数増やしたほうがよくなさそうだし、
そもそも気にするほどの帯域に達しないのでは
現状の計算(AI->ロボット)
条件
UDPパケットサイズ
ヘッダ28byte + コマンドパケットサイズ64byte = 92byte
1秒あたりのパケット数
ロボット6台 × 周期60Hz = 360
帯域
92byte × 360 = 33120[ byte/second]
ビットに直して、
33120 * 8 = 264960 [bps]
つまり、265 kbps
将来の計算(AI->ロボット)
帯域
台数2倍、周期2倍なので、単純に4倍になる
33120 * 4 = 132480 [byte/second]
132480 * 8 = 1059840[bit/second]
つまり、ようやく1 Mbpsに到達する。
さらに野心的な240Hzにした場合は2倍の2 Mbps
現状の計算(ロボット->AI)
パケットサイズ
UART時点では内容自体は128byte
https://github.com/ibis-ssl/G474_Orion_main/blob/main/Core/Src/ai_comm.c#L28C18-L28C21
ここにUDPのヘッダ28byteがのって、156byte
帯域
パケットサイ…