How loco-auv/loco_config works
Purpose and Scope
LoCO is a meta-repository for the LoCO autonomous underwater vehicle (AUV). It packages deployable host configuration, hardware/CAD design sources, fabrication exports, and camera reference material; it does not contain the robot’s ROS packages or application logic.
Operational Entry Points
Device startup is centered on ROS launch wrapper scripts and system services:
• Raspberry Pi: rpi_config_files/ros-start.bash, rpi_config_files/ros-start.service
• NVIDIA TX2: tx2_config_files/ros-start.bash, tx2_config_files/ros-start.service
These are the intended boot-time integration points for the external LoCO software stack. get_pi_ip.sh is a host-discovery utility.
Multi-Computer Robot Network
The repository defines three network roles:
• Vehicle Raspberry Pi configuration: rpi_config_files/50-cloud-init.yaml, rpi_config_files/rpi.routing
• Vehicle TX2/Jetson configuration: tx2_config_files/interfaces, tx2_config_files/tx2.routing
• Operator Control Unit (OCU): ocu_config_files/interfaces, ocu_config_files/ocu.routing
Persistent NIC naming is established independently on each host through rpi_config_files/70-persistent-net.rules, tx2_config_files/70-persistent-net.rules, and ocu_config_files/70-persistent-net.rules. Hosts files provide local name resolution at this boundary.
Vehicle Compute and Device Runtime
The Raspberry Pi and TX2 are separately provisioned runtime nodes. Both include USB filesystem-memory tuning and removable-media mounting services:
• rpi_config_files/usbfs-memory.service, rpi_config_files/mount-usb.service
• tx2_config_files/usbfs-memory.service, tx2_config_files/mount-microsd.service
The Pi also includes boot/display/platform settings in rpi_config_files/config.txt. Startup services execute the ROS wrapper scripts, making systemd the boundary between OS boot and robot software.
Mechanical System Source of Truth
The primary full-system CAD assembly is models/SolidWorks/LoCO.SLDASM. It composes vehicle sections and vendor-derived hardware models, including compute mounting, battery packaging, ballast, camera support, pressure enclosure, and thruster mounting. The enclosure-specific assembly is available at models/LoCO_Shell/LoCO_Shell.SLDASM.
Fabrication Outputs
Manufacturing-ready geometry is separated from editable CAD:
• 3D-printable/exported parts: models/STLs/LoCO_Jetson_Section.STL, models/STLs/LoCO_Battery_Section.STL, models/STLs/LoCO_ThrusterMount.STL
• Laser-cut base patterns: models/LaserCut/MDFBaseLeft.DXF, models/LaserCut/MDFBaseRight.DXF
• Editable sources: models/SolidWorks/LoCO_Jetson_Section.SLDPRT, models/SolidWorks/LoCO_Battery_Section.SLDPRT
Unit conventions are explicit in models/STLs/STL in MILLIMETERS.txt and models/LoCO_Shell/STL in METERS.txt, a material boundary for fabrication workflows.
External Hardware and Documentation
Camera integration targets the BFS-U3-31S4, with vendor specifications stored in camera_reference/BFS-U3-31S4-Datasheet.pdf and camera_reference/BFS-U3-31S4-Technical-Reference.pdf. The CAD inventory also embeds interfaces for Blue Robotics-style enclosure/thruster components and onboard hardware such as Pixhawk, Jetson, Raspberry Pi, batteries, and power distribution.
Licensing Boundary
Software/configuration is GPLv3 (LICENSE_GPLV3); physical designs are Creative Commons Attribution-ShareAlike (LICENSE_SHAREALIKE). Changes to boot/network configuration and changes to fabrication/CAD artifacts should therefore be treated as distinct deliverables and licensing domains.
Main entry points: LoCO.SLDASM Full vehicle assembly · 50-cloud-init.yaml Vehicle Raspberry Pi · rpi_config_files/ros-start.service Raspberry Pi startup · tx2_config_files/ros-start.service TX2 startup
Components 21
Host Runtime
Boot-time integration for external robot software.
- External LoCO software · ROS packages and application logic are outside this repository.
- Raspberry Pi startup · Boot service invokes the ROS startup wrapper.
rpi_config_files/ros-start.service - Pi ROS wrapper
rpi_config_files/ros-start.bash - TX2 startup · Boot service invokes the ROS startup wrapper.
tx2_config_files/ros-start.service - TX2 ROS wrapper
tx2_config_files/ros-start.bash - Pi device services · USB filesystem tuning and removable-media mounting.
rpi_config_files/usbfs-memory.service - TX2 device services · USB filesystem tuning and microSD mounting.
tx2_config_files/usbfs-memory.service - Pi platform settings · Pi boot, display, and platform settings.
rpi_config_files/config.txt
Robot Network
Vehicle and operator network roles.
- Vehicle Raspberry Pi · Cloud-init addressing and vehicle routing.
rpi_config_files/50-cloud-init.yaml - Vehicle TX2 · Interface addressing and vehicle routing.
tx2_config_files/interfaces - Operator Control Unit · Operator interface addressing and routing.
ocu_config_files/interfaces - Persistent NIC naming · Each host independently fixes network interface names.
rpi_config_files/70-persistent-net.rules - Pi host discovery
get_pi_ip.sh
Mechanical & Fabrication
Editable vehicle design and manufacturing exports.
- Full vehicle assembly · Primary system CAD source of truth.
models/SolidWorks/LoCO.SLDASM - Pressure enclosure assembly
models/LoCO_Shell/LoCO_Shell.SLDASM - Editable vehicle sections · Jetson and battery section source parts.
models/SolidWorks/LoCO_Jetson_Section.SLDPRT - 3D-print exports · Jetson section, battery section, and thruster mount.
models/STLs/LoCO_Jetson_Section.STL - Laser-cut base patterns · Left and right MDF base patterns.
models/LaserCut/MDFBaseLeft.DXF
Other components
- BFS-U3-31S4 reference · Camera datasheet and technical reference.
camera_reference/BFS-U3-31S4-Datasheet.pdf - Software/config license · Applies to host configuration and scripts.
LICENSE_GPLV3 - Physical design license · Applies to CAD and fabrication artifacts.
LICENSE_SHAREALIKE
Connections 24
- Raspberry Pi startup → Pi ROS wrapper: executes
- Pi ROS wrapper → External LoCO software: starts
- TX2 startup → TX2 ROS wrapper: executes
- TX2 ROS wrapper → External LoCO software: starts
- Pi platform settings → Raspberry Pi startup: provides boot platform
- Pi device services → Raspberry Pi startup: coexists at OS boot
- TX2 device services → TX2 startup: coexists at OS boot
- Vehicle Raspberry Pi → Raspberry Pi startup: connects runtime host
- Vehicle TX2 → TX2 startup: connects runtime host
- Vehicle Raspberry Pi → Vehicle TX2: vehicle network
- Operator Control Unit → Vehicle Raspberry Pi: operator link
- Operator Control Unit → Vehicle TX2: operator link
- Persistent NIC naming → Vehicle Raspberry Pi: stabilizes interfaces
- Pi host discovery → Vehicle Raspberry Pi: discovers
- Full vehicle assembly → Pressure enclosure assembly: includes enclosure
- Full vehicle assembly → Editable vehicle sections: composes sections
- Editable vehicle sections → 3D-print exports: exported as
- Full vehicle assembly → Laser-cut base patterns: drives base patterns
- BFS-U3-31S4 reference → Full vehicle assembly: informs camera integration
- Software/config license → Raspberry Pi startup: licenses
- Software/config license → TX2 startup: licenses
- Physical design license → Full vehicle assembly: licenses
- Physical design license → 3D-print exports: licenses
- Physical design license → Laser-cut base patterns: licenses