How yeyi58095/smart_cane works
This ROS 2 smart-cane project supports a user-to-landmark workflow: start a simulated robot and navigation stack, detect landmarks by combining camera and LiDAR observations, refine candidate positions for navigation, then request travel to a named landmark. Navigation and target-alignment behaviors provide motion guidance; command-velocity interfaces expose direction or direct control. The README also documents alternate bed/sign detectors, landmark visualization, SLAM, and collision guidance. Wiring beyond the sampled launch and node excerpts is shown only where documented; the tree and README support several capabilities whose implementation was not sampled.
Main entry points: goto_landmark.py Go to landmark · amcl_sim.launch.py AMCL bringup · yolo_lidar_landmark.py YOLO LiDAR landmarks · align_to_target.py Target alignment
Components 19
Simulation and Bringup
- Gazebo world
src/smart_cane_sim/smart_cane_sim/launch/sim_world.launch.py - AMCL bringup
src/smart_cane_bringup/smart_cane_bringup/launch/amcl_sim.launch.py - Initial pose publisher
src/smart_cane_bringup/smart_cane_bringup/initialpose_pub.py - SLAM launch
src/smart_cane_nav/smart_cane_nav/launch/nav2_slam.launch.py
Perception and Mapping
- YOLO LiDAR landmarks
src/smart_cane_perception/smart_cane_perception/yolo_lidar_landmark.py - Other detectors
src/smart_cane_perception/smart_cane_perception
Landmark Workflow
- Goal snapper
src/smart_cane_landmarks/smart_cane_landmarks/goal_snapper.py - Landmark positions
- Go to landmark
src/smart_cane_landmarks/smart_cane_landmarks/goto_landmark.py - Landmark visualizer
src/smart_cane_landmarks/smart_cane_landmarks/landmark_visualizer.py
Navigation and Guidance
- Nav2 navigation
src/smart_cane_nav/smart_cane_nav/launch/nav2_autonomy.launch.py - Nav2 guidance launch
src/smart_cane_nav/smart_cane_nav/launch/nav2_guidance.launch.py - Target alignment
src/smart_cane_nav/smart_cane_nav/align_to_target.py - Collision guidance
src/smart_cane_nav/smart_cane_nav/collision_guidance.py
User Interfaces
- Joystick GUI
src/smart_cane_nav/smart_cane_nav/qt_cmd_vel_ui.py - Velocity CLI
src/smart_cane_nav/smart_cane_nav/nav_cmd_vel_ui.py
Other components
- Cane operator
- Nav2 action server
- Velocity topics
Connections 20
- Cane operator → AMCL bringup: starts system
- AMCL bringup → Gazebo world: includes launch
- AMCL bringup → Initial pose publisher: starts publisher
- Initial pose publisher → Velocity topics: publishes initial pose
- Cane operator → SLAM launch: starts SLAM
- Gazebo world → YOLO LiDAR landmarks: provides sensor data
- YOLO LiDAR landmarks → Goal snapper: refines candidates
- YOLO LiDAR landmarks → Landmark positions: writes positions
- Go to landmark → Landmark positions: reads positions
- Cane operator → Go to landmark: names destination
- Go to landmark → Nav2 action server: sends goal
- Go to landmark → Target alignment: enables target alignment
- Target alignment → Velocity topics: publishes alignment velocity
- Nav2 navigation → Velocity topics: publishes motion commands
- Nav2 guidance launch → Target alignment: launches alignment
- Nav2 guidance launch → Velocity topics: routes motion commands
- Cane operator → Joystick GUI: controls robot
- Joystick GUI → Velocity topics: publishes and reads commands
- Velocity topics → Velocity CLI: supplies direction
- Cane operator → Landmark visualizer: views landmarks