CommonplaceRobotics / iRC_ROS

ROS2 packages for the igus Robot Control
Apache License 2.0
15 stars 7 forks source link

Supporting packages for the 3-axis delta #104

Open YazanRihan opened 11 months ago

YazanRihan commented 11 months ago

Hi, I would like to ask about the 3-axis Delta with the Commonplace Robotics controllers. I am working on this model now and I have established a connection with it through Ethernet. I would like to ask which packages from this repo could be used for it? I am looking for any kind of ROS integration even if it just allows connectivity to the robot and basic TCP/IP packets exchange through a ROS node. And if one exists, how could it be used.

cpr-fer commented 11 months ago

Hi @YazanRihan ,

For the interfacing with the hardware through ROS2 you can use the irc_ros_hardware package. It will provide you with means of interfacing through the ros2_control hardwareinterface. On top of that you will need to use some controllers, I am not certain what kind is best for a delta robot but I would guess some type of position controller would be used. Depending if you use CPRCANv2 or the CRI Ethernet Interface you might need to use a different controller type, as velocity control is the preferred (read: only) way of using the modules with ROS as of now.

For inspiration you can look into the irc_ros_bringup package. The launchfiles and config files should help you get an idea how the irc_ros_hardware interface is used. If something (or everything) is unclear please let me know and I'll try my best to explain and improve the documentation :)

Now for the general integration of delta robots in ROS, I can't really help you with that as I have no idea myself, if you have questions how to model the delta in urdf files your best bet is to find other projects that achieved that already

YazanRihan commented 11 months ago

Hi @cpr-fer ,

Thank you so much for you help.

I will do the tips you gave me. I just would like to also ask about the position controllers. What would they achieve for me and what are the type of position controllers you would advise me to look for.

cpr-fer commented 11 months ago

Hi @YazanRihan

So the controllers are set in the bringup package, e.g. like this (https://github.com/CommonplaceRobotics/iRC_ROS/blob/humble/irc_ros_bringup/config/controller_igus_rebel_6dof.yaml):

<namespace>/controller_manager:
  ros__parameters:
    update_rate: 100 # 100Hz for CAN and 10Hz for CRI

    joint_state_broadcaster:
      type: joint_state_broadcaster/JointStateBroadcaster

    joint_trajectory_controller:
      type: joint_trajectory_controller/JointTrajectoryController

The <namespace>/ part is required by the way the launch files work for supporting multiple robots. If you build your own launch files you may remove this part in the controller config and launch file.

More controller info can be found here: https://control.ros.org/master/doc/ros2_controllers/doc/controllers_index.html

Since the interaction between the different joints on a delta robot you might need to write your own one. I can look a bit into this next week as well, but I need to do some googling first