No version for distro humble showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mangdangroboticsclub/mini_pupper_ros.git
VCS Type git
VCS Version ros2-dev
Last Updated 2026-05-30
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 hardware interface for Mini Pupper robot integrated with ros2_control

Maintainers

  • MangDang

Authors

  • cullensun

mini_pupper_hardware

ROS 2 ros2_control hardware interface plugin for the Mini Pupper 2 quadruped robot.

For a full description of the ros2_control architecture and data flow, see docs/ros2-control-architecture.md.

Socket protocol (BB12B12H)

38-byte packet sent to /tmp/esp32-proxy.socket (SOCK_SEQPACKET):

Bytes Format Content
0 B Packet size = 38
1 B Command = 1 (SETPOS)
2–13 12B Torque enable per servo (uint8, 1 = enabled)
14–37 12H Servo positions, uint16 little-endian (0–1023, neutral = 512)

Servo layout

Index Joint Leg
0–2 abd, hip, knee_abs RF (right front)
3–5 abd, hip, knee_abs LF (left front)
6–8 abd, hip, knee_abs RB (right back)
9–11 abd, hip, knee_abs LB (left back)

knee_abs = hip_angle + knee_angle (absolute, not relative to hip).

Angle → servo conversion

servo = 512 − MICROS_PER_RAD × (angle − neutral_angle) × multiplier

MICROS_PER_RAD = (760 − 210) / π  ≈ 175.07

Neutral angles and per-axis/per-leg multipliers are defined in include/mini_pupper_hardware/mini_pupper_hardware.hpp.

Building

cd ~/ros2_ws
colcon build --packages-select mini_pupper_hardware
source install/setup.bash

Running

ros2 launch mini_pupper_bringup bringup.launch.py

Set hardware_interface_type: mock in the URDF <ros2_control> block to run without a physical robot.

Hardware diagnostic tests

The test/ directory contains standalone diagnostic scripts that run directly on the robot without ROS 2. See test/README.md.

Troubleshooting

Symptom Check
Plugin not found colcon build, then source install/setup.bash
Servos not moving Is esp32-proxy running? Does /tmp/esp32-proxy.socket exist?
Wrong standing pose Check default_positions in mini_pupper_2_controllers.yaml — knee values must be knee_abs (absolute angle from IK ≈ −0.774 at default_z_ref=-0.07), not the raw inter-link angle
Front/rear leg mismatch Check SERVO_MULTIPLIERS abduction row in mini_pupper_hardware.hpp

License

Apache License 2.0

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged mini_pupper_hardware at Robotics Stack Exchange

No version for distro jazzy showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mangdangroboticsclub/mini_pupper_ros.git
VCS Type git
VCS Version ros2-dev
Last Updated 2026-05-30
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 hardware interface for Mini Pupper robot integrated with ros2_control

Maintainers

  • MangDang

Authors

  • cullensun

mini_pupper_hardware

ROS 2 ros2_control hardware interface plugin for the Mini Pupper 2 quadruped robot.

For a full description of the ros2_control architecture and data flow, see docs/ros2-control-architecture.md.

Socket protocol (BB12B12H)

38-byte packet sent to /tmp/esp32-proxy.socket (SOCK_SEQPACKET):

Bytes Format Content
0 B Packet size = 38
1 B Command = 1 (SETPOS)
2–13 12B Torque enable per servo (uint8, 1 = enabled)
14–37 12H Servo positions, uint16 little-endian (0–1023, neutral = 512)

Servo layout

Index Joint Leg
0–2 abd, hip, knee_abs RF (right front)
3–5 abd, hip, knee_abs LF (left front)
6–8 abd, hip, knee_abs RB (right back)
9–11 abd, hip, knee_abs LB (left back)

knee_abs = hip_angle + knee_angle (absolute, not relative to hip).

Angle → servo conversion

servo = 512 − MICROS_PER_RAD × (angle − neutral_angle) × multiplier

MICROS_PER_RAD = (760 − 210) / π  ≈ 175.07

Neutral angles and per-axis/per-leg multipliers are defined in include/mini_pupper_hardware/mini_pupper_hardware.hpp.

Building

cd ~/ros2_ws
colcon build --packages-select mini_pupper_hardware
source install/setup.bash

Running

ros2 launch mini_pupper_bringup bringup.launch.py

Set hardware_interface_type: mock in the URDF <ros2_control> block to run without a physical robot.

Hardware diagnostic tests

The test/ directory contains standalone diagnostic scripts that run directly on the robot without ROS 2. See test/README.md.

Troubleshooting

Symptom Check
Plugin not found colcon build, then source install/setup.bash
Servos not moving Is esp32-proxy running? Does /tmp/esp32-proxy.socket exist?
Wrong standing pose Check default_positions in mini_pupper_2_controllers.yaml — knee values must be knee_abs (absolute angle from IK ≈ −0.774 at default_z_ref=-0.07), not the raw inter-link angle
Front/rear leg mismatch Check SERVO_MULTIPLIERS abduction row in mini_pupper_hardware.hpp

License

Apache License 2.0

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged mini_pupper_hardware at Robotics Stack Exchange

No version for distro kilted showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mangdangroboticsclub/mini_pupper_ros.git
VCS Type git
VCS Version ros2-dev
Last Updated 2026-05-30
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 hardware interface for Mini Pupper robot integrated with ros2_control

Maintainers

  • MangDang

Authors

  • cullensun

mini_pupper_hardware

ROS 2 ros2_control hardware interface plugin for the Mini Pupper 2 quadruped robot.

For a full description of the ros2_control architecture and data flow, see docs/ros2-control-architecture.md.

Socket protocol (BB12B12H)

38-byte packet sent to /tmp/esp32-proxy.socket (SOCK_SEQPACKET):

Bytes Format Content
0 B Packet size = 38
1 B Command = 1 (SETPOS)
2–13 12B Torque enable per servo (uint8, 1 = enabled)
14–37 12H Servo positions, uint16 little-endian (0–1023, neutral = 512)

Servo layout

Index Joint Leg
0–2 abd, hip, knee_abs RF (right front)
3–5 abd, hip, knee_abs LF (left front)
6–8 abd, hip, knee_abs RB (right back)
9–11 abd, hip, knee_abs LB (left back)

knee_abs = hip_angle + knee_angle (absolute, not relative to hip).

Angle → servo conversion

servo = 512 − MICROS_PER_RAD × (angle − neutral_angle) × multiplier

MICROS_PER_RAD = (760 − 210) / π  ≈ 175.07

Neutral angles and per-axis/per-leg multipliers are defined in include/mini_pupper_hardware/mini_pupper_hardware.hpp.

Building

cd ~/ros2_ws
colcon build --packages-select mini_pupper_hardware
source install/setup.bash

Running

ros2 launch mini_pupper_bringup bringup.launch.py

Set hardware_interface_type: mock in the URDF <ros2_control> block to run without a physical robot.

Hardware diagnostic tests

The test/ directory contains standalone diagnostic scripts that run directly on the robot without ROS 2. See test/README.md.

Troubleshooting

Symptom Check
Plugin not found colcon build, then source install/setup.bash
Servos not moving Is esp32-proxy running? Does /tmp/esp32-proxy.socket exist?
Wrong standing pose Check default_positions in mini_pupper_2_controllers.yaml — knee values must be knee_abs (absolute angle from IK ≈ −0.774 at default_z_ref=-0.07), not the raw inter-link angle
Front/rear leg mismatch Check SERVO_MULTIPLIERS abduction row in mini_pupper_hardware.hpp

License

Apache License 2.0

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged mini_pupper_hardware at Robotics Stack Exchange

No version for distro lyrical showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mangdangroboticsclub/mini_pupper_ros.git
VCS Type git
VCS Version ros2-dev
Last Updated 2026-05-30
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 hardware interface for Mini Pupper robot integrated with ros2_control

Maintainers

  • MangDang

Authors

  • cullensun

mini_pupper_hardware

ROS 2 ros2_control hardware interface plugin for the Mini Pupper 2 quadruped robot.

For a full description of the ros2_control architecture and data flow, see docs/ros2-control-architecture.md.

Socket protocol (BB12B12H)

38-byte packet sent to /tmp/esp32-proxy.socket (SOCK_SEQPACKET):

Bytes Format Content
0 B Packet size = 38
1 B Command = 1 (SETPOS)
2–13 12B Torque enable per servo (uint8, 1 = enabled)
14–37 12H Servo positions, uint16 little-endian (0–1023, neutral = 512)

Servo layout

Index Joint Leg
0–2 abd, hip, knee_abs RF (right front)
3–5 abd, hip, knee_abs LF (left front)
6–8 abd, hip, knee_abs RB (right back)
9–11 abd, hip, knee_abs LB (left back)

knee_abs = hip_angle + knee_angle (absolute, not relative to hip).

Angle → servo conversion

servo = 512 − MICROS_PER_RAD × (angle − neutral_angle) × multiplier

MICROS_PER_RAD = (760 − 210) / π  ≈ 175.07

Neutral angles and per-axis/per-leg multipliers are defined in include/mini_pupper_hardware/mini_pupper_hardware.hpp.

Building

cd ~/ros2_ws
colcon build --packages-select mini_pupper_hardware
source install/setup.bash

Running

ros2 launch mini_pupper_bringup bringup.launch.py

Set hardware_interface_type: mock in the URDF <ros2_control> block to run without a physical robot.

Hardware diagnostic tests

The test/ directory contains standalone diagnostic scripts that run directly on the robot without ROS 2. See test/README.md.

Troubleshooting

Symptom Check
Plugin not found colcon build, then source install/setup.bash
Servos not moving Is esp32-proxy running? Does /tmp/esp32-proxy.socket exist?
Wrong standing pose Check default_positions in mini_pupper_2_controllers.yaml — knee values must be knee_abs (absolute angle from IK ≈ −0.774 at default_z_ref=-0.07), not the raw inter-link angle
Front/rear leg mismatch Check SERVO_MULTIPLIERS abduction row in mini_pupper_hardware.hpp

License

Apache License 2.0

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged mini_pupper_hardware at Robotics Stack Exchange

No version for distro rolling showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mangdangroboticsclub/mini_pupper_ros.git
VCS Type git
VCS Version ros2-dev
Last Updated 2026-05-30
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 hardware interface for Mini Pupper robot integrated with ros2_control

Maintainers

  • MangDang

Authors

  • cullensun

mini_pupper_hardware

ROS 2 ros2_control hardware interface plugin for the Mini Pupper 2 quadruped robot.

For a full description of the ros2_control architecture and data flow, see docs/ros2-control-architecture.md.

Socket protocol (BB12B12H)

38-byte packet sent to /tmp/esp32-proxy.socket (SOCK_SEQPACKET):

Bytes Format Content
0 B Packet size = 38
1 B Command = 1 (SETPOS)
2–13 12B Torque enable per servo (uint8, 1 = enabled)
14–37 12H Servo positions, uint16 little-endian (0–1023, neutral = 512)

Servo layout

Index Joint Leg
0–2 abd, hip, knee_abs RF (right front)
3–5 abd, hip, knee_abs LF (left front)
6–8 abd, hip, knee_abs RB (right back)
9–11 abd, hip, knee_abs LB (left back)

knee_abs = hip_angle + knee_angle (absolute, not relative to hip).

Angle → servo conversion

servo = 512 − MICROS_PER_RAD × (angle − neutral_angle) × multiplier

MICROS_PER_RAD = (760 − 210) / π  ≈ 175.07

Neutral angles and per-axis/per-leg multipliers are defined in include/mini_pupper_hardware/mini_pupper_hardware.hpp.

Building

cd ~/ros2_ws
colcon build --packages-select mini_pupper_hardware
source install/setup.bash

Running

ros2 launch mini_pupper_bringup bringup.launch.py

Set hardware_interface_type: mock in the URDF <ros2_control> block to run without a physical robot.

Hardware diagnostic tests

The test/ directory contains standalone diagnostic scripts that run directly on the robot without ROS 2. See test/README.md.

Troubleshooting

Symptom Check
Plugin not found colcon build, then source install/setup.bash
Servos not moving Is esp32-proxy running? Does /tmp/esp32-proxy.socket exist?
Wrong standing pose Check default_positions in mini_pupper_2_controllers.yaml — knee values must be knee_abs (absolute angle from IK ≈ −0.774 at default_z_ref=-0.07), not the raw inter-link angle
Front/rear leg mismatch Check SERVO_MULTIPLIERS abduction row in mini_pupper_hardware.hpp

License

Apache License 2.0

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged mini_pupper_hardware at Robotics Stack Exchange

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mangdangroboticsclub/mini_pupper_ros.git
VCS Type git
VCS Version ros2-dev
Last Updated 2026-05-30
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 hardware interface for Mini Pupper robot integrated with ros2_control

Maintainers

  • MangDang

Authors

  • cullensun

mini_pupper_hardware

ROS 2 ros2_control hardware interface plugin for the Mini Pupper 2 quadruped robot.

For a full description of the ros2_control architecture and data flow, see docs/ros2-control-architecture.md.

Socket protocol (BB12B12H)

38-byte packet sent to /tmp/esp32-proxy.socket (SOCK_SEQPACKET):

Bytes Format Content
0 B Packet size = 38
1 B Command = 1 (SETPOS)
2–13 12B Torque enable per servo (uint8, 1 = enabled)
14–37 12H Servo positions, uint16 little-endian (0–1023, neutral = 512)

Servo layout

Index Joint Leg
0–2 abd, hip, knee_abs RF (right front)
3–5 abd, hip, knee_abs LF (left front)
6–8 abd, hip, knee_abs RB (right back)
9–11 abd, hip, knee_abs LB (left back)

knee_abs = hip_angle + knee_angle (absolute, not relative to hip).

Angle → servo conversion

servo = 512 − MICROS_PER_RAD × (angle − neutral_angle) × multiplier

MICROS_PER_RAD = (760 − 210) / π  ≈ 175.07

Neutral angles and per-axis/per-leg multipliers are defined in include/mini_pupper_hardware/mini_pupper_hardware.hpp.

Building

cd ~/ros2_ws
colcon build --packages-select mini_pupper_hardware
source install/setup.bash

Running

ros2 launch mini_pupper_bringup bringup.launch.py

Set hardware_interface_type: mock in the URDF <ros2_control> block to run without a physical robot.

Hardware diagnostic tests

The test/ directory contains standalone diagnostic scripts that run directly on the robot without ROS 2. See test/README.md.

Troubleshooting

Symptom Check
Plugin not found colcon build, then source install/setup.bash
Servos not moving Is esp32-proxy running? Does /tmp/esp32-proxy.socket exist?
Wrong standing pose Check default_positions in mini_pupper_2_controllers.yaml — knee values must be knee_abs (absolute angle from IK ≈ −0.774 at default_z_ref=-0.07), not the raw inter-link angle
Front/rear leg mismatch Check SERVO_MULTIPLIERS abduction row in mini_pupper_hardware.hpp

License

Apache License 2.0

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged mini_pupper_hardware at Robotics Stack Exchange

No version for distro galactic showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mangdangroboticsclub/mini_pupper_ros.git
VCS Type git
VCS Version ros2-dev
Last Updated 2026-05-30
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 hardware interface for Mini Pupper robot integrated with ros2_control

Maintainers

  • MangDang

Authors

  • cullensun

mini_pupper_hardware

ROS 2 ros2_control hardware interface plugin for the Mini Pupper 2 quadruped robot.

For a full description of the ros2_control architecture and data flow, see docs/ros2-control-architecture.md.

Socket protocol (BB12B12H)

38-byte packet sent to /tmp/esp32-proxy.socket (SOCK_SEQPACKET):

Bytes Format Content
0 B Packet size = 38
1 B Command = 1 (SETPOS)
2–13 12B Torque enable per servo (uint8, 1 = enabled)
14–37 12H Servo positions, uint16 little-endian (0–1023, neutral = 512)

Servo layout

Index Joint Leg
0–2 abd, hip, knee_abs RF (right front)
3–5 abd, hip, knee_abs LF (left front)
6–8 abd, hip, knee_abs RB (right back)
9–11 abd, hip, knee_abs LB (left back)

knee_abs = hip_angle + knee_angle (absolute, not relative to hip).

Angle → servo conversion

servo = 512 − MICROS_PER_RAD × (angle − neutral_angle) × multiplier

MICROS_PER_RAD = (760 − 210) / π  ≈ 175.07

Neutral angles and per-axis/per-leg multipliers are defined in include/mini_pupper_hardware/mini_pupper_hardware.hpp.

Building

cd ~/ros2_ws
colcon build --packages-select mini_pupper_hardware
source install/setup.bash

Running

ros2 launch mini_pupper_bringup bringup.launch.py

Set hardware_interface_type: mock in the URDF <ros2_control> block to run without a physical robot.

Hardware diagnostic tests

The test/ directory contains standalone diagnostic scripts that run directly on the robot without ROS 2. See test/README.md.

Troubleshooting

Symptom Check
Plugin not found colcon build, then source install/setup.bash
Servos not moving Is esp32-proxy running? Does /tmp/esp32-proxy.socket exist?
Wrong standing pose Check default_positions in mini_pupper_2_controllers.yaml — knee values must be knee_abs (absolute angle from IK ≈ −0.774 at default_z_ref=-0.07), not the raw inter-link angle
Front/rear leg mismatch Check SERVO_MULTIPLIERS abduction row in mini_pupper_hardware.hpp

License

Apache License 2.0

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged mini_pupper_hardware at Robotics Stack Exchange

No version for distro iron showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mangdangroboticsclub/mini_pupper_ros.git
VCS Type git
VCS Version ros2-dev
Last Updated 2026-05-30
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 hardware interface for Mini Pupper robot integrated with ros2_control

Maintainers

  • MangDang

Authors

  • cullensun

mini_pupper_hardware

ROS 2 ros2_control hardware interface plugin for the Mini Pupper 2 quadruped robot.

For a full description of the ros2_control architecture and data flow, see docs/ros2-control-architecture.md.

Socket protocol (BB12B12H)

38-byte packet sent to /tmp/esp32-proxy.socket (SOCK_SEQPACKET):

Bytes Format Content
0 B Packet size = 38
1 B Command = 1 (SETPOS)
2–13 12B Torque enable per servo (uint8, 1 = enabled)
14–37 12H Servo positions, uint16 little-endian (0–1023, neutral = 512)

Servo layout

Index Joint Leg
0–2 abd, hip, knee_abs RF (right front)
3–5 abd, hip, knee_abs LF (left front)
6–8 abd, hip, knee_abs RB (right back)
9–11 abd, hip, knee_abs LB (left back)

knee_abs = hip_angle + knee_angle (absolute, not relative to hip).

Angle → servo conversion

servo = 512 − MICROS_PER_RAD × (angle − neutral_angle) × multiplier

MICROS_PER_RAD = (760 − 210) / π  ≈ 175.07

Neutral angles and per-axis/per-leg multipliers are defined in include/mini_pupper_hardware/mini_pupper_hardware.hpp.

Building

cd ~/ros2_ws
colcon build --packages-select mini_pupper_hardware
source install/setup.bash

Running

ros2 launch mini_pupper_bringup bringup.launch.py

Set hardware_interface_type: mock in the URDF <ros2_control> block to run without a physical robot.

Hardware diagnostic tests

The test/ directory contains standalone diagnostic scripts that run directly on the robot without ROS 2. See test/README.md.

Troubleshooting

Symptom Check
Plugin not found colcon build, then source install/setup.bash
Servos not moving Is esp32-proxy running? Does /tmp/esp32-proxy.socket exist?
Wrong standing pose Check default_positions in mini_pupper_2_controllers.yaml — knee values must be knee_abs (absolute angle from IK ≈ −0.774 at default_z_ref=-0.07), not the raw inter-link angle
Front/rear leg mismatch Check SERVO_MULTIPLIERS abduction row in mini_pupper_hardware.hpp

License

Apache License 2.0

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged mini_pupper_hardware at Robotics Stack Exchange

No version for distro melodic showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mangdangroboticsclub/mini_pupper_ros.git
VCS Type git
VCS Version ros2-dev
Last Updated 2026-05-30
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 hardware interface for Mini Pupper robot integrated with ros2_control

Maintainers

  • MangDang

Authors

  • cullensun

mini_pupper_hardware

ROS 2 ros2_control hardware interface plugin for the Mini Pupper 2 quadruped robot.

For a full description of the ros2_control architecture and data flow, see docs/ros2-control-architecture.md.

Socket protocol (BB12B12H)

38-byte packet sent to /tmp/esp32-proxy.socket (SOCK_SEQPACKET):

Bytes Format Content
0 B Packet size = 38
1 B Command = 1 (SETPOS)
2–13 12B Torque enable per servo (uint8, 1 = enabled)
14–37 12H Servo positions, uint16 little-endian (0–1023, neutral = 512)

Servo layout

Index Joint Leg
0–2 abd, hip, knee_abs RF (right front)
3–5 abd, hip, knee_abs LF (left front)
6–8 abd, hip, knee_abs RB (right back)
9–11 abd, hip, knee_abs LB (left back)

knee_abs = hip_angle + knee_angle (absolute, not relative to hip).

Angle → servo conversion

servo = 512 − MICROS_PER_RAD × (angle − neutral_angle) × multiplier

MICROS_PER_RAD = (760 − 210) / π  ≈ 175.07

Neutral angles and per-axis/per-leg multipliers are defined in include/mini_pupper_hardware/mini_pupper_hardware.hpp.

Building

cd ~/ros2_ws
colcon build --packages-select mini_pupper_hardware
source install/setup.bash

Running

ros2 launch mini_pupper_bringup bringup.launch.py

Set hardware_interface_type: mock in the URDF <ros2_control> block to run without a physical robot.

Hardware diagnostic tests

The test/ directory contains standalone diagnostic scripts that run directly on the robot without ROS 2. See test/README.md.

Troubleshooting

Symptom Check
Plugin not found colcon build, then source install/setup.bash
Servos not moving Is esp32-proxy running? Does /tmp/esp32-proxy.socket exist?
Wrong standing pose Check default_positions in mini_pupper_2_controllers.yaml — knee values must be knee_abs (absolute angle from IK ≈ −0.774 at default_z_ref=-0.07), not the raw inter-link angle
Front/rear leg mismatch Check SERVO_MULTIPLIERS abduction row in mini_pupper_hardware.hpp

License

Apache License 2.0

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged mini_pupper_hardware at Robotics Stack Exchange

No version for distro noetic showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mangdangroboticsclub/mini_pupper_ros.git
VCS Type git
VCS Version ros2-dev
Last Updated 2026-05-30
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 hardware interface for Mini Pupper robot integrated with ros2_control

Maintainers

  • MangDang

Authors

  • cullensun

mini_pupper_hardware

ROS 2 ros2_control hardware interface plugin for the Mini Pupper 2 quadruped robot.

For a full description of the ros2_control architecture and data flow, see docs/ros2-control-architecture.md.

Socket protocol (BB12B12H)

38-byte packet sent to /tmp/esp32-proxy.socket (SOCK_SEQPACKET):

Bytes Format Content
0 B Packet size = 38
1 B Command = 1 (SETPOS)
2–13 12B Torque enable per servo (uint8, 1 = enabled)
14–37 12H Servo positions, uint16 little-endian (0–1023, neutral = 512)

Servo layout

Index Joint Leg
0–2 abd, hip, knee_abs RF (right front)
3–5 abd, hip, knee_abs LF (left front)
6–8 abd, hip, knee_abs RB (right back)
9–11 abd, hip, knee_abs LB (left back)

knee_abs = hip_angle + knee_angle (absolute, not relative to hip).

Angle → servo conversion

servo = 512 − MICROS_PER_RAD × (angle − neutral_angle) × multiplier

MICROS_PER_RAD = (760 − 210) / π  ≈ 175.07

Neutral angles and per-axis/per-leg multipliers are defined in include/mini_pupper_hardware/mini_pupper_hardware.hpp.

Building

cd ~/ros2_ws
colcon build --packages-select mini_pupper_hardware
source install/setup.bash

Running

ros2 launch mini_pupper_bringup bringup.launch.py

Set hardware_interface_type: mock in the URDF <ros2_control> block to run without a physical robot.

Hardware diagnostic tests

The test/ directory contains standalone diagnostic scripts that run directly on the robot without ROS 2. See test/README.md.

Troubleshooting

Symptom Check
Plugin not found colcon build, then source install/setup.bash
Servos not moving Is esp32-proxy running? Does /tmp/esp32-proxy.socket exist?
Wrong standing pose Check default_positions in mini_pupper_2_controllers.yaml — knee values must be knee_abs (absolute angle from IK ≈ −0.774 at default_z_ref=-0.07), not the raw inter-link angle
Front/rear leg mismatch Check SERVO_MULTIPLIERS abduction row in mini_pupper_hardware.hpp

License

Apache License 2.0

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged mini_pupper_hardware at Robotics Stack Exchange