BEHAVIOR-1K 2026 challenge, pt50 submission run on the original 50 tasks, 468 of 500 episodes
The question was whether pt50 fails because it gets stuck against its own joint limits. The submission run logged joint positions and commanded targets at every 30 Hz sim step, and the eval logs map each env to its instance, so every matched episode can be checked. Locking against a joint limit is real but rare. The more common pattern is the base parking while the arms keep working, and the videos show several different causes behind it.
A joint counts as pushing its limit when it is within 0.05 rad of its URDF limit and pt50 still commands it further out. An episode is locked to the end when one joint does this for most of every minute, at least 2 minutes in a row, through the last minute.
12 of 453 failures end locked, and none of the 15 successes do. 10 of the 12 are the left wrist roll (left_arm_joint7) at +1.571 rad, and the other two are wrist joints (left_arm_joint6 and right_arm_joint6). The lock usually starts about 70% of the way into the episode and lasts until timeout. A guard that only targets joint limits would rescue at most about 3% of failures.
| task | episodes | failures | failures locked to the end | main joint |
|---|---|---|---|---|
| clean_a_patio | 10 | 10 | 2 | left_arm_joint7 |
| getting_organized_for_work | 10 | 10 | 2 | left_arm_joint7 |
| moving_boxes_to_storage | 8 | 6 | 2 | right_arm_joint6 |
| tidying_bedroom | 6 | 6 | 2 | left_arm_joint7 |
| clean_up_your_desk | 10 | 10 | 1 | left_arm_joint7 |
| rearranging_kitchen_furniture | 10 | 10 | 1 | left_arm_joint6 |
| setting_the_fire | 10 | 10 | 1 | left_arm_joint7 |
| sorting_household_items | 10 | 10 | 1 | left_arm_joint7 |
A minute is flagged when the base is nearly still (speed under 0.03, the slowest 10% of success minutes) while the arms move more than in 90% of success minutes. Flagged minutes are 8.3% of failure minutes against 1.8% of success minutes, and they build up over the episode, from 3.5% in the first third of failed episodes to 10.5% and 11.8%. 59 of 453 failures spend at least a quarter of their minutes this way. The control is weak, since 15 successes give only 56 success minutes.
Most near-miss tasks barely show it. putting_shoes_on_rack is at 0%, setting_mousetraps 2% and picking_up_toys 5%, while sorting_vegetables is at 46%.
| task | share of failed-episode minutes flagged | failures |
|---|---|---|
| sorting_vegetables | 46% | 10 |
| bringing_in_wood | 38% | 6 |
| turning_on_radio | 29% | 7 |
| clean_a_patio | 21% | 10 |
| chop_an_onion | 20% | 10 |
| tidying_bedroom | 19% | 6 |
| collecting_childrens_toys | 15% | 10 |
| cook_bacon | 15% | 10 |
| loading_the_car | 13% | 9 |
| storing_food | 12% | 10 |
| bringing_water | 12% | 6 |
| make_pizza | 12% | 4 |
Each sheet shows six moments of one failed run, with the head camera on the right and the two wrist cameras on the left of each tile.
Getting stuck is a real failure mode, but joint limits explain only a small part of it. Most of it is pt50 looping in a state where it does not know the next step, holding the wrong thing or lost. Knocked-over objects cannot be seen in joint data, because object state is not logged, and none of the three runs above shows one. Since the causes differ, a single scripted fix is unlikely to cover them, which points back to recovery data on these tasks.