Skip to content

Commit

Permalink
improve update_line_data
Browse files Browse the repository at this point in the history
  • Loading branch information
deanlee committed May 6, 2024
1 parent aca0136 commit 4d7bbd8
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 15 deletions.
8 changes: 2 additions & 6 deletions selfdrive/boardd/boardd_api_impl.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,9 @@ def can_list_to_can_capnp(can_msgs, msgtype='can', valid=True):
cdef vector[can_frame] can_list
can_list.reserve(len(can_msgs))

cdef can_frame f
for can_msg in can_msgs:
f.address = can_msg[0]
f.busTime = can_msg[1]
f.dat = can_msg[2]
f.src = can_msg[3]
can_list.push_back(f)
can_list.emplace_back(can_frame(address=can_msg[0], busTime=can_msg[1], dat=can_msg[2], src=can_msg[3]))

cdef string out
can_list_to_can_capnp_cpp(can_list, out, msgtype == 'sendcan', valid)
return out
15 changes: 6 additions & 9 deletions selfdrive/ui/ui.cc
Original file line number Diff line number Diff line change
Expand Up @@ -57,26 +57,23 @@ void update_leads(UIState *s, const cereal::RadarState::Reader &radar_state, con
void update_line_data(const UIState *s, const cereal::XYZTData::Reader &line,
float y_off, float z_off, QPolygonF *pvd, int max_idx, bool allow_invert=true) {
const auto line_x = line.getX(), line_y = line.getY(), line_z = line.getZ();
QPolygonF left_points, right_points;
left_points.reserve(max_idx + 1);
right_points.reserve(max_idx + 1);

QPointF left, right;
pvd->clear();
for (int i = 0; i <= max_idx; i++) {
// highly negative x positions are drawn above the frame and cause flickering, clip to zy plane of camera
if (line_x[i] < 0) continue;
QPointF left, right;

bool l = calib_frame_to_full_frame(s, line_x[i], line_y[i] - y_off, line_z[i] + z_off, &left);
bool r = calib_frame_to_full_frame(s, line_x[i], line_y[i] + y_off, line_z[i] + z_off, &right);
if (l && r) {
// For wider lines the drawn polygon will "invert" when going over a hill and cause artifacts
if (!allow_invert && left_points.size() && left.y() > left_points.back().y()) {
if (!allow_invert && pvd->size() && left.y() > pvd->back().y()) {
continue;
}
left_points.push_back(left);
right_points.push_front(right);
pvd->push_back(left);
pvd->push_front(right);
}
}
*pvd = left_points + right_points;
}

void update_model(UIState *s,
Expand Down

0 comments on commit 4d7bbd8

Please sign in to comment.