Skip to content

Commit 7a82eb3

Browse files
committed
Updated Abstract and Platform Description Sections.
1 parent 2c5d0b6 commit 7a82eb3

File tree

1 file changed

+278
-9
lines changed

1 file changed

+278
-9
lines changed

cumulti.md

Lines changed: 278 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Made by Doncey Albin
33
# Alter as desired. The type references article_v2.html in includes if there are things you want to change.
44
type: article_v2
5-
title_main: "CU-Multi"
5+
title_main: "CU-Multi:"
66
title_follow: "A Dataset for Multi-Robot Data Association"
77
# university_name: "University of Colorado - Boulder" # You can comment this out if you dont like it.
88

@@ -44,26 +44,295 @@ show_news_updates: False
4444
news_update_1: "2024-12-25 Dataset visualization code now available."
4545
---
4646

47-
<div style="text-align: center;">
48-
Multi-robot systems (MRSs) are valuable for tasks such as search and rescue due to their ability to coordinate over shared observations. A central challenge in these systems is aligning independently collected perception data across space and time– i.e., multi-robot data association. While recent advances in collaborative SLAM (C-SLAM), map merging, and inter-robot loop closure detection have significantly progressed the field, evaluation strategies still predominantly rely on splitting a single trajectory from single-robot SLAM datasets into multiple segments to simulate multiple robots. Without careful consideration to how a single trajectory is split, this approach will fail to capture realistic pose-dependent variation in observations of a scene inherent to multi-robot systems. To address this gap, we present CU-Multi, a multi-robot dataset collected over multiple days at two locations on the University of Colorado Boulder campus. Using a single robotic platform, we generate four synchronized runs with aligned start times and deliberate percentages of trajectory overlap. CU-Multi includes RGB-D, GPS with accurate geospatial heading, and semantically annotated LiDAR data. By introducing controlled variations in trajectory overlap and dense lidar annotations, CU-Multi offers a compelling alternative for evaluating methods in multi-robot data association.
47+
<!-- css for javascript to animate Huntie rotating about -->
48+
<style>
49+
body {
50+
margin: 0;
51+
padding: 0;
52+
overflow: auto;
53+
position: relative;
54+
}
55+
#huntie-image-container {
56+
position: fixed;
57+
top: 0;
58+
left: 0;
59+
width: 100%;
60+
height: 100%;
61+
z-index: -1;
62+
pointer-events: none;
63+
}
64+
.robot-img {
65+
position: absolute;
66+
width: 100px;
67+
height: auto;
68+
user-select: none;
69+
transition: transform 1s ease-in-out, left 3s ease-in-out, top 3s ease-in-out;
70+
}
71+
</style>
72+
73+
<div id="huntie-image-container"></div>
74+
75+
<script>
76+
// robot colors
77+
const glowColors = ['limegreen', 'purple', 'orange', 'deepskyblue'];
78+
79+
function getRandomInt(min, max) {
80+
return Math.floor(Math.random() * (max - min + 1)) + min;
81+
}
82+
83+
function checkOverlap(x, y, size, positions) {
84+
for (let pos of positions) {
85+
if (Math.abs(x - pos.x) < size && Math.abs(y - pos.y) < size) {
86+
return true;
87+
}
88+
}
89+
return false;
90+
}
91+
92+
function scatterImagesOnSides(src, numImages, size) {
93+
const container = document.getElementById('huntie-image-container');
94+
const positions = [];
95+
const allImgs = [];
96+
97+
for (let i = 0; i < numImages; i++) {
98+
let x, y, attempts = 0;
99+
const side = Math.random() < 0.5 ? 'left' : 'right';
100+
do {
101+
x = side === 'left' ? getRandomInt(0, 0.1 * window.innerWidth - size) : getRandomInt(0.9 * window.innerWidth, window.innerWidth - size);
102+
y = getRandomInt(0, window.innerHeight - size);
103+
attempts++;
104+
} while (checkOverlap(x, y, size, positions) && attempts < 100);
105+
106+
positions.push({x, y});
107+
108+
const img = document.createElement('img');
109+
img.src = src;
110+
img.classList.add('robot-img');
111+
// add
112+
if (i < glowColors.length) {
113+
img.style.filter = `drop-shadow(0 0 4px ${glowColors[i]})`;
114+
}
115+
img.style.left = x + 'px';
116+
img.style.top = y + 'px';
117+
img.dataset.angle = getRandomInt(0, 360);
118+
119+
container.appendChild(img);
120+
allImgs.push(img);
121+
}
122+
123+
for (const img of allImgs) {
124+
animateImage(img, allImgs, size);
125+
}
126+
}
127+
128+
function animateImage(img, allImgs, size) {
129+
setInterval(() => {
130+
// rotate mr huntie
131+
const angleChange = getRandomInt(-90, 90);
132+
img.dataset.angle = parseFloat(img.dataset.angle) + angleChange;
133+
img.style.transform = `rotate(${img.dataset.angle}deg)`;
134+
135+
// translate mr huntie along new heading
136+
setTimeout(() => {
137+
const distance = getRandomInt(20, 50);
138+
const rad = img.dataset.angle * (Math.PI / 180);
139+
const moveX = Math.cos(rad) * distance;
140+
const moveY = Math.sin(rad) * distance;
141+
142+
const newX = parseFloat(img.style.left) + moveX;
143+
const newY = parseFloat(img.style.top) + moveY;
144+
145+
let overlap = false;
146+
for (const other of allImgs) {
147+
if (other === img) continue;
148+
const otherX = parseFloat(other.style.left);
149+
const otherY = parseFloat(other.style.top);
150+
if (Math.abs(newX - otherX) < size && Math.abs(newY - otherY) < size) {
151+
overlap = true;
152+
break;
153+
}
154+
}
155+
156+
// make sure robots are not colliding...
157+
if (!overlap) {
158+
img.style.left = newX + 'px';
159+
img.style.top = newY + 'px';
160+
}
161+
}, 3000);
162+
}, 3000);
163+
}
164+
165+
// 4 images of Huntie with 60px on each on sides of the page :)
166+
scatterImagesOnSides('/img/cumulti/huntie_bev.png', 4, 60);
167+
</script>
168+
169+
<div style="text-align: justify; background-color:rgb(225, 225, 225); padding: 5px; border-radius: 5px;">
170+
<div style="text-align:center; font-size: 36px;">
171+
<strong>Abstract</strong>
172+
</div>
173+
174+
<p style="text-align: justify; flex: 1; padding: 10px;">
175+
Multi-robot systems (MRSs) are valuable for tasks such as search and rescue due to their ability to coordinate over shared observations. A central challenge in these systems is aligning independently collected perception data across space and time– i.e., multi-robot data association. While recent advances in collaborative SLAM (C-SLAM), map merging, and inter-robot loop closure detection have significantly progressed the field, evaluation strategies still predominantly rely on splitting a single trajectory from single-robot SLAM datasets into multiple segments to simulate multiple robots. Without careful consideration to how a single trajectory is split, this approach will fail to capture realistic pose-dependent variation in observations of a scene inherent to multi-robot systems. To address this gap, we present CU-Multi, a multi-robot dataset collected over multiple days at two locations on the University of Colorado Boulder campus. Using a single robotic platform, we generate four synchronized runs with aligned start times and deliberate percentages of trajectory overlap. CU-Multi includes RGB-D, GPS with accurate geospatial heading, and semantically annotated LiDAR data. By introducing controlled variations in trajectory overlap and dense lidar annotations, CU-Multi offers a compelling alternative for evaluating methods in multi-robot data association.
176+
</p>
49177
</div>
50178

51-
## Dataset
179+
## System and Sensors
52180

53-
<div style="display: flex; margin-bottom: 20px;">
54-
55-
<!-- Left side: two stacked images -->
181+
182+
<div style="display: flex; margin-bottom: 20px; background-color:rgba(255, 255, 255, 0.90);">
56183
<div style="display: flex; flex-direction: column; align-items: center; margin-right: 15px;">
57184
<img src="/img/cumulti/huntie_sensors.png" alt="" style="margin-bottom: 10px;" width="400">
58-
<img src="/img/cumulti/main_image.png" alt="" width="400">
59185
</div>
60186

61-
<!-- Right side: justified text -->
62187
<p style="text-align: justify; flex: 1;">
63188
We collected the CU-Multi Dataset in Boulder, Colorado at the CU Boulder campus. The CU-Multi dataset was collected using the AgileX Hunter SE platform modified with a custom-designed electronics housing (see Figure 2). Inside the housing, the system includes an Intel NUC i7 with 16 GB of RAM, a power distribution board, an Ouster interface module, and a 217 Wh battery. Externally, a mounting plate on the rear of the Hunter SE accommodates two u-blox ANN-MB-00 GNSS antennas, while a front-mounted plate holds a 64-beam Ouster LiDAR sensor, a RealSense D455 RGB-D camera, a Lord MicroStrain G7 IMU, and a Lord RTK cellular modem with an external antenna.
64189
</p>
65190
</div>
66191

192+
<div style="display: flex; justify-content: center; background-color:rgba(255, 255, 255, 0.90);">
193+
<div>
194+
<table style="border-collapse: collapse; border: 2px solid black;">
195+
<tr>
196+
<th style="border: 1px solid black; padding: 8px;">Equipment</th>
197+
<th style="border: 1px solid black; padding: 8px;">Model Name</th>
198+
<th style="border: 1px solid black; padding: 8px;">Characteristics</th>
199+
<th style="border: 1px solid black; padding: 8px;">Resolution</th>
200+
<th style="border: 1px solid black; padding: 8px;">FoV</th>
201+
<th style="border: 1px solid black; padding: 8px;">Sensor Rate</th>
202+
</tr>
203+
<tr>
204+
<th style="border: 1px solid black; padding: 8px;"> LiDAR </th>
205+
<td style="border: 1px solid black; padding: 8px;"> Ouster OS-64 </td>
206+
<td style="border: 1px solid black; padding: 8px;"> 200 m range </td>
207+
<td style="border: 1px solid black; padding: 8px;"> 64v x 1028h </td>
208+
<td style="border: 1px solid black; padding: 8px;"> 45° x 360° </td>
209+
<td style="border: 1px solid black; padding: 8px;"> 20 Hz </td>
210+
</tr>
211+
<tr>
212+
<th style="border: 1px solid black; padding: 8px;"> RGB-D Camera </th>
213+
<td style="border: 1px solid black; padding: 8px;"> Intel Realsense D455 </td>
214+
<td style="border: 1px solid black; padding: 8px;"> RGB: Global Shutter </td>
215+
<td style="border: 1px solid black; padding: 8px;"> 1280 × 800 </td>
216+
<td style="border: 1px solid black; padding: 8px;">90° x 65° </td>
217+
<td style="border: 1px solid black; padding: 8px;"> 30 Hz </td>
218+
</tr>
219+
<tr>
220+
<th style="border: 1px solid black; padding: 8px;"> IMU</th>
221+
<td style="border: 1px solid black; padding: 8px;"> MicroStrain 3DM-GQ7-GNSS/INS </td>
222+
<td style="border: 1px solid black; padding: 8px;"> ±8 g </td>
223+
<td style="border: 1px solid black; padding: 8px;"> 300 dps </td>
224+
<td style="border: 1px solid black; padding: 8px;"> - </td>
225+
<td style="border: 1px solid black; padding: 8px;"> 400 Hz </td>
226+
</tr>
227+
<tr>
228+
<th style="border: 1px solid black; padding: 8px;"> Network Interface Modem </th>
229+
<td style="border: 1px solid black; padding: 8px;"> MicroStrain 3DM-RTK Modem </td>
230+
<td style="border: 1px solid black; padding: 8px;"> 2 cm, 0.1° accuracy </td>
231+
<td style="border: 1px solid black; padding: 8px;"> - </td>
232+
<td style="border: 1px solid black; padding: 8px;"> - </td>
233+
<td style="border: 1px solid black; padding: 8px;"> 2 Hz </td>
234+
</tr>
235+
<tr>
236+
<th style="border: 1px solid black; padding: 8px;"> GNSS Antennas </th>
237+
<td style="border: 1px solid black; padding: 8px;"> u-blox ANN-MB-00 </td>
238+
<td style="border: 1px solid black; padding: 8px;"> - </td>
239+
<td style="border: 1px solid black; padding: 8px;"> - </td>
240+
<td style="border: 1px solid black; padding: 8px;"> - </td>
241+
<td style="border: 1px solid black; padding: 8px;"> - </td>
242+
</tr>
243+
<tr>
244+
<th style="border: 1px solid black; padding: 8px;"> Main Computer </th>
245+
<td style="border: 1px solid black; padding: 8px;"> Intel NUC </td>
246+
<td style="border: 1px solid black; padding: 8px;"> Intel i7 CPU @ 3.20GHz, 16GB RAM </td>
247+
<td style="border: 1px solid black; padding: 8px;"> - </td>
248+
<td style="border: 1px solid black; padding: 8px;"> - </td>
249+
<td style="border: 1px solid black; padding: 8px;"> - </td>
250+
</tr>
251+
</table>
252+
<p style="text-align: center;"><strong>Table 1.</strong> <em>Hardware Specifications.</em></p>
253+
</div>
254+
</div>
255+
256+
## Environments
257+
258+
<div style="display: flex; background-color:rgba(255, 255, 255, 0.76); margin-bottom: 20px;">
259+
<div style="display: flex; flex-direction: column; align-items: center; margin-left: 15px; margin-right: 15px;">
260+
<img src="/img/cumulti/main_image.png" alt="" width="300">
261+
</div>
262+
263+
<p style="text-align: justify; flex: 1;">
264+
We collected the CU-Multi Dataset in Boulder, Colorado at the CU Boulder campus. The CU-Multi dataset was collected using the AgileX Hunter SE platform modified with a custom-designed electronics housing (see Figure 2). Inside the housing, the system includes an Intel NUC i7 with 16 GB of RAM, a power distribution board, an Ouster interface module, and a 217 Wh battery. Externally, a mounting plate on the rear of the Hunter SE accommodates two u-blox ANN-MB-00 GNSS antennas, while a front-mounted plate holds a 64-beam Ouster LiDAR sensor, a RealSense D455 RGB-D camera, a Lord MicroStrain G7 IMU, and a Lord RTK cellular modem with an external antenna.
265+
</p>
266+
</div>
267+
268+
### Main Campus Environment (*main_campus*)
269+
270+
### Kittredge Loop Environment (*kittredge_loop*)
271+
272+
<!-- <div style="display: flex; justify-content: center;">
273+
<div>
274+
<table style="border-collapse: collapse; border: 2px solid black;">
275+
<tr>
276+
<th style="border: 1px solid black; padding: 8px;">Environment</th>
277+
<th style="border: 1px solid black; padding: 8px;">Robot ID</th>
278+
<th style="border: 1px solid black; padding: 8px;">Total Path Length</th>
279+
<th style="border: 1px solid black; padding: 8px;"># Intra-robot loop closures</th>
280+
<th style="border: 1px solid black; padding: 8px;"># Inter-robot loop closures</th>
281+
</tr>
282+
<tr>
283+
<td style="border: 1px solid black; padding: 8px;" rowspan="4">Kittredge Loop</td>
284+
<td style="border: 1px solid black; padding: 8px;">robot1</td>
285+
<td style="border: 1px solid black; padding: 8px;">1136.41 m</td>
286+
<td style="border: 1px solid black; padding: 8px;">-</td>
287+
<td style="border: 1px solid black; padding: 8px;">-</td>
288+
</tr>
289+
<tr>
290+
<td style="border: 1px solid black; padding: 8px;">robot2</td>
291+
<td style="border: 1px solid black; padding: 8px;">1373.37 m</td>
292+
<td style="border: 1px solid black; padding: 8px;">-</td>
293+
<td style="border: 1px solid black; padding: 8px;">-</td>
294+
</tr>
295+
<tr>
296+
<td style="border: 1px solid black; padding: 8px;">robot3</td>
297+
<td style="border: 1px solid black; padding: 8px;">2792.06 m</td>
298+
<td style="border: 1px solid black; padding: 8px;">-</td>
299+
<td style="border: 1px solid black; padding: 8px;">-</td>
300+
</tr>
301+
<tr>
302+
<td style="border: 1px solid black; padding: 8px;">robot4</td>
303+
<td style="border: 1px solid black; padding: 8px;">4005.75 m</td>
304+
<td style="border: 1px solid black; padding: 8px;">-</td>
305+
<td style="border: 1px solid black; padding: 8px;">-</td>
306+
</tr>
307+
<tr>
308+
<td style="border: 1px solid black; padding: 8px;" rowspan="4">Main Campus</td>
309+
<td style="border: 1px solid black; padding: 8px;">robot1</td>
310+
<td style="border: 1px solid black; padding: 8px;">1295.96 m</td>
311+
<td style="border: 1px solid black; padding: 8px;">-</td>
312+
<td style="border: 1px solid black; padding: 8px;">-</td>
313+
</tr>
314+
<tr>
315+
<td style="border: 1px solid black; padding: 8px;">robot2</td>
316+
<td style="border: 1px solid black; padding: 8px;">1360.43 m</td>
317+
<td style="border: 1px solid black; padding: 8px;">-</td>
318+
<td style="border: 1px solid black; padding: 8px;">-</td>
319+
</tr>
320+
<tr>
321+
<td style="border: 1px solid black; padding: 8px;">robot3</td>
322+
<td style="border: 1px solid black; padding: 8px;">1816.76 m</td>
323+
<td style="border: 1px solid black; padding: 8px;">-</td>
324+
<td style="border: 1px solid black; padding: 8px;">-</td>
325+
</tr>
326+
<tr>
327+
<td style="border: 1px solid black; padding: 8px;">robot4</td>
328+
<td style="border: 1px solid black; padding: 8px;">2971.38 m</td>
329+
<td style="border: 1px solid black; padding: 8px;">-</td>
330+
<td style="border: 1px solid black; padding: 8px;">-</td>
331+
</tr>
332+
</table>
333+
<p style="text-align: center;"><strong>Table 1.</strong> <em>Table of intra-robot loop closures in different environments</em></p>
334+
</div>
335+
</div> -->
67336

68337
<!-- <div style="text-align: center; margin-top: 20px;">
69338
<img src="/img/cumulti/main_image.png" alt="" style="display: inline-block; margin: 0 10px;" height="600">

0 commit comments

Comments
 (0)