From cf7a9ce322d5ad3a3fc7a16cb7612707db067a32 Mon Sep 17 00:00:00 2001 From: Luke Schmitt Date: Tue, 23 Jul 2024 10:20:28 -0500 Subject: [PATCH] Add ros2 record and playback docs --- docs/_data/record_and_playback_ros2.csv | 18 ++++ docs/ros2_packages.rst | 1 + .../images/xsarm_puppet_single_flowchart.png | Bin 0 -> 79780 bytes docs/ros2_packages/record_and_playback.rst | 78 ++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 docs/_data/record_and_playback_ros2.csv create mode 100644 docs/ros2_packages/images/xsarm_puppet_single_flowchart.png create mode 100644 docs/ros2_packages/record_and_playback.rst diff --git a/docs/_data/record_and_playback_ros2.csv b/docs/_data/record_and_playback_ros2.csv new file mode 100644 index 0000000..959fb66 --- /dev/null +++ b/docs/_data/record_and_playback_ros2.csv @@ -0,0 +1,18 @@ +"Argument","Description","Default","Choices" +"robot_model","model type of the Interbotix Arm such as ``wx200`` or ``rx150``.","","``px100``, ``px150``, ``rx150``, ``rx200``, ``wx200``, ``wx250``, ``wx250s``, ``vx250``, ``vx300``, ``vx300s``, ``mobile_px100``, ``mobile_wx200``, ``mobile_wx250s``, ``aloha_wx250s``, ``aloha_vx300s``" +"robot_name","name of the robot (typically equal to ``robot_model``, but could be anything).","LaunchConfig\(``robot_model``\)","" +"use_rviz","launches RViz if set to ``true``.","``true``","``true``, ``false``" +"record_or_playback","'record' to record joint commands while physically manipulating the arm to a bagfile or 'playback' to play-back joint commands from a bagfile to a torqued on arm.","","``record``, ``playback``" +"bag_name","Desired ROS bag file name.","LaunchConfig\(``robot_name``\) + '_commands'","" +"launch_driver","``true`` if xsarm_control should be launched - set to ``false`` if you would like to run your own version of this file separately.","``true``","``true``, ``false``" +"xs_driver_logging_level","set the logging level of the X-Series Driver.","``INFO``","``DEBUG``, ``INFO``, ``WARN``, ``ERROR``, ``FATAL``" +"use_sim","if ``true``, the DYNAMIXEL simulator node is run; use RViz to visualize the robot's motion; if ``false``, the real DYNAMIXEL driver node is run.","``false``","``true``, ``false``" +"base_link_frame","name of the 'root' link on the arm; typically ``base_link``, but can be changed if attaching the arm to a mobile base that already has a ``base_link`` frame.","``base_link``","" +"use_gripper","if ``true``, the default gripper is included in the ``robot_description``; if ``false``, it is left out; set to ``false`` if not using the default gripper.","``true``","``true``, ``false``" +"show_ar_tag","if ``true``, the AR tag mount is included in the ``robot_description``; if ``false``, it is left out; set to ``true`` if using the AR tag mount in your project.","``false``","``true``, ``false``" +"show_gripper_bar","if ``true``, the gripper_bar link is included in the ``robot_description``; if ``false``, the gripper_bar and finger links are not loaded. Set to ``false`` if you have a custom gripper attachment.","``true``","``true``, ``false``" +"show_gripper_fingers","if ``true``, the gripper fingers are included in the ``robot_description``; if ``false``, the gripper finger links are not loaded. Set to ``false`` if you have custom gripper fingers.","``true``","``true``, ``false``" +"use_world_frame","set this to ``true`` if you would like to load a 'world' frame to the ``robot_description`` which is located exactly at the 'base_link' frame of the robot; if using multiple robots or if you would like to attach the 'base_link' frame of the robot to a different frame, set this to ``false``.","``true``","``true``, ``false``" +"external_urdf_loc","the file path to the custom urdf.xacro file that you would like to include in the Interbotix robot's urdf.xacro file.","''","" +"hardware_type","configures the ``robot_description`` to use the actual hardware, fake hardware, or hardware simulated in Gazebo.","``actual``","``actual``, ``fake``, ``gz_classic``" +"robot_description","URDF of the robot; this is typically generated by the xacro command.","Command(FindExec\(``xacro``\) + ' ' + LocalVar('FindPackageShare\(pkg= ``interbotix_xsarm_descriptions``\) + 'urdf' + LaunchConfig\(``robot_model``\)') + '.urdf.xacro ' + 'robot_name:=' + LaunchConfig\(``robot_name``\) + ' ' + 'base_link_frame:=' + LaunchConfig\(``base_link_frame``\) + ' ' + 'use_gripper:=' + LaunchConfig\(``use_gripper``\) + ' ' + 'show_ar_tag:=' + LaunchConfig\(``show_ar_tag``\) + ' ' + 'show_gripper_bar:=' + LaunchConfig\(``show_gripper_bar``\) + ' ' + 'show_gripper_fingers:=' + LaunchConfig\(``show_gripper_fingers``\) + ' ' + 'use_world_frame:=' + LaunchConfig\(``use_world_frame``\) + ' ' + 'external_urdf_loc:=' + LaunchConfig\(``external_urdf_loc``\) + ' ' + 'hardware_type:=' + LaunchConfig\(``hardware_type``\) + ' ')","" \ No newline at end of file diff --git a/docs/ros2_packages.rst b/docs/ros2_packages.rst index 965aefb..b0f3913 100644 --- a/docs/ros2_packages.rst +++ b/docs/ros2_packages.rst @@ -40,3 +40,4 @@ those packages is below in order of importance: ros2_packages/moveit_interface_and_api.rst ros2_packages/python_demos.rst ros2_packages/joystick_control.rst + ros2_packages/record_and_playback.rst diff --git a/docs/ros2_packages/images/xsarm_puppet_single_flowchart.png b/docs/ros2_packages/images/xsarm_puppet_single_flowchart.png new file mode 100644 index 0000000000000000000000000000000000000000..6e088087ed557ac4fee981118992d9996dcbbc2b GIT binary patch literal 79780 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 z zW5LlOWDnSpf-5OW?l0j&?vUAkdTOk*qrDenN8Rs!M(|PhEey?~(l3Db^Dd8BtxY@& zSm6w1zx#+7N-u;T1^##mCs+>h1eqR*V(#jqF=RWR0qp3+Q!$ubhR#U*E7*6Vvs*~E z@YcdB@!t#7D(PT>k@2)glp)tJZ$daKBrdR}5QzX|Dg4^IF8(gyf<@8CD6 zRlB?fi@*Pi1*lVD--x&XoJkdZdkptS`5nHE1W^qvD1;V4gUhqmBI#KE?JBzn;8%An zjHMO^_(gm#t%4{b_zqjQ{uL1;H}~6r5}perT#viTz0V(zG=R^g_wq6HR@q|upX>{N5WCz)8&7^Xfi?y@nbI zi~lu*j&>PM917Vo%DhKy0zrrzszjBd_tHuJnQe0*cJKtm&WbpV;HBG3eIvb12LHQ- z(#C>6=3!Bcw)#(=dK&2E+(E14CTrOih!%eBV9s_fzo2*z$U}aSkue8-vJ!tqVn;GdbEhW5KXh+1pf81k1hhUSVwyVS%J z!r;sKvy7eu_rrk#9Rk>q`4qmX!QBAoall zXpczvt4d~f9G9K>iI9u_U?&@?GIXd-e6#9J2`(egq|uOSgiaM~`I_nI=!}dNtDj+$ zpy@;dO)^fIIzSG~b~L;q8k#*1WHc^7NgXSX(BomuHJko`is7b{4xOh8Nk?ns65{vY z#__y!BM6^8TUlHwyzv|hd^~wfOfTtkicmc8Ae77F4Qy;eLI#N%G{|CUYm#Hlw+~=S zlS+X?N?EzZ5AZw;ZGEuZi8W{b&kI*~yR(C5M0j`wr$>u)!osAE4f+m;B2-k*+b%_} zjB4)If}(=R3Y9WC!m;U`x2HHrL<32Ri%0Amrba{{;R`G;j7CRBK3ENAvX~`=qbR%p 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

!?B54S{4;gH*}Up=7<#}YzQFbfCynf&!EdRWXY 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 literal 0 HcmV?d00001 diff --git a/docs/ros2_packages/record_and_playback.rst b/docs/ros2_packages/record_and_playback.rst new file mode 100644 index 0000000..4fe8d0a --- /dev/null +++ b/docs/ros2_packages/record_and_playback.rst @@ -0,0 +1,78 @@ +=================== +Record And Playback +=================== + +.. raw:: html + + + + View Package on GitHub + + +Overview +======== + +Imagine that you would like to have the robot arm perform some motions to achieve a specific task. +One way of doing this would be to create a `JointTrajectory`_ of desired joint positions at specific times which you could then command the robot. +Alternatively (and much less time consuming), you could manually manipulate the arm to do the specific motions and record them in a ROS bag file. +Then, you could 'play back' the bag file as many times as you like to repeat the motions on the same robot later. +This 'record/playback' feature is made possible by the **xsarm_puppet_single**. + +.. _`JointTrajectory`: http://docs.ros.org/latest/api/trajectory_msgs/html/msg/JointTrajectory.html + +Structure +========= + +As shown below, the `interbotix_xsarm_puppet` package builds on top of the `interbotix_xsarm_control` package. +To get familiar with that package, please look at its README. +The nodes specific to this package are described below. + +.. image:: images/xsarm_puppet_single_flowchart.png + :align: center + +The above diagram shows the structure for the 'record/playback' feature. +The two nodes involved are: + +- **xsarm_puppet_single** - responsible for reading the arm's current joint states and publishing them as position commands to the ``//commands/joint_group`` and ``//commands/joint_single`` topics. + Conveniently, as the arm is torqued off so that the user can manipulate it, the joints will not act upon these commands +- **record** - responsible for recording the two topics mentioned above in a bag file so that they can be played back later +- **play** - responsible for playing back the bag file mentioned above with the arm in a torqued on state; the playback is delayed 3 seconds to give time for the **xs_sdk** node to load + +Usage +===== + +To record joint commands while manipulating a single robot (let's say the PincherX-150), type the following in a terminal: + +.. code-block:: console + + $ ros2 launch interbotix_xsarm_puppet xsarm_puppet_single.launch.py robot_model:=px150 record_or_playback:=record + +Once the nodes finish launching, manually manipulate the arm and gripper through your desired motions. +When done, return the robot to its initial starting position and :kbd:`Ctrl` + :kbd:`C` the nodes so that rosbag stops recording. +By default, the bag file will be saved in the `bag`_ directory. +To playback the motion, type the following in the terminal: + +.. _`bag`: https://github.com/Interbotix/interbotix_ros_manipulators/blob/rolling/interbotix_ros_xsarms/examples/interbotix_xsarm_puppet/bag + +.. code-block:: console + + $ ros2 launch interbotix_xsarm_puppet xsarm_puppet_single.launch.py robot_model:=px150 record_or_playback:=playback + +If you specified a custom bag file name, make sure to include the name in the above command as well. +When the bag file finishes playing, you can restart it by navigating to the directory where the bag file is located and in a terminal, type: + +.. code-block:: console + + $ ros2 bag play + +The robot should now repeat the motions. +When done, :kbd:`Ctrl` + :kbd:`C` to stop all nodes. +To see other command line arguments for the 'xsarm_puppet_single.launch.py' file, refer to the table below. + +.. csv-table:: + :file: ../_data/record_and_playback_ros2.csv + :header-rows: 1 + :widths: 20, 60, 20, 20