SPROUT ROS
Source: SPROUT_Design/Code/sprout_ros
ROS 2 stack for SPROUT. Main installation instructions live in the Jetson Bootstrap guide; this page summarizes the package layout.
Table of contents
Package layout
The sprout_ros package (ament_cmake, ROS 2) is organized as follows:
| Path | Contents |
|---|---|
arduino/vine_control |
vine_control_uno_rev3 Arduino sketch that runs on the Uno Rev3 and talks to the shield hardware |
launch/system_bringup.py |
Top-level launch file that brings up the Fort controller, Arduino interface, and LCD screen nodes |
msg/ |
Command.msg and State.msg message definitions |
scripts/ |
ROS 2 node implementations (controller drivers, vine interface, display, camera) |
srv/ |
PressureSet.srv service definition |
resource/ |
systemd service unit for auto-starting the stack on boot |
Messages and services
Command.msg — teleop command sent to the vine robot driver:
bool toggle_retract
bool grow_speed_inc
bool grow_speed_dec
bool chamber_inc
bool chamber_dec
bool stop_grow
bool estop
float32 steer_ud
float32 steer_lr
State.msg — robot state feedback (pressure sensor and actuator values):
float32 cp_s
float32 a1_s
float32 a2_s
float32 a3_s
float32 cp_a
float32 a1_a
float32 a2_a
float32 a3_a
float32 d_s
float32 d_c
float32 c_m
float32 a_m
PressureSet.srv — request/response for setting a chamber/actuator pressure target:
float32 chamber_val
float32 actuator_val
---
bool success
string message
Nodes
| Script | Description |
|---|---|
fort_controller.py |
Reads the Fort Robotics Wireless Controller (FRWC) HID device directly and publishes sensor_msgs/Joy |
fort_scm_controller.py |
Publishes Joy messages using the fort_scm SCM protocol library for the Fort controller |
joy_vine_interface.py |
Bridges Joy messages to the vine robot’s Arduino over serial, publishing sprout_ros/State |
fort_vine_interface.py |
Variant of the vine interface driver that also exposes the PressureSet service |
screen.py |
Drives the onboard status LCD from sprout_ros/State |
Bring-up
launch/system_bringup.py starts the Fort controller driver, the Arduino/vine interface node, and the LCD screen node together:
Node(package='sprout_ros', executable='fort_scm_controller.py', name='fort_driver', output='screen'),
Node(package='sprout_ros', executable='fort_vine_interface.py', name='jetson_arduino', output='screen'),
Node(package='sprout_ros', executable='screen.py', name='jetson_screen', output='screen'),
Arduino firmware
The vine_control sketch (arduino/vine_control/vine_control/vine_control_uno_rev3) runs on the Arduino Uno Rev3 mounted on the custom shield and is flashed following the Jetson Bootstrap guide.