legacy_remus_translator
This is a ROS node that acts as a bridge between REMUS VIP and modern ros_acomms
messaging (as well as FDP acoustic
packets).
Getting started
- Have a functioning ROS workspace with at least these packages:
ros_acomms
ros_remus
- Make sure that you have codecs set up in ros_acomms to pass these messages from the vehicle:
-
status
(ros_remus/Status
) -
motherboard
('ros_remus/Motherboard`) -
battery_state
(sensor_msgs/BatteryState
)
-
- If using CCL commands from VIP, make sure that the vehicle modem has
psk.legacy_rxd
set to 1 and is using FDP (psk.mod_hdr_version
= 1) - Set up the UDP modem connection in REMUS VIP with these settings:
- Destination IP address: IP address of the computer running the
legacy_translator_node
- Destination IP Port: same as
local_port
parameter onlegacy_translator_node
- VIP IP Port: same as
remote_port
parameter onlegacy_translator_node
-
NOTE: If running VIP and the legacy translator node on the same computer, you probably need to use different
values for the
local_port
/remote_port
pair, since VIP and the legacy translator can't both bind to the same port on the same IP.
- Destination IP address: IP address of the computer running the
- When using VIP, select Sources -> MODEM/CCL Interface -> Via UDP Modem
- Configure the legacy translator node in the ROS launch file following one of the examples in the
launch
directory - Run the launch file with
roslaunch
How it works
The legacy translator node receives ros_remus
messages via acomms with ros_acomms
. It then extracts data from the
ros_remus messages and uses it to fill in the fields of an MDAT_STATE
CCL message. This CCL message is packed into
a $CARXD
string (as if it came from the acoustic modem) and sent to VIP over the UDP connection.
When sending CCL commands from VIP, the legacy translator emulates the Micromodem NMEA interface and accepts the
$CCTXD
string that VIP sends to the UDP modem socket. It then converts the payload of the $CCTXD
message to an FDP
packet payload. When this is received on the vehicle, the modem generates a $CARXD
message (when psk.legacy_rxd
is 1), which allows the vehicle front-seat computer to process the CCL command as if it arrived via a legacy packet.
FDP ACKs are processed and $CAACK
messages are sent to VIP to indicate when a command has been acknowledged.