HyperDog is a quadruped robot which is fully based on ROS 2 and Micro-ROS.
HyperDog
| IEEE SMC-2022DogTouch
| IEEE VTC-2022HyperGuider
| IEEE SMC-2022HyperPalm
| IEEE SMC-2022This repository contains ros2 packages for quadruped robot HyperDog. packages are :
hyperdog_msgs
: this package contains the msgs those used by other packages.
1. `JoyCtrlCmds` : this contains the control variables of the robot from the gamepad
- `bool[3] states` : { start, walk, side_move_mode}
- `uint8 gait_type` : to change the gait type
- `geometry_msgs/Pose pose` : to control slant(x,y) and roll,pitch,yaw
- `geometry_msgs/Vector3 gait_step` : gait_step.x = steplen_x, gait_step.y = steplen_y, gait_step.z = swing_height
2. `Geometry`: this contains the parameters for coordinate of each leg and body orientation(roll,pitch,yaw)
- `geometry_msgs/Point32 fr` : x,y,z end effector coordinates of FR leg
- `geometry_msgs/Point32 fl` : x,y,z end effector coordinates of FL leg
- `geometry_msgs/Point32 br` : x,y,z end effector coordinates of BR leg
- `geometry_msgs/Point32 bl` : x,y,z end effector coordinates of BL leg
- `geometry_msgs/Quaternion euler_ang` : roll, pitch, yaw angles
hyperdog_teleop
: this pkg creates `/hyperdog_teleop_gamepad_node.
/joy_node
This node creates commands to robot from Gamepad commands
/joy_node
/hyperdog_joy_ctrl_cmd
using the interface hyperdog_msgs/msg/JoyCtrlCmd
hyperdog_ctrl
: This pkg has Body_motion_planner
and gait_generater
and creates the nodes /command_manager_node
and /IK_node
Body_motion_planner
: plans body motions from control commands receive from /command_manager_node
gait_generator
: generates gaits acording to the given gait_type command from the Gamepad
Node 1 : /command_manager_node
/hyperdog_joy_ctrl_cmd
via hyperdog_msgs/msg/JoyCtrlCmds
interface/hyperdog_geometry
via hyperdog_msgs/msg/Geometry
interfaceNode 2 : /IK_node
/hyperdog_geometry
via hyperdog_msgs/msg/Geometry
interface/hyperdog_jointController/commands
uros
: this is the micro_ros package from its official git. this package is used to launch micro_ros_agent
to communicate with micro-controllers which run micro_ros via ROS2
hyperdog_launch
: This contains the launch file for all the above nodes and micro_ros_agent
hyperdog_gazebo_sim
: Gazebo simmulation
hyperdog_gazebo_joint_cmd
: this pkg contains the node /hyperdog_gazebo_joint_cmd
to send joint angles to gazebo
/hyperdog_gazebo_joint_cmd
/hyperdog_jointController/commands
Create a ROS2 workspace and build this package for ROS2 foxy
# make the workspace
mkdir hyperdog_ws/src
cd hyperdog_ws/src
# download the pkg
git clone https://github.com/NDHANA94/hyperdog_ros2.git
# build the pkg
cd ..
colcon build
build micro_ros_agent
in hyperdog_ws from the git repository https://github.com/micro-ROS/micro_ros_setup/tree/foxy. follow instuction and build the micro_ros_agent.
edit line 41 in hyperdog_ros2/src/hyperdog_launch/launch/hyperdog.launch.py script to configure your serial port.
go to hyperdog_ws
directory and build all the packages again
source the workspace
source hyperdog_ws/install/setup.bash
to add workspace source permenently to .bashrc:
# add source
echo "source /home/$USER/hyperdog_ws/install/setup.bash" >> ~/.bachrc
to launch run following
ros2 launch hyperdog_launch hyperdog.launch.py
to launch gazebo with hyperdog
ros2 launch hypedog_gazebo_sim hyperdog_gazebo_sim.launch.py