This ROS2 package provides a set of action servers for controlling serial link robot arms.
Note
This package is still under development. More features will be added.
-
ModelUpdater
- File:
ModelUpdater.h
- Description: A ROS2 node that subscribes to a joint state topic and updates the robot's kinematics and dynamics as it receives messages.
- File:
-
TrackJointTrajectory
- File:
TrackJointTrajectory.h
- Description: A ROS2 action server that handles joint trajectory tracking for a serial link robot arm. It processes requests, tracks joint trajectories, and provides feedback on position and velocity errors.
- File:
-
Velocity Control Server
- File:
velocity_control_server.cpp
- Description: The main executable for launching the control server, which includes initializing nodes and handling robot control and trajectory tracking.
- File:
-
Torque Control Server
- File:
torque_control_server.cpp
- Description: Launches a control server, but computes the inverse dynamics necessary to execute control actions, such as joint trajectory tracking, and Cartesian control.
- File:
Warning
The torque control actions are still not fully complete.
- ROS2 (e.g., Foxy, Galactic)
RobotLibrary
(see RobotLibrary GitHub)mujoco_interface
(see mujoco_interface GitHub)
-
Clone the repository:
git clone https://github.com/Woolfrey/server_serial_link.git
-
Install dependencies:
Ensure you have ROS2 installed and sourced. Also, install RobotLibrary and mujoco_interface as needed.
- Build the package:
Navigate to your ROS2 workspace and build the package:
cd your-ros2-workspace
colcon build
4: Source the workspace:
source install/setup.bash
There is a launch file designed to work with the mujoco_interface package.
You may modify/write your own to work with any robot.
- Launch the MuJoCo simulation. There are two options,
velocity_mode.py
, ortorque_mode.py
:
ros2 launch mujoco_interface velocity_mode.py
- Launch the action server. It must match the control mode:
ros2 launch serial_link_action_server mujoco_velocity_control.py
or mujoco_torque_control.py
if running torque mode.
- Run the client:
ros2 run serial_link_action_server demo_client <numberOfJoints>
Replace with the number of joints of the robot.
Tip
The client is independent of the control mode! 👍
Contributions are welcome! Please fork the repository and submit a pull request with your changes.
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.