How loorays/looraysbot works
looraysBot is a distributed ROS mobile-robot system: MCU firmware interfaces with the chassis and sensors, forwards telemetry and accepts control; ROS provides robot processing and navigation; operators use a mobile app or desktop GUI. The README documents the major ROS2 capabilities and the overall UDP-based architecture. Source excerpts confirm MCU initialization and telemetry/control behavior, but do not establish detailed wiring among ROS packages or between the app and robot, so those links are documented at the system level rather than inferred from names.
Main entry points: main.c Base firmware · WEBSOCKET_CLIENT.c WebSocket telemetry · looraysbot_navgation SLAM and navigation · UDP2ROS_LD.h Lidar forwarding
Components 20
Embedded firmware
- Base firmware
looraysBotMcu/base_esp32s3/main/main.c - Chassis sensors
looraysBotMcu/base_esp32s3/components/ICM42670P/ICM42670P.c - PID motor control
looraysBotMcu/base_esp32s3/components/PID/PID.h - Lidar forwarding
looraysBotMcu/base_esp32s3/components/UDP2ROS_LD/UDP2ROS_LD.h - Status UDP
looraysBotMcu/base_esp32s3/components/UDP2ROS_STATUS/UDP2ROS_STATUS.h - WebSocket telemetry
looraysBotMcu/base_esp32s3/components/WEBSOCKET_CLIENT/WEBSOCKET_CLIENT.c
ROS processing
- UDP communications
looraysBotRos2/src/looraysbot_comm/src/comm_node.cpp - Lidar driver
looraysBotRos2/src/looraysbot_ldlidar/src/ld14pNode.cpp - IMU filter
looraysBotRos2/src/imu_filter_madgwick/src/imu_filter_ros.cpp - State estimation
looraysBotRos2/src/robot_localization-humble-devel/src/ros_filter.cpp - SLAM and navigation
looraysBotRos2/src/looraysbot_navgation - Vision and gestures
looraysBotRos2/src/looraysbot_video/looraysbot_video/gesture.py - ROS launch setup
looraysBotRos2/src/looraysbot_bringup/launch/looraysbot_base.launch.py - ROS1 compatibility
looraysbotRos1/src/looraysbot_comm/src/comm_node.cpp
Operator interfaces
- Mobile controls
looraysBotApp/src/App.tsx - Desktop dashboard
looraysBotGui/src/looraysBot_Ui/src/main.cpp - Embedded RViz
looraysBotGui/src/looraysBot_Ui/include/ros2guirviz.h
Camera subsystem
- Camera capture
looraysBotMcu/camera_esp32/components/ESP32_CAM/ESP32_CAM.c - Camera UDP
looraysBotMcu/camera_esp32/components/UDP_CAM/UDP_CAM.c
Other components
- Robot operator
Connections 20
- Base firmware → Chassis sensors: initializes
looraysBotMcu/base_esp32s3/main/main.c - Base firmware → PID motor control: initializes
looraysBotMcu/base_esp32s3/main/main.c - Base firmware → Lidar forwarding: starts tasks
looraysBotMcu/base_esp32s3/main/main.c - Base firmware → Status UDP: starts tasks
looraysBotMcu/base_esp32s3/main/main.c - Base firmware → WebSocket telemetry: starts service
looraysBotMcu/base_esp32s3/main/main.c - WebSocket telemetry → PID motor control: sets velocity
looraysBotMcu/base_esp32s3/components/WEBSOCKET_CLIENT/WEBSOCKET_CLIENT.c - WebSocket telemetry → Robot operator: sends telemetry
- Camera capture → Camera UDP: sends frames
looraysBotMcu/camera_esp32/components/ESP32_CAM/ESP32_CAM.c - Robot operator → Mobile controls: controls robot
- Robot operator → Desktop dashboard: monitors robot
- Base firmware → UDP communications: UDP telemetry
- Lidar forwarding → Lidar driver: forwards scans
- UDP communications → IMU filter: publishes sensor data
- IMU filter → State estimation: provides filtered IMU
- Lidar driver → SLAM and navigation: provides lidar data
- State estimation → SLAM and navigation: supports navigation
- Camera UDP → Vision and gestures: provides images
- ROS launch setup → SLAM and navigation: launches navigation
- ROS1 compatibility → Robot operator: supports ROS1 operation
- Desktop dashboard → Embedded RViz: embeds visualization