All Projects → youtalk → dynamixel_control

youtalk / dynamixel_control

Licence: Apache-2.0 license
ros2_control packages for ROBOTIS Dynamixel

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to dynamixel control

iknet
Inverse kinematics estimation of ROBOTIS Open Manipulator X with neural networks
Stars: ✭ 27 (-60.87%)
Mutual labels:  dynamixel, ros2, robotis
ROBOTIS-OP3
ROS packages for the ROBOTIS OP3
Stars: ✭ 56 (-18.84%)
Mutual labels:  dynamixel, robotis
dynamixel-workbench
ROS packages for Dynamixel controllers, msgs, single_manager, toolbox, tutorials
Stars: ✭ 91 (+31.88%)
Mutual labels:  dynamixel, robotis
isaac ros visual odometry
Visual odometry package based on hardware-accelerated NVIDIA Elbrus library with world class quality and performance.
Stars: ✭ 101 (+46.38%)
Mutual labels:  ros2, ros2-foxy
SMACC2
An Event-Driven, Asynchronous, Behavioral State Machine Library for ROS2 (Robotic Operating System) applications written in C++
Stars: ✭ 58 (-15.94%)
Mutual labels:  ros2, ros2-rolling
turtlebot3 msgs
ROS msgs package for TurtleBot3
Stars: ✭ 53 (-23.19%)
Mutual labels:  dynamixel, robotis
isaac ros dnn inference
Hardware-accelerated DNN model inference ROS2 packages using NVIDIA Triton/TensorRT for both Jetson and x86_64 with CUDA-capable GPU
Stars: ✭ 67 (-2.9%)
Mutual labels:  ros2, ros2-humble
emanual
Welcome to the ROBOTIS e-Manual ! The e-Manual page rendered from this repository is available for everyone. Just simply click the provided link below :)
Stars: ✭ 105 (+52.17%)
Mutual labels:  dynamixel, robotis
isaac ros apriltag
CUDA-accelerated Apriltag detection
Stars: ✭ 42 (-39.13%)
Mutual labels:  ros2, ros2-foxy
open manipulator simulations
ROS Simulation for OpenManipulator
Stars: ✭ 15 (-78.26%)
Mutual labels:  dynamixel, robotis
astuff sensor msgs
A set of messages specific to each sensor supported by AutonomouStuff.
Stars: ✭ 37 (-46.38%)
Mutual labels:  ros2
realant
RealAnt robot platform for low-cost, real-world reinforcement learning
Stars: ✭ 40 (-42.03%)
Mutual labels:  dynamixel
ROS
ROS机器人操作系统 学习(写于2020年夏)
Stars: ✭ 102 (+47.83%)
Mutual labels:  ros2
ros2-ORB SLAM2
ROS2 node wrapping the ORB_SLAM2 library
Stars: ✭ 41 (-40.58%)
Mutual labels:  ros2
HexapodHDA
University Project: Design of a six-legged Hexapod with 3 DoF at each leg. Communication and control implementation on an Arduino 2560.
Stars: ✭ 20 (-71.01%)
Mutual labels:  dynamixel
rclshark
Tool for ROS 2 IP Discovery + System Monitoring
Stars: ✭ 32 (-53.62%)
Mutual labels:  ros2
trac ik
ROS 2 port of `trac_ik`, an alternative Inverse Kinematics solver to the popular inverse Jacobian methods in KDL.
Stars: ✭ 14 (-79.71%)
Mutual labels:  ros2
Awesome Robotic Tooling
Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace.
Stars: ✭ 1,876 (+2618.84%)
Mutual labels:  ros2
awesome-webots
Awesome Webots
Stars: ✭ 46 (-33.33%)
Mutual labels:  ros2
raspimouse ros2 examples
ROS 2 examples for Raspberry Pi Mouse
Stars: ✭ 29 (-57.97%)
Mutual labels:  ros2

dynamixel_hardware

The ros2_control implementation for any kind of ROBOTIS Dynamixel robots.

The dynamixel_hardware package is the SystemInterface implementation for the multiple ROBOTIS Dynamixel servos.

It is hopefully compatible any configuration of ROBOTIS Dynamixel servos thanks to the ros2_control's flexible architecture.

Set up

First install ROS 2 Rolling on Ubuntu 22.04. Then follow the instruction below.

$ source /opt/ros/rolling/setup.bash
$ mkdir -p ~/ros/rolling && cd ~/ros/rolling/src
$ git clone https://github.com/youtalk/dynamixel_hardware.git
$ git clone https://github.com/youtalk/dynamixel_hardware_examples.git
$ cd -
$ rosdep install --from-paths src --ignore-src -r -y
$ colcon build --symlink-install --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
$ . install/setup.bash

Demo with real ROBOTIS OpenManipulator-X

Configure Dynamixel motor parameters

Update the usb_port, baud_rate, and joint_ids parameters on open_manipulator_x_description/urdf/open_manipulator_x.ros2_control.xacro to correctly communicate with Dynamixel motors. The use_dummy parameter is required if you don't have a real OpenManipulator-X.

Note that joint_ids parameters must be splited by ,.

<hardware>
  <plugin>dynamixel_hardware/DynamixelHardware</plugin>
  <param name="usb_port">/dev/ttyUSB0</param>
  <param name="baud_rate">1000000</param>
  <!-- <param name="use_dummy">true</param> -->
</hardware>
  • Terminal 1

Launch the ros2_control manager for the OpenManipulator-X.

$ ros2 launch open_manipulator_x_description open_manipulator_x.launch.py
  • Terminal 2

Start the joint_trajectory_controller and send a /joint_trajectory_controller/follow_joint_trajectory goal to move the OpenManipulator-X.

$ ros2 control switch_controllers --activate joint_state_broadcaster --activate joint_trajectory_controller --deactivate velocity_controller
$ ros2 action send_goal /joint_trajectory_controller/follow_joint_trajectory control_msgs/action/FollowJointTrajectory -f "{
  trajectory: {
    joint_names: [joint1, joint2, joint3, joint4, gripper],
    points: [
      { positions: [0.1, 0.1, 0.1, 0.1, 0], time_from_start: { sec: 2 } },
      { positions: [-0.1, -0.1, -0.1, -0.1, 0], time_from_start: { sec: 4 } },
      { positions: [0, 0, 0, 0, 0], time_from_start: { sec: 6 } }
    ]
  }
}"

If you would like to use the velocity control instead, switch to the velocity_controller and publish a /velocity_controller/commands message to move the OpenManipulator-X.

$ ros2 control switch_controllers --activate joint_state_broadcaster --deactivate joint_trajectory_controller --activate velocity_controller
$ ros2 topic pub /velocity_controller/commands std_msgs/msg/Float64MultiArray "data: [0.1, 0.1, 0.1, 0.1, 0]"

dynamixel_control: the ros2_control implementation for any kind of ROBOTIS Dynamixel robots

Demo with dummy ROBOTIS OpenManipulator-X

The use_dummy parameter is required if you use the dummy OpenManipulator-X.

diff --git a/open_manipulator_x_description/urdf/open_manipulator_x.ros2_control.xacro b/open_manipulator_x_description/urdf/open_manipulator_x.ros2_control.xacro
index c6cdb74..111846d 100644
--- a/open_manipulator_x_description/urdf/open_manipulator_x.ros2_control.xacro
+++ b/open_manipulator_x_description/urdf/open_manipulator_x.ros2_control.xacro
@@ -9,7 +9,7 @@
         <param name="usb_port">/dev/ttyUSB0</param>
         <param name="baud_rate">1000000</param>
-        <!-- <param name="use_dummy">true</param> -->
+        <param name="use_dummy">true</param>
       </hardware>
       <joint name="joint1">
         <param name="id">11</param>

Then follow the same instruction of the real robot one.

Note that the dummy implementation has no interpolation so far. If you sent a joint message, the robot would move directly to the joints without interpolation.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].