Files
craic/ros2/AGENTS.md
FallenSigh 74396f48a0 fix(craic_localization): tune AMCL params and propagate lidar args across launch files
- Tune AMCL: widen sigma_hit (0.05→0.2), z_hit (0.5→0.9), z_rand, likelihood_max_dist,
  laser_max_range (5.0→8.0) for better convergence on 4x4m field
- Propagate lidar_x/y/z/yaw/intensity/sample_rate/baudrate through bringup,
  localization, and mapping launch files so overrides reach the driver
- Fix default lidar_z (0.0→0.02) in lidar.launch.py
- Change rviz Fixed Frame odom→map to stop map jumping on AMCL corrections
- Fix broken teach_points command in docs/localization.md; add troubleshooting
  entries for AMCL convergence and rf2o drift
- Add ros2/AGENTS.md with ROS workspace build/style guidelines
2026-06-20 14:13:54 +08:00

2.7 KiB

Repository Guidelines

Project Structure & Module Organization

This repository is a ROS 2 workspace. Keep hand-written code under src/; treat top-level build/, install/, and log/ as generated output. Core packages include src/arm_control_msgs for ROS messages/services, src/udp_teleop for arm and vision Python nodes, src/craic_localization for localization/navigation Python nodes, and C++ sensor packages such as src/rf2o_laser_odometry and src/ydlidar_ros2_driver. Launch files live in package launch/, runtime parameters in config/ or params/, and RViz assets in rviz/.

Build, Test, and Development Commands

Use the workspace script for normal builds:

./build.sh
source install/setup.bash

build.sh sources ROS 2 Humble and runs colcon build --symlink-install.

For targeted builds, prefer:

colcon build --packages-select craic_localization udp_teleop
colcon build --packages-select arm_control_msgs --cmake-args -DPython_EXECUTABLE=$CONDA_PREFIX/bin/python

Run nodes with ros2 run, for example:

ros2 run udp_teleop arm_control --ros-args --params-file src/udp_teleop/config/arm_control.yaml

Coding Style & Naming Conventions

Python uses 4-space indentation, snake_case modules, and snake_case console script names such as navigate_to_point. ROS interfaces use PascalCase (MovePose.srv, TCPPose.msg). Launch files should end in .launch.py. Follow existing ROS 2 defaults: concise docstrings, parameter-driven behavior, and package-local config files. C++ packages build with C++14 and warnings enabled (-Wall -Wextra -Wpedantic); keep headers in include/<package>/ and source in src/.

Testing Guidelines

Run package tests before opening a PR:

colcon test --packages-select udp_teleop craic_localization
colcon test-result --verbose

udp_teleop/test/ currently contains ROS linter tests for flake8 and pep257. Add new Python tests under test/ with test_*.py names. For C++ packages, enable BUILD_TESTING-compatible tests when adding nontrivial logic.

Commit & Pull Request Guidelines

Recent history follows Conventional Commits, often with scopes: feat(craic_localization): ..., chore: ..., docs: .... Keep subjects imperative and under one line. PRs should describe affected packages, runtime impact, and exact validation commands. Include screenshots or RViz captures when changing visualization, launch behavior, or operator-facing workflows.

Generated Files & Configuration

Do not commit edits inside generated build/, install/, or log/ directories. Update source files instead, then rebuild. Keep machine-specific IPs, ports, and calibration values in package YAML files under config/ or params/, and document any hardware assumptions in the PR.