From 1121f1ce8fa55d2bc81d96c8ae81d3e11be14b9e Mon Sep 17 00:00:00 2001 From: Adrian Cires Date: Thu, 8 Jan 2026 16:18:56 -0500 Subject: [PATCH 01/11] =?UTF-8?q?**Package=20Dependency=20Fixes:**=20-=20a?= =?UTF-8?q?thena=5Fmap:=20Fix=20OpenCV=20dependency=20(opencv4=20=E2=86=92?= =?UTF-8?q?=20libopencv-dev)=20-=20athena=5Fplanner:=20Fix=20Nav2=20planne?= =?UTF-8?q?r=20dependency=20(nav2=5Fplanner=5Fserver=20=E2=86=92=20nav2=5F?= =?UTF-8?q?planner)=20-=20obstacle=5Fdetection:=20Remove=20unused=20zed=5F?= =?UTF-8?q?interfaces=20dependency,=20fix=20PCL=20dependency=20(libpcl-dev?= =?UTF-8?q?=20=E2=86=92=20libpcl-all-dev)=20-=20localizer:=20Add=20CMAKE?= =?UTF-8?q?=5FPREFIX=5FPATH=20for=20ROS2=20GTSAM=20installation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- src/subsystems/navigation/athena_map/package.xml | 2 +- src/subsystems/navigation/athena_planner/package.xml | 2 +- src/subsystems/navigation/localizer/CMakeLists.txt | 4 ++++ src/subsystems/navigation/obstacle_detection/package.xml | 5 ++--- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 8acb936..9fdd361 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Your PR will be reviewed by your lead, and once approved, it will be merged into 2. **Install required dependencies** ```bash -rosdep install --from-paths src/athena-code -y --ignore-src +rosdep install --from-paths src y --ignore-src ``` 3. **Build the workspace** @@ -78,4 +78,4 @@ _Virtual:_ 5. **Launch a subsystem!** ```bash ./src/athena-code/src/tools/scripts/_launch.sh -``` \ No newline at end of file +``` diff --git a/src/subsystems/navigation/athena_map/package.xml b/src/subsystems/navigation/athena_map/package.xml index 3558ad3..ac79be2 100644 --- a/src/subsystems/navigation/athena_map/package.xml +++ b/src/subsystems/navigation/athena_map/package.xml @@ -12,7 +12,7 @@ nav_msgs sensor_msgs cv_bridge - opencv4 + libopencv-dev ament_lint_auto ament_lint_common diff --git a/src/subsystems/navigation/athena_planner/package.xml b/src/subsystems/navigation/athena_planner/package.xml index fcf5dd6..cd1cb09 100644 --- a/src/subsystems/navigation/athena_planner/package.xml +++ b/src/subsystems/navigation/athena_planner/package.xml @@ -18,7 +18,7 @@ tf2_ros tf2_geometry_msgs - nav2_planner_server + nav2_planner nav2_costmap_2d nav2_lifecycle_manager nav2_smac_planner diff --git a/src/subsystems/navigation/localizer/CMakeLists.txt b/src/subsystems/navigation/localizer/CMakeLists.txt index 726abd9..0ab204d 100644 --- a/src/subsystems/navigation/localizer/CMakeLists.txt +++ b/src/subsystems/navigation/localizer/CMakeLists.txt @@ -6,6 +6,10 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") endif() find_package(ament_cmake REQUIRED) + +# Add ROS2 GTSAM path to CMAKE_PREFIX_PATH +list(APPEND CMAKE_PREFIX_PATH "/opt/ros/humble") + find_package(GTSAM REQUIRED) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "/usr/share/cmake/geographiclib/") find_package(GeographicLib REQUIRED) diff --git a/src/subsystems/navigation/obstacle_detection/package.xml b/src/subsystems/navigation/obstacle_detection/package.xml index 8b292a1..ffb3e38 100644 --- a/src/subsystems/navigation/obstacle_detection/package.xml +++ b/src/subsystems/navigation/obstacle_detection/package.xml @@ -18,12 +18,11 @@ tf2_sensor_msgs tf2_eigen pcl_conversions - zed_interfaces zed_msgs - libpcl-dev - libpcl-dev + libpcl-all-dev + libpcl-all-dev eigen3_cmake_module From 938512994780eb2df90b90c4deef2359f1f1504f Mon Sep 17 00:00:00 2001 From: Adrian Cires Date: Fri, 16 Jan 2026 18:17:09 -0500 Subject: [PATCH 02/11] removed unused launch argument in gz_sim.launch.py --- src/simulation/launch/bringup.launch.py | 1 - src/simulation/launch/gz_sim.launch.py | 3 --- 2 files changed, 4 deletions(-) diff --git a/src/simulation/launch/bringup.launch.py b/src/simulation/launch/bringup.launch.py index 198f2c5..0065c92 100644 --- a/src/simulation/launch/bringup.launch.py +++ b/src/simulation/launch/bringup.launch.py @@ -59,7 +59,6 @@ def generate_launch_description(): gazebo = IncludeLaunchDescription( PythonLaunchDescriptionSource([gazebo_launch]), launch_arguments=[ - ('use_sim_time', LaunchConfiguration('use_sim_time')), ('world', LaunchConfiguration('world')), ] ) diff --git a/src/simulation/launch/gz_sim.launch.py b/src/simulation/launch/gz_sim.launch.py index 71f0707..744330a 100644 --- a/src/simulation/launch/gz_sim.launch.py +++ b/src/simulation/launch/gz_sim.launch.py @@ -7,9 +7,6 @@ from launch.substitutions import LaunchConfiguration, PathJoinSubstitution ARGUMENTS = [ - DeclareLaunchArgument('use_sim_time', default_value='true', - choices=['true', 'false'], - description='use_sim_time'), DeclareLaunchArgument('world', default_value='empty.sdf', description='Gazebo world file'), ] From f8dfc37cc9a04ddbd8461cdf2c96667fa7afbb84 Mon Sep 17 00:00:00 2001 From: Adrian Cires Date: Fri, 16 Jan 2026 18:41:57 -0500 Subject: [PATCH 03/11] [comments] Clarified world file origin --- src/simulation/launch/bringup.launch.py | 2 +- src/simulation/launch/gz_sim.launch.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/simulation/launch/bringup.launch.py b/src/simulation/launch/bringup.launch.py index 0065c92..b19be77 100644 --- a/src/simulation/launch/bringup.launch.py +++ b/src/simulation/launch/bringup.launch.py @@ -59,7 +59,7 @@ def generate_launch_description(): gazebo = IncludeLaunchDescription( PythonLaunchDescriptionSource([gazebo_launch]), launch_arguments=[ - ('world', LaunchConfiguration('world')), + ('world', LaunchConfiguration('world')), # World file taken from description/worlds/ ] ) diff --git a/src/simulation/launch/gz_sim.launch.py b/src/simulation/launch/gz_sim.launch.py index 744330a..575a22a 100644 --- a/src/simulation/launch/gz_sim.launch.py +++ b/src/simulation/launch/gz_sim.launch.py @@ -34,7 +34,7 @@ def generate_launch_description(): launch_arguments=[ ('gz_args', [world_path, ' -r', - ' -v 4'] + ' -v 4'] # Verbosity level, 0=errors only, 4=debug ) ] ) From 2d428de2563794ad33937040ed52e13e73f15636 Mon Sep 17 00:00:00 2001 From: Adrian Cires Date: Fri, 16 Jan 2026 18:46:19 -0500 Subject: [PATCH 04/11] updated spawn.launch.py to reflect convention --- src/simulation/launch/spawn.launch.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/simulation/launch/spawn.launch.py b/src/simulation/launch/spawn.launch.py index 4b5bdf0..5584db6 100644 --- a/src/simulation/launch/spawn.launch.py +++ b/src/simulation/launch/spawn.launch.py @@ -20,10 +20,10 @@ ] def generate_launch_description(): - pkg_share = get_package_share_directory('description') + pkg_description = get_package_share_directory('description') - urdf_file = os.path.join(pkg_share, 'urdf', 'athena_drive.urdf.xacro') - controllers_file = os.path.join(pkg_share, 'config', 'athena_drive_sim_controllers.yaml') + urdf_file = os.path.join(pkg_description, 'urdf', 'athena_drive.urdf.xacro') + controllers_file = os.path.join(pkg_description, 'config', 'athena_drive_sim_controllers.yaml') namespace = LaunchConfiguration('namespace') From ff061143de6dd608e04c74bb90a78c0215a903bc Mon Sep 17 00:00:00 2001 From: Adrian Cires Date: Fri, 16 Jan 2026 18:52:20 -0500 Subject: [PATCH 05/11] Updated rear wheel joint names --- src/description/config/athena_drive_sim_controllers.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/description/config/athena_drive_sim_controllers.yaml b/src/description/config/athena_drive_sim_controllers.yaml index 3656205..00bd01c 100644 --- a/src/description/config/athena_drive_sim_controllers.yaml +++ b/src/description/config/athena_drive_sim_controllers.yaml @@ -15,7 +15,7 @@ controller_manager: ackermann_steering_controller: ros__parameters: # Joint names - rear_wheels_names: ["propulsion_fl_joint", "propulsion_fr_joint"] + rear_wheels_names: ["propulsion_bl_joint", "propulsion_br_joint"] front_wheels_names: ["steer_fl_joint", "steer_fr_joint"] # Vehicle dimensions From e1a799140b80625dbb4a58c62faf61122f80bfb4 Mon Sep 17 00:00:00 2001 From: Adrian Cires Date: Fri, 16 Jan 2026 19:00:20 -0500 Subject: [PATCH 06/11] Changed rover name from 'rover' to 'athena' --- src/simulation/launch/spawn.launch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/simulation/launch/spawn.launch.py b/src/simulation/launch/spawn.launch.py index 5584db6..a874456 100644 --- a/src/simulation/launch/spawn.launch.py +++ b/src/simulation/launch/spawn.launch.py @@ -27,7 +27,7 @@ def generate_launch_description(): namespace = LaunchConfiguration('namespace') - robot_name = 'rover' + robot_name = 'athena' robot_description_content = Command([ 'xacro ', urdf_file, From f5f8b847f7b692e4edc2d095a1b813daa5235af3 Mon Sep 17 00:00:00 2001 From: Adrian Cires Date: Fri, 16 Jan 2026 19:13:44 -0500 Subject: [PATCH 07/11] Added missing 'world_name' to ros_gz_sim create node params --- src/simulation/launch/spawn.launch.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/simulation/launch/spawn.launch.py b/src/simulation/launch/spawn.launch.py index a874456..cf45df6 100644 --- a/src/simulation/launch/spawn.launch.py +++ b/src/simulation/launch/spawn.launch.py @@ -16,6 +16,8 @@ description='use_sim_time'), DeclareLaunchArgument('namespace', default_value='', description='Robot namespace'), + DeclareLaunchArgument('world_name', default_value='', + description='World name'), ] @@ -57,6 +59,7 @@ def generate_launch_description(): package='ros_gz_sim', executable='create', arguments=['-name', robot_name, + '-world', LaunchConfiguration('world_name'), '-x', '0.0', '-y', '0.0', '-z', '3.0', From 3433fc6dfa9c868b8909eaa740dcf6ce5282d04b Mon Sep 17 00:00:00 2001 From: Adrian Cires Date: Fri, 16 Jan 2026 19:31:59 -0500 Subject: [PATCH 08/11] Changed IMU topic to unidirection (gazebo -> ros) from bidirectional --- src/simulation/launch/bridge.launch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/simulation/launch/bridge.launch.py b/src/simulation/launch/bridge.launch.py index 60d5040..c3ff1ce 100644 --- a/src/simulation/launch/bridge.launch.py +++ b/src/simulation/launch/bridge.launch.py @@ -9,7 +9,7 @@ def generate_launch_description(): name='imu_bridge', output='screen', arguments=[ - '/imu@sensor_msgs/msg/Imu@gz.msgs.IMU', + '/imu@sensor_msgs/msg/Imu[gz.msgs.IMU', ], ), From 1dd7b46a971dc67e32f18afaa5fab4abe847bd9d Mon Sep 17 00:00:00 2001 From: Adrian Cires Date: Fri, 16 Jan 2026 20:13:32 -0500 Subject: [PATCH 09/11] Added velocity command interface to back propulsion joints --- .../urdf/athena_drive/athena_drive_macro.ros2_control.xacro | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/description/urdf/athena_drive/athena_drive_macro.ros2_control.xacro b/src/description/urdf/athena_drive/athena_drive_macro.ros2_control.xacro index 0779af7..8c891cc 100644 --- a/src/description/urdf/athena_drive/athena_drive_macro.ros2_control.xacro +++ b/src/description/urdf/athena_drive/athena_drive_macro.ros2_control.xacro @@ -111,6 +111,7 @@ + 0.0 @@ -119,6 +120,7 @@ + 0.0 From 0e8012029dc1397051d4e59840db0b92313e4cbc Mon Sep 17 00:00:00 2001 From: Adrian Cires Date: Fri, 16 Jan 2026 20:30:20 -0500 Subject: [PATCH 10/11] Added simulation README.md for git lfs issue --- src/simulation/README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/simulation/README.md b/src/simulation/README.md index e69de29..2409dd9 100644 --- a/src/simulation/README.md +++ b/src/simulation/README.md @@ -0,0 +1,18 @@ +# simulation + +You may run into issues with a missing terrain.dae file. The issue is that the `terrain.dae` file is stored in **Git LFS** (Large File Storage), but hasn't been downloaded. To fix this, do the following: + +1. Install git-lfs if not already installed +```bash +sudo apt install git-lfs +``` + +2. Initialize git-lfs in your local repo +```bash +git lfs install +``` + +3. Pull the actual LFS files +```bash +git lfs pull +``` \ No newline at end of file From 8886c444e72c390eb21142accb112e633938e5bf Mon Sep 17 00:00:00 2001 From: Adrian Cires Date: Fri, 16 Jan 2026 21:53:41 -0500 Subject: [PATCH 11/11] Added common issue and solution to simulation README.md --- src/simulation/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/simulation/README.md b/src/simulation/README.md index 2409dd9..7d4c150 100644 --- a/src/simulation/README.md +++ b/src/simulation/README.md @@ -1,5 +1,9 @@ # simulation +## Common Issues + +### Missing terrain.dae file + You may run into issues with a missing terrain.dae file. The issue is that the `terrain.dae` file is stored in **Git LFS** (Large File Storage), but hasn't been downloaded. To fix this, do the following: 1. Install git-lfs if not already installed @@ -15,4 +19,15 @@ git lfs install 3. Pull the actual LFS files ```bash git lfs pull +``` + +### Ground truth TF publisher not found + +If you get an error like `executable 'ground_truth_tf_publisher.py' not found on the libexec directory` when launching with `publish_ground_truth_tf:=true`, the script needs executable permissions. + +Fix it by running: +```bash +chmod +x src/simulation/scripts/ground_truth_tf_publisher.py +colcon build --packages-select simulation +source install/setup.bash ``` \ No newline at end of file