{"id":1293,"date":"2024-09-03T16:51:12","date_gmt":"2024-09-03T14:51:12","guid":{"rendered":"https:\/\/erdalpekel.de\/?p=1293"},"modified":"2024-09-03T17:18:39","modified_gmt":"2024-09-03T15:18:39","slug":"pick-and-place-with-semantic-instance-segmentation-in-omniverse-isaac","status":"publish","type":"post","link":"https:\/\/erdalpekel.de\/?p=1293","title":{"rendered":"Pick and Place with Semantic Instance Segmentation in Omniverse Isaac"},"content":{"rendered":"\n<p>In this blog post, we will pick and place simple cubes onto a conveyor belt with the Panda robotic arm in NVIDIA&#8217;s Omniverse Isaac simulation environment. We will detect the cubes with an RGB camera and Isaac Sim&#8217;s built-in semantic instance segmentation algorithm. In our latest contributions (<a href=\"https:\/\/erdalpekel.de\/?p=1170\" target=\"_blank\" rel=\"noreferrer noopener\">1<\/a>, <a href=\"https:\/\/erdalpekel.de\/?p=1256\" target=\"_blank\" rel=\"noreferrer noopener\">2<\/a>), we added the Panda robotic arm to Isaac Sim and controlled it with MoveIt! via <code>ros_bridge<\/code>. We also attached a custom modeled suction gripper part to the arm. In the resulting simulation, the robotic arm is able to pick a cube that the camera has detected and place it on the conveyor belt for carrying.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Simulation Scene<\/h2>\n\n\n\n<p>We will start this post by introducing our new simulation scene. It consists of a conveyor belt, the Panda robotic arm, a shelf surface, a cube and an RGB camera. The scene runs the conveyor belt and simulates an RGB camera that captures the shelf surface for cubes that can be picked by the robotic arm. <\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f61c80c24a9&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f61c80c24a9\" class=\"wp-block-image size-large wp-lightbox-container\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"599\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/scene-1024x599.png\" alt=\"Simulation Scene with Conveyor Belt and Robotic Arm\" class=\"wp-image-1302\" srcset=\"https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/scene-1024x599.png 1024w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/scene-300x175.png 300w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/scene-768x449.png 768w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/scene-1536x898.png 1536w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/scene-1000x585.png 1000w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/scene-230x135.png 230w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/scene-350x205.png 350w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/scene-480x281.png 480w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/scene.png 1768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Simulation Scene with Conveyor Belt and Robotic Arm<\/figcaption><\/figure>\n\n\n\n<p>We have labeled the important asset of the simulation scene in the image above:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>RGB Camera: The RGB camera captures the shelf surface and segments cubes that are semantically labeled.<\/li>\n\n\n\n<li>Conveyor Belt: We built the conveyor with the <a href=\"https:\/\/docs.omniverse.nvidia.com\/isaacsim\/latest\/features\/warehouse_logistics\/ext_omni_isaac_conveyor.html\" target=\"_blank\" rel=\"noreferrer noopener\">Conveyor Belt Utility<\/a> in Isaac Sim. It carries the cube to the shelf surface.<\/li>\n\n\n\n<li>Cube with Semantic Labeling: A cube with semantic labeling falls onto the conveyor belt and is carried to the shelf surface.<\/li>\n\n\n\n<li>Panda Robotic Arm: The robotic arm has a surface gripper attached to its last link. This enables pick and place task execution for cubes that landed on the shelf surface. It will place the cube onto the conveyor belt when it receives the command.<\/li>\n\n\n\n<li>Shelf Surface for Pick-up: The shelf surface serves as an intermediate storage location for the cubes where the camera can detect and segment them from the top.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">User Interface<\/h2>\n\n\n\n<p>We have extended the user interface of our Isaac Sim extensions to enable the aforementioned workflow of picking a cube form the shelf surface with the robotic arm and placing it onto the conveyor belt.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f61c80c32ad&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f61c80c32ad\" class=\"wp-block-image size-full wp-lightbox-container\"><img decoding=\"async\" width=\"365\" height=\"367\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-12-29-12.png\" alt=\"Isaac Sim Extension User Interface\" class=\"wp-image-1304\" srcset=\"https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-12-29-12.png 365w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-12-29-12-298x300.png 298w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-12-29-12-150x150.png 150w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-12-29-12-230x231.png 230w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-12-29-12-350x352.png 350w\" sizes=\"(max-width: 365px) 100vw, 365px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Isaac Sim Extension User Interface<\/figcaption><\/figure>\n\n\n\n<p>We added new buttons for added control to our user interface. The robotic arm can now be commanded to the cube and the conveyor belt. It can also be commanded to grasp and release the cube.<\/p>\n\n\n\n<p>The <strong>&#8216;Move to Cube&#8217;<\/strong> button commands the robotic arm to the cube at a grasp pose that is determined at run-time. The position of the cube is determined by the camera via semantic instance segmentation in the background. The scenario class runs the instance segmentation algorithm continuously in the background in order to determine a cube that the Panda robotic arm could approach.<\/p>\n\n\n\n<p>The <strong>&#8216;Move to Conveyor&#8217;<\/strong> button commands the robotic arm to a predetermined position over the conveyor belt. We defined this position to be to the left of the Panda arm. It is specified at <strong>&#8216;\/World\/cube_dropoff_position&#8217;<\/strong> in our scene.<\/p>\n\n\n\n<p>The <strong>&#8216;Grasp&#8217;<\/strong> and <strong>&#8216;Release&#8217;<\/strong> buttons are implemented with the Surface Gripper API in Omniverse Isaac Sim and hence are not related to the ROS interface.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Semantic Instance Segmentation<\/h2>\n\n\n\n<p>The Semantic instance segmentation segmentation is displayed in the gallery below. On the left, you can see the RGB camera&#8217;s default view. On the right, we displayed its instance segmentation filter. You can see that the cube is segmented in cyan color.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f61c80c4411&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f61c80c4411\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"923\" height=\"1013\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"1306\" src=\"https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-00-56.png\" alt=\"\" class=\"wp-image-1306\" srcset=\"https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-00-56.png 923w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-00-56-273x300.png 273w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-00-56-768x843.png 768w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-00-56-230x252.png 230w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-00-56-350x384.png 350w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-00-56-480x527.png 480w\" sizes=\"(max-width: 923px) 100vw, 923px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Camera View<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f61c80c4e72&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f61c80c4e72\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"923\" height=\"1013\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"1307\" src=\"https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-01-04.png\" alt=\"\" class=\"wp-image-1307\" srcset=\"https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-01-04.png 923w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-01-04-273x300.png 273w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-01-04-768x843.png 768w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-01-04-230x252.png 230w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-01-04-350x384.png 350w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-01-04-480x527.png 480w\" sizes=\"(max-width: 923px) 100vw, 923px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Instance Segmetation<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p>The camera can segment the semantic class of the cube if it is added to its model definition in the scene as displayed in the figure below. The semantic type is class and the semantic data is <\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f61c80c63ea&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f61c80c63ea\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"771\" height=\"100\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-16-31.png\" alt=\"Cube Semantic Class Type\" class=\"wp-image-1308\" srcset=\"https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-16-31.png 771w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-16-31-300x39.png 300w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-16-31-768x100.png 768w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-16-31-230x30.png 230w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-16-31-350x45.png 350w, https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-03-13-16-31-480x62.png 480w\" sizes=\"(max-width: 771px) 100vw, 771px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Cube Semantic Class Type<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">ROS Interface<\/h2>\n\n\n\n<p>We will expand the <a href=\"https:\/\/github.com\/erdalpekel\/isaac_moveit_sample\" target=\"_blank\" rel=\"noreferrer noopener\">ROS interface package<\/a> by adding a new node for motion planning via MoveIt! C++ API  to our existing package. We will establish the communication between the Isaac Sim extension and the mentioned ROS node with an action message type defined inside a new ROS package called <code><a href=\"https:\/\/github.com\/erdalpekel\/isaac_moveit_msgs\" target=\"_blank\" rel=\"noreferrer noopener\">isaac_moveit_msgs<\/a><\/code>. With the new action type, we will send a desired goal pose for the Panda robotic arm to the new ROS node:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">geometry_msgs\/PoseStamped goal\n---\nbool success\n---<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Results<\/h2>\n\n\n\n<p>On the ROS side, the simulation can be run by building the ROS workspace and running the launch file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">mkdir -p ~\/isaac_moveit_ws\/src\ncd ~\/isaac_moveit_ws\/src\ngit clone https:\/\/github.com\/erdalpekel\/franka_description.git\ngit clone https:\/\/github.com\/erdalpekel\/isaac_moveit_msgs.git\ngit clone https:\/\/github.com\/erdalpekel\/isaac_moveit_sample.git\ncd ..\ncolcon build\nsource install\/setup.bash\nros2 launch isaac_moveit_sample simulation.launch.py<\/code><\/pre>\n\n\n\n<p>The Isaac Sim extension can be run by adding its path to the extensions and opening the extension from the menu bar after enabling autoload. The path <code>~\/isaac_moveit_ws\/install\/setup.bash<\/code> needs to be sourced in the <code>~\/.bashrc<\/code> file. <\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f61c80c713e&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f61c80c713e\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1511\" height=\"985\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/erdalpekel.de\/wp-content\/uploads\/2024\/09\/output.gif\" alt=\"Pick and Place Result\" class=\"wp-image-1319\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>The custom <a href=\"https:\/\/github.com\/erdalpekel\/isaac_moveit_sample\" target=\"_blank\" rel=\"noreferrer noopener\">ROS package<\/a> as well as the <a href=\"https:\/\/github.com\/erdalpekel\/IsaacMoveitExtension\">Isaac Sim extension<\/a> repositories are available in my <a href=\"https:\/\/github.com\/erdalpekel\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub profile<\/a>.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blog post, we will pick and place simple cubes onto a conveyor belt with the Panda robotic arm in NVIDIA&#8217;s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1301,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,34,9,33,37,5,3,8,7,4],"tags":[],"class_list":["post-1293","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","category-isaac","category-moveit","category-omniverse","category-pick-and-place","category-robot-operating-system-ros","category-robotics","category-ros","category-simulation","category-software-development"],"_links":{"self":[{"href":"https:\/\/erdalpekel.de\/index.php?rest_route=\/wp\/v2\/posts\/1293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/erdalpekel.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/erdalpekel.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/erdalpekel.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/erdalpekel.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1293"}],"version-history":[{"count":27,"href":"https:\/\/erdalpekel.de\/index.php?rest_route=\/wp\/v2\/posts\/1293\/revisions"}],"predecessor-version":[{"id":1332,"href":"https:\/\/erdalpekel.de\/index.php?rest_route=\/wp\/v2\/posts\/1293\/revisions\/1332"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/erdalpekel.de\/index.php?rest_route=\/wp\/v2\/media\/1301"}],"wp:attachment":[{"href":"https:\/\/erdalpekel.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/erdalpekel.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/erdalpekel.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}