few-television-2556
08/04/2026, 3:21 PMx at time t based on historical state measurements of x. At any given time t, the predictor only has access to x measurements up until some time point t_latest_meas(t) < t due to delays. We cannot assume that t-t_meas is equal to some constant time delay D in this scenario. We can log t_latest_meas(t) every time we log a value for t.
Let's call the predictions x_pred and the measurements x_meas.
In scenarios like this, I would find it useful to visualize in a time series view the evolution of the x_pred along with the history of x_meas available to the predictor at any given time. To clarify, I want to create a time series view in rerun with the following properties:
- When the timeline cursor position is set to T, I want to show x_pred for all t <= T
- When the timeline cursor position is set to T, I want to show x_meas for all t <= t_latest_meas(t)
I've also attached a video showing what I'm going for. In this video, the blue curve represents x_meas, the red curve represents x_pred and the black bar represents the cursor position on the timeline. (Here, x_pred(t) is simply taken to be linearly extrapolated from the speed of x_meas from some fixed time delay back).
Now, my question is: Can I achieve this in Rerun, and if so, how?
The closest I can think of is to set different VisibleTimeRange for individual entities (like shown [here](https://github.com/rerun-io/rerun/issues/8557) ), but then I don't think I would be able to dynamically update the upper bound of the visible time range of the x_meas entity to t_latest_meas(t) at every logged prediction x_pred(t), unless I resend the entire blueprint every time. I haven't actually tried this, but it doesn't seem like a feasible solution.
Thank you
https://cdn.discordapp.com/attachments/1534219749146234991/1534219749469192383/Animation.webp?ex=6a7354fc&is=6a72037c&hm=c1f54165baa1ca31f676cdd999f08cc32ea7b8e71b6baa9fe21faebb7ed19df2&bitter-egg-39598
08/04/2026, 12:12 PMhappy-xylophone-46471
07/27/2026, 9:50 PMstatic=true and the same application id as my poses logs . When I run the viewer with something like rerun map.rrd poses.rrd I get 2 separate recordings in the viewer.
If i override the recording id in both files to be the same, then I get one recording in the viewer and can view the poses on the map. This means I cannot use the recording ID to differentiate recordings if it has to be the same as my statis map file...
Is the only way to achieve what I want to actually log the map data each time I collect pose data so it is in the same log (and recording id) as the poses? Thanks!damp-rain-62498
07/17/2026, 5:48 PMnice-carpenter-46994
07/15/2026, 12:53 AMnarrow-businessperson-49056
06/29/2026, 10:10 AMtrig/sin and trig/cos are not plot on the same view despite the shared root.
Is there something I'm missing ? 🙁
python3.12
rerun-sdk==0.33.0
https://cdn.discordapp.com/attachments/1521095529193537586/1521095529398931486/Screenshot_2026-06-29_at_12.10.29.png?ex=6a43961a&is=6a42449a&hm=d8d137d7fc79aa5e57d59bfad76daed02c88c5e38355d1efa45179496dd47f46&salmon-quill-85875
06/22/2026, 12:13 PMrec_.log('transforms', rerun::Transformd3D())
2) using send_columns with rerun::Transform3D().with_many_*().columns()
I imagine the intended method is 2) but it has the downside of me having to specify all timelines, and I have to create a copied-vector like so:
// all transforms here are logged with the same timestamp
std::vector<int64_t> step_repeated(transforms.size(), log_step_);
const auto rr_indices = rerun::TimeColumn::from_sequence("step", step_repeated);
rec_.send_columns("transforms", rr_indices, rr_transforms);
How come there isn't an option to just rec_.log with a Transform3D that has multiple transforms in it? Like you can for many other things (e.g. Points3D, LineStrips3D, ...)
Thanks!salmon-quill-85875
05/26/2026, 10:14 AMbreezy-jordan-33051
05/19/2026, 11:55 AMfresh-pager-90007
05/10/2026, 8:53 AMrr.serve_grpc().
This instance is also logging some test text log data for me to see.
When I run rerun --connect rerun+http://10.0.0.1:9876/proxy, the viewer opens and I see the logs as intended.
Now I have the re_viewer embedded in a tiny egui app based on the [extend_viewer_ui example](https://github.com/rerun-io/rerun/tree/main/examples/rust/extend_viewer_ui), with a code snippet as follows:
rust
// in an egui ui() function...
if my_button_clicked {
// connect rerun to the selected host's server using its ip address
if let Some(host_name) = &self.active_robot {
let robot = &self.robots[host_name];
info!("Connecting to {} at {}", host_name, robot.ip);
let url = format!(
"rerun+http://{}:9876/proxy",
robot.ip
);
// ^this evaluates to rerun+http://10.0.0.1:9876/proxy
self.rerun_app.open_url_or_file(&url);
}
}
When I click the button, in the console, I see
log
[2026-05-10T08:36:03Z INFO my_app] Connecting to TEST at 10.0.0.1
[2026-05-10T08:36:03Z DEBUG re_viewer_context::open_url] Opening URL: RedapProxy(rerun+http://10.0.0.1:9876/proxy)
[2026-05-10T08:36:03Z DEBUG re_grpc_client::read] Loading via gRPC… uri=ProxyUri { origin: Origin { scheme: RerunHttp, host: Ipv4(10.0.0.1), port: 9876 } }
[2026-05-10T08:36:03Z DEBUG re_viewer::app] Adding new log receiver: rerun+http://10.0.0.1:9876/proxy
...but no signs of life in the actual viewer UI. I'm not quite sure why the standalone and embedded versions are behaving so differently.
Any help would be appreciated, I'd really like to use rerun! :)white-rose-43088
05/07/2026, 6:38 PMrerun --connect rerun+http://127.0.0.1:9876/proxy
[2026-05-07T18:08:14Z INFO re_data_loader::load_file] Loading "rerun.dat"…
[2026-05-07T18:08:14Z ERROR re_viewer::app] Failed to open data source: "rerun.dat": No data-loader support for "rerun.dat"polite-bear-68493
05/04/2026, 5:27 PMbitter-garden-45718
05/01/2026, 1:06 AMbrave-sunset-11521
03/30/2026, 4:34 PMimportant-breakfast-65718
03/25/2026, 5:13 PMquick-book-77641
03/22/2026, 2:57 AMimportant-holiday-85916
03/18/2026, 6:40 PMstocky-manchester-85317
03/11/2026, 8:05 PMPinhole and a CoordinateFrame on the same entity, the image disappears from 3D views. Removing the CoordinateFrame fixes it.
The CoordinateFrame docs say you can associate entities with named transform frames, and the Pinhole docs mention that Pinhole projections define 3D-to-2D spatial relationships. I'd expect these to be orthogonal or independent — CoordinateFrame just declares which frame the entity belongs to, it shouldn't affect whether Pinhole/Image data is found.
rust
use ndarray::{Array, ShapeBuilder as _};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let rec = rerun::RecordingStreamBuilder::new("pinhole_coordinate_frame_bug").spawn()?;
let mut image = Array::<u8, _>::default((100, 100, 3).f());
for ((y, x, c), val) in image.indexed_iter_mut() {
*val = match c {
0 => (x * 255 / 100) as u8,
1 => (y * 255 / 100) as u8,
_ => 128,
};
}
rec.log_static(
"world",
&rerun::Transform3D::default()
.with_child_frame("camera_optical")
.with_translation([0.0, 0.0, 1.0]),
)?;
// Camera A: Pinhole + Image, NO CoordinateFrame — renders correctly
rec.log(
"world/image",
&rerun::Pinhole::from_focal_length_and_resolution([100., 100.], [100., 100.]),
)?;
rec.log(
"world/image",
&rerun::Image::from_color_model_and_tensor(rerun::ColorModel::RGB, image.clone())?,
)?;
// Camera B: Pinhole + Image + CoordinateFrame — image is invisible
rec.log(
"world/image_with_frame",
&rerun::Pinhole::from_focal_length_and_resolution([100., 100.], [100., 100.]),
)?;
rec.log(
"world/image_with_frame",
&rerun::CoordinateFrame::new("camera_optical"),
)?;
rec.log(
"world/image_with_frame",
&rerun::Image::from_color_model_and_tensor(rerun::ColorModel::RGB, image)?,
)?;
println!("'world/image' — no CoordinateFrame — should render");
println!("'world/image_with_frame' — with CoordinateFrame — image is invisible");
std::thread::sleep(std::time::Duration::from_secs(60));
Ok(())
}
world/image renders, world/image_with_frame has errors. The only difference is the CoordinateFrame.
Is this a known issue? Am I doing something wrong?
https://cdn.discordapp.com/attachments/1481382681483673691/1481382688479907861/2026-03-11_at_20.04.472x.png?ex=69b31ca3&is=69b1cb23&hm=69bb54d8657797e9541928d0672573ae99c50c783ca9577e9e79592ddc1ed4a0&calm-gigabyte-62348
03/10/2026, 12:44 PMdry-raincoat-30130
03/09/2026, 1:12 PMaverage-florist-37105
03/06/2026, 10:57 PMicy-tiger-92847
03/05/2026, 4:53 PMrapid-france-81005
03/05/2026, 1:30 PMicy-tiger-92847
02/27/2026, 2:09 PMcalm-fish-49863
02/17/2026, 1:00 AM[project]
...
dependencies = [
"rerun-sdk>=0.29.0"
]
Which could then be installed using uv tool install
But that still requires users to manually pip install the SDK to get access to the viewer, does anyone know how to bundle the viewer with the package to avoid this, and to keep the SDK dep here at the same version as the viewer?big-father-77719
02/16/2026, 4:41 PMbillions-table-90995
02/14/2026, 5:48 PMhundreds-kite-90853
02/10/2026, 8:16 AMbrave-sunset-11521
02/09/2026, 3:03 PMquick-book-77641
02/07/2026, 10:47 AMrerun rrd compact file.rrd --output file.rrd, or is there a chance of the file being overwritten while being read?