ROS 2 Lyrical-Dave Started Successfully For The First Time Today!

Bad enough to upgrade the operating system, and the ROS version, and change his name (from Kilted-Dave to Lyrical-Dave), I changed the GoPiGo3 API install from my “Custom GoPiGo3 API Install” to the new official Modular Robotics GoPiGo3 API install “Option A” (in a virtual environment).

That last one has really taken some changes all around. ROS folks have traditionally ignored the Python folks’ standard of installing to virtual environments, so Dave really had to journey down some new paths ($PYTHONPATH).

Right now, my GoPiGo3 ROS 2 robot “Dave” has successfully started his latest re-incarnation as “Lyrical-Dave” and is playing quietly near his dock at 10.6 volts. When the battery drops below 10.1 volts Dave will hopefully decide to dock to recharge his battery.

I’m on the edge of my seat in joy and anticipation…

Lyrical-Dave’s first successful start of the new “life”:

(gopigo3) ubuntu@U26LDave:~/LyricalDave/ros2ws$ ./start_LyricalDave.sh 
sourced /opt/ros/lyrical setup.bash
sourced /LyricalDave/ros2ws/install/setup.bash

*** Start ROS2 GoPiGo3 node
*** ros2 run ros2_gopigo3_node gopigo3_node &
[INFO] [1780426016.941067184] [gopigo3_node]: ros2_gopigo3_node: created main loop callback at 30 Hz
==================================
GoPiGo3 info:
Manufacturer    :  Dexter Industries
Board           :  GoPiGo3
Serial Number   :  56ECD67E5152415447202020FF192614
Hardware version:  3.x.x
Firmware version:  1.0.0

GoPiGo3 Configuration:
(Using default values or ~/Dexter/gpg3_config.json if present)
WHEEL_DIAMETER: 66.500 mm
WHEEL_BASE_WIDTH: 117.000 mm
ENCODER_TICKS_PER_ROTATION: 16 (per one motor revolution)
MOTOR_GEAR_RATIO: 120 (motor revolutions per wheel revolution)
MOTOR_TICKS_PER_DEGREE: 5.33 (of wheel rotation)


Node Version: 0.7
Rate: 30 hz
Servo1 PulseWidths L: 2425 R: 575 us
Servo1 Total Sector Width: 3.141592653589793 radians
Servo2 PulseWidths L: 2425 R: 575 us
Servo2 Total Sector Width: 3.14 radians


Turbo Bias Correction: 0.010 m/s
Bias Threshold Speed: 0.200 m/s
==================================

*** Starting Robot_State and Joint_State Publishers
*** with URDF file: ros2_gopigo3_node/kilteddave2.urdf
[INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2026-06-02-14-46-59-713957-U26LDave-291732
[INFO] [launch]: Default logging verbosity is set to INFO

***** launch: urdf_file - /home/ubuntu/LyricalDave/ros2ws/install/ros2_gopigo3_node/share/ros2_gopigo3_node/kilteddave.urdf
[INFO] [robot_state_publisher-1]: process started with pid [291739]
[INFO] [joint_state_publisher-2]: process started with pid [291740]
[robot_state_publisher-1] [INFO] [1780426020.218761994] [robot_state_publisher]: Robot initialized
[joint_state_publisher-2] [INFO] [1780426022.028714544] [joint_state_publisher]: Got description, configuring robot
[joint_state_publisher-2] [INFO] [1780426022.056060812] [joint_state_publisher]: Got description, configuring robot

*** Start Docking Node
*** ros2 run dave docking_node & 

*** Starting Odometer Node to log movements
*** ros2 run ros2_gopigo3_node odometer

*** Start SNES gamepad node
*** ros2 launch teleop_twist_joy teleop-launch.py joy_config:="snes_slow" & 

*** SLEEPING 30 before starting battery node
[INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2026-06-02-14-47-19-813477-U26LDave-291879
[INFO] [launch]: Default logging verbosity is set to INFO
[WARNING] [launch_ros.actions.node]: Parameter file path is not a file: /opt/ros/lyrical/share/teleop_twist_joy/config/snes_slow.config.yaml
[WARNING] [launch_ros.actions.node]: Parameter file path is not a file: /opt/ros/lyrical/share/teleop_twist_joy/config/snes_slow.config.yaml
[INFO] [joy_node-1]: process started with pid [291886]
[INFO] [teleop_node-2]: process started with pid [291887]
[teleop_node-2] [INFO] [1780426040.297781768] [TeleopTwistJoy]: Teleop enable button 5.
[teleop_node-2] [INFO] [1780426040.297988545] [TeleopTwistJoy]: Linear axis x on 5 at scale 0.500000.
[teleop_node-2] [INFO] [1780426040.298022156] [TeleopTwistJoy]: Angular axis yaw on 2 at scale 0.500000.
[joy_node-1] [INFO] [1780426040.994665246] [joy_node]: No haptic (rumble) available, skipping initialization
[joy_node-1] [INFO] [1780426040.994957745] [joy_node]: Opened joystick: Controller.  deadzone: 0.300000

*** Starting Battery Node
*** ros2 run dave battery_node &

*** Start Dave Node
*** ros2 run dave dave_node & 
2026-06-02 14:47:56 ---- LyricalDave node started - Undock:-100 mA  Ready:10.3v  Dock:10.1v

********** Humble Dave 2 ROS2 GoPiGo3 Status ***********
Tuesday 06/02/26
 14:47:58 up 2 days,  1:48,  2 users,  load average: 1.67, 1.24, 0.90
temp=53.5'C
frequency(48)=1300324224
throttled=0x0
GoPiGo3 Battery Voltage: 11.2 volts

               total        used        free      shared  buff/cache   available
Mem:           3.7Gi       1.4Gi        94Mi        10Mi       2.4Gi       2.3Gi
Swap:          2.0Gi        60Ki       2.0Gi


ROS 2 NODES
ubuntu    291682  291663  2 14:46 pts/1    00:00:01 /usr/bin/python3 /opt/ros/lyrical/bin/ros2 run ros2_gopigo3_node gopigo3_node
ubuntu    291778  291663  2 14:47 pts/1    00:00:01 /usr/bin/python3 /opt/ros/lyrical/bin/ros2 run dave docking_node
ubuntu    291829  291663  2 14:47 pts/1    00:00:01 /usr/bin/python3 /opt/ros/lyrical/bin/ros2 run ros2_gopigo3_node odometer
ubuntu    291987  291663 13 14:47 pts/1    00:00:01 /usr/bin/python3 /opt/ros/lyrical/bin/ros2 run dave battery_node
ubuntu    292019  291663 26 14:47 pts/1    00:00:01 /usr/bin/python3 /opt/ros/lyrical/bin/ros2 run dave dave_node
ubuntu    291732  291663  3 14:46 pts/1    00:00:02 /usr/bin/python3 /opt/ros/lyrical/bin/ros2 launch ros2_gopigo3_node ros2_dave_state_and_joint.launch.py
ubuntu    291879  291663  5 14:47 pts/1    00:00:02 /usr/bin/python3 /opt/ros/lyrical/bin/ros2 launch teleop_twist_joy teleop-launch.py joy_config:=snes_slow
ubuntu    291739  291732  1 14:46 pts/1    00:00:00 /opt/ros/lyrical/lib/robot_state_publisher/robot_state_publisher /home/ubuntu/LyricalDave/ros2ws/install/ros2_gopigo3_node/share/ros2_gopigo3_node/kilteddave.urdf --ros-args -r __node:=robot_state_publisher --params-file /tmp/launch_params_jq8mg25c
ubuntu    291740  291732  7 14:46 pts/1    00:00:04 /usr/bin/python3 /opt/ros/lyrical/lib/joint_state_publisher/joint_state_publisher /home/ubuntu/LyricalDave/ros2ws/install/ros2_gopigo3_node/share/ros2_gopigo3_node/kilteddave.urdf --ros-args -r __node:=joint_state_publisher



*** start_LyricalDave.sh COMPLETE

I see a new issue: the ros2_gopigo3_node has not fully “groked” the new GoPiGo3 API install…still looking in the old location for the gpg3_config.json for some reason.