I checked JPL's Horizons with the following setup. It looks like Juno was Galilean-agnostic but Galileo had some definite close encounters, especially with Io.
Gravity has no specific range, it just falls of as $1/r^2$ so it definitely had a significant interaction with Io but whether it can classified as an assist or just an effect will need further investigation, but I think whatever effect there was must have been extremely small compared to all the velocity gained by falling into Jupiter's huge gravity well.
These spacecraft were "flying fuel tanks", mostly because of the huge deceleration necessary to fall into orbits around these massive bodies to compensate the gravitational acceleration.
above: Galileo capture at Jupiter, below: same for Juno
note: "relative speed" is really the rate of change of range (distance)
Io Europa Ganymede Callisto
------- ------- --------- ---------
Juno 348,720 675,054 1,022,210 1,897,202
Galileo 2,719 34,560 1,191,685 792,388
import numpy as np
import matplotlib.pyplot as plt
names = 'Io', 'Europa', 'Ganymede', 'Callisto'
datas = []
for name in names:
fname = 'Juno ' + name + ' horizons_results.txt'
with open(fname, 'r') as infile:
lines = infile.readlines()
print(len(lines))
a = [i for (i, line) in enumerate(lines) if 'SOE' in line][0]
b = [i for (i, line) in enumerate(lines) if 'EOE' in line][0]
lines = lines[a+1: b]
data = [[float(x) for x in line.split(',')[-3:-1]] for line in lines]
datas.append(data)
datas = np.swapaxes(np.array(datas), 2, 1)
print(datas.shape)
fig, (axr, axv) = plt.subplots(2, 1, figsize=[7, 7])
for (r, v), name in zip(datas, names):
t = np.linspace(0, 2, len(r))
axr.plot(t, r*1E-06, label=name)
axv.plot(t, v, label=name)
print('Juno closest to ', name, np.round(r.min(), 1), ' km')
axr.set_ylabel('distance (million km)')
axv.set_ylabel('relative speed (km/sec)')
axv.set_xlabel('time since 2016-Jul-04 00:00 (days)')
axr.legend()
axv.legend()
axr.set_ylim(0, None)
axv.plot(t, np.zeros_like(t), '-k', linewidth=0.5)
plt.show()
datas = []
for name in names:
fname = 'Galileo ' + name + ' horizons_results.txt'
with open(fname, 'r') as infile:
lines = infile.readlines()
print(len(lines))
a = [i for (i, line) in enumerate(lines) if 'SOE' in line][0]
b = [i for (i, line) in enumerate(lines) if 'EOE' in line][0]
lines = lines[a+1: b]
data = [[float(x) for x in line.split(',')[-3:-1]] for line in lines]
datas.append(data)
datas = np.swapaxes(np.array(datas), 2, 1)
print(datas.shape)
fig, (axr, axv) = plt.subplots(2, 1, figsize=[7, 7])
for (r, v), name in zip(datas, names):
t = np.linspace(0, 2, len(r))
axr.plot(t, r*1E-06, label=name)
axv.plot(t, v, label=name)
print('Galileo closest to ', name, np.round(r.min(), 1), ' km')
axr.set_ylabel('distance (million km)')
axv.set_ylabel('relative speed (km/sec)')
axv.set_xlabel('time since 1995-Dec-06 12:00 (days)')
axr.legend()
axv.legend()
axr.set_ylim(0, None)
axv.plot(t, np.zeros_like(t), '-k', linewidth=0.5)
plt.show()
From Cassini horizons_results.txt header, in response to comments
UPDATED with final trajectory prediction prior to atmospheric entry and
end of mission. Schedule of events for final day:
2017-Sep-15
Event time at Saturn Signal receipt time at Earth
5:08 UTC (10:08 pm PDT - Sept. 14)
High above Saturn, Cassini crosses the orbital distance of Enceladus
for the last time
7:14 UTC (12:14 am PDT) 8:37 UTC (1:37 am PDT)
Spacecraft begins a 5-minute roll to point instrument (INMS) that will
sample Saturn's atmosphere and reconfigures systems for real-time data
transmission at 27 kilobits per second (3.4 kilobytes per second).
Final, real-time relay of data begins
7:22 UTC (12:22 am PDT) High above Saturn, Cassini crosses the orbital distance of the F ring
(outermost of the main rings) for the last time
10:31 UTC (3:31 am PDT) 11:54 UTC (4:54 am PDT)
Atmospheric entry begins; thrusters firing at 10% of capacity
10:32 UTC (3:32 am PDT) 11:55 UTC (4:55 am PDT)
Thrusters at 100% of capacity; high-gain antenna begins to point away
from Earth, leading to loss of signal.