## 2 Methodologies  
Similarly to the Columbia Grasp Database by [PERSON] et al. our synthetic dataset generation pipeline also utilizes Graspit for determining grasps qualities. Figure 1 shows the proposed synthetic dataset generation pipeline. As it can be seen, Graspitt is used to automatically acquire grasps for the object in two scenarios. The first one is the pick scenario, from where Graspit! provides multiple possible grasps for picking the object. The second scenario is the placing, where Graspit! provides grasps which are suitable for placing the object. For our experiments, we use a Franka Emika Panda robot, its signature parallel jaw gripper, and an object made up of simple box primitives. Our experiment mimics an insertion-type assembly subtask, where the object should be grasped at the thicker part. By chaining such pick-and-place setups according to the assembly order one after another, a more complex assembly could also be similarly composed. The required inputs in this setup are the 3D models of objects, the gripper model, and knowledge of the assembly process (location of parts relative to each other and assembly order). The here-discussed pipeline incorporates Graspit! with the robot operating system (ROS), an open-source robotics framework that provides useful tools for creating and managing robotic applications [15]. With the help of the Graspit! ROS interface (Available online at [[https://github.com/graspit-simulator/graspit_interface](https://github.com/graspit-simulator/graspit_interface)]([https://github.com/graspit-simulator/graspit_interface](https://github.com/graspit-simulator/graspit_interface)), accessed on 12 December 2022) in conjunction with Graspit Commander (Available online at [[https://github.com/graspit-simulator/graspit_command](https://github.com/graspit-simulator/graspit_command)]([https://github.com/graspit-simulator/graspit_command](https://github.com/graspit-simulator/graspit_command)), accessed on 12 December 2022), one can automate the Graspit! grasp planning process using Python programming language and ROS. We store the outputs of the Graspit! grasp planning in multiple JSON files, where the name of the JSON file reflects whether the contained grasps are for the pick or the place scenario. The files contain the object pose, the list of search energies from Graspit! (these can be used to make a hierarchy of predicted grasps), and a list of predicted grasp poses. Both  
Figure 1: Synthetic data generation and GQCNN training pipeline. the object pose and the grasp poses are relative to the world frame, and they are made up of a 3D vector for object/gripper location and a quaternion (in \([x,y,z,w]\) format) for object/gripper orientation. For generating the synthetic depth images, we use Blender, an open-source 3D computer graphics software [16]. Blender provides a Python API that offers programmatic control over the rendering and the scene, which our solution takes advantage of to automate all the necessary processes inside Blender. Through this API, we modify the intrinsic and extrinsic parameters of the camera in Blender so they match the \"real-world\" calibrated camera. In our experiments, we use the camera parameters for the PrimeSense camera provided with the GQCNN implementation (Available online at [[https://github.com/BerkeleyAutomation/gqcnn](https://github.com/BerkeleyAutomation/gqcnn)]([https://github.com/BerkeleyAutomation/gqcnn](https://github.com/BerkeleyAutomation/gqcnn)), accessed on 12 December 2022). After the camera setup, the grasp poses which were saved from Graspit! are loaded, and all the necessary transformations are performed on them to represent all the pick and place grasps relative to the object frame in Blender, regardless of its placement in Graspit! and Blender. After this, based on geometric proximity, the pick grasps are sorted into two groups. The group of pick grasps with a corresponding place grasp is classified as valid, while the pick grasps with no corresponding place grasps are classified as invalid.