Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ROS reference

Launch files

Launch fileRuns onStarts
controller_node topside_combined_launch.pyTopsidejoy_linux_node (20 Hz autorepeat), controller_node
controller_node jetson_combined_launch.pyJetsonTwo DWE cameras, drivetrain_node
controller_node auxiliary_control_launch.pyJetsonjoy_linux_node, auxiliary_control
sensor_bringup all_sensors.launch.pyJetsonEverything below, plus a rosbag
controller_node jetson_testing_launch.pyJetsonEverything in jetson_combined_launch.py plus bar02_pub, stabilization_pub, ph_pub and the Foxglove bridge

jetson_combined_launch.py takes thruster_port (default /dev/ttyACM1). Pass a /dev/serial/by-id/ path, since ttyACM numbers change with USB order.

all_sensors.launch.py

Starts the serial JSON publisher, the dual-stream camera, bar02_pub, the ADS1115 water-quality publisher, stabilization_pub, and drivetrain_node. It also records a bag with ros2 bag record -a.

ArgumentDefaultMeaning
serial_port, serial_baud, serial_timeout/dev/ttyACM0, 115200, 1.0Sensor Pico serial link
thruster_port/dev/ttyACM1Thruster Pico
camera_device0Video device index for dual_stream_camera
enable_ads1115_water_qualitytrueRun the ADS1115 publisher
ads1115_i2c_address72 (0x48)ADC address, as a decimal integer
ads1115_gain, ads1115_sample_period1.0, 0.5ADC gain, seconds between samples
tds_channel, turbidity_channel, ph_channel0, 1, 2ADC input for each probe
enable_sonarfalseAlso launch sonoptix_sonar echo.launch.py
enable_foxglovefalseAlso launch the Foxglove bridge
bag_output~/rosbags/leviathan_<timestamp>Bag directory

The bag records every topic, including raw camera images, so it grows fast. Check free disk space on the Jetson before a long run, and delete old bags you don’t need.

Topics

TopicTypePublisherUsed by
joysensor_msgs/Joyjoy_linux_nodecontroller_node, auxiliary_control
twistgeometry_msgs/Twistcontroller_nodedrivetrain_node, stabilization_pub
clawgeometry_msgs/Pointcontroller_nodeNothing by default
stabilization_togglestd_msgs/Boolcontroller_nodestabilization_pub
stabilizationgeometry_msgs/Twiststabilization_pubdrivetrain_node
stabilization_statusstd_msgs/Int32stabilization_pub
bar02/depthstd_msgs/Float32bar02_pubstabilization_pub
bar02/tempstd_msgs/Float32bar02_pub
imusensor_msgs/Imuimu_pub
InternalTempDatastd_msgs/Int32imu_pub
pHstd_msgs/Float32ph_pub
Image, Image2sensor_msgs/ImageDWE_exploreHD_pub, DWE_exploreHD_pub2
/camera/image_rawsensor_msgs/Imagedual_stream_camera
/camera/image_low/compressedsensor_msgs/CompressedImagedual_stream_camera (640x480, 10 fps)
/sensors/serialleviathan_sensor_msgs/SerialReadingserial_json_publisher
/sensors/water_quality/voltagesleviathan_sensor_msgs/WaterQualityVoltagesads1115_water_quality_publisher

WaterQualityVoltages carries tds_voltage, turbidity_voltage and ph_voltage (float32), plus the matching _raw ADC counts (int32). SerialReading carries the raw line and its parsed JSON: numeric_keys/numeric_values, string_keys/string_values, parse_ok and error.

Network

  • The Jetson Orin Nano’s address is 10.50.2.103 (ssh ubuntu@10.50.2.103). Confirm it before a run, since it can change.
  • The laptop and Jetson talk over the tether network. ROS 2 discovery needs both on the same subnet, and the topside container uses host networking.
  • To view data, run the Foxglove bridge on the Jetson (it was faster there) and connect with Foxglove Studio from the laptop.