Git Product home page Git Product logo

simdata's Introduction

simData

This is the dataset of our RA-L work 'Learning Affordance Segmentation for Real-world Robotic Manipulation via Synthetic Images'. The detector jointly learns detection and affordance map prediction in an unsupervised manner via synthetic data. The original paper can be found here. The final version will be updated after publication process.

drawing

If you find it helpful for your research, please consider citing:

@inproceedings{chu2019learning,
  title = {Learning Affordance Segmentation for Real-world Robotic Manipulation via Synthetic Images},
  author = {F. Chu and R. Xu and P. A. Vela},
  journal = {IEEE Robotics and Automation Letters},
  year = {2019},
  volume = {4},
  number = {2},
  pages = {1140-1147},
  DOI = {10.1109/LRA.2019.2894439},
  ISSN = {2377-3766},
  month = {April}
}

Usage

Please follow the instructions in Image Saver

This repo contains sketchup 3D models from 3D warehouse, compatible with UMD affordance dataset. This dataset is collected for simulation in Gazebo to automatically generate affordance annotations.

Download processed dataset

If you simply want to use the dataset directly:

Note: dataset with segmentation/classification/bounding box groundtruth in VOC2012 format

View in Gazebo (gui)

  1. put the .dae model under ~/.gazebo/models/MODEL_NAME/meshes/
  2. create a model.config as below in ~/.gazebo/models/MODEL_NAME/
<?xml version="1.0"?>
<model>
  <version>1.0</version>
  <name>scissors</name>
  <sdf version="1.4">model.sdf</sdf>

  <description>
    A model of for testing
  </description>
</model>
  1. create a model.sdf as below in ~/.gazebo/models/MODEL_NAME/
<?xml version='1.0'?>
<sdf version="1.4">
<model name="MODEL_NAME">
  <pose>0 0 0.0 0 0 0</pose>
  <static>true</static>
    <link name="link">
      <inertial>
        <mass>1.0</mass>
        <inertia> <!-- inertias are tricky to compute -->
          <!-- http://gazebosim.org/tutorials?tut=inertia&cat=build_robot -->
          <ixx>0.083</ixx>       <!-- for a box: ixx = 0.083 * mass * (y*y + z*z) -->
          <ixy>0.0</ixy>         <!-- for a box: ixy = 0 -->
          <ixz>0.0</ixz>         <!-- for a box: ixz = 0 -->
          <iyy>0.083</iyy>       <!-- for a box: iyy = 0.083 * mass * (x*x + z*z) -->
          <iyz>0.0</iyz>         <!-- for a box: iyz = 0 -->
          <izz>0.083</izz>       <!-- for a box: izz = 0.083 * mass * (x*x + y*y) -->
        </inertia>
      </inertial>
      <collision name="collision">
        <geometry>
          <box>
            <size>1 1 1</size>
          </box>
        </geometry>
      </collision>
      <visual name="visual">
        <geometry>
          <mesh>
            <uri>model://MODEL_NAME/meshes/model.dae</uri>
            <scale>0.001 0.001 0.001</scale>
          </mesh>
        </geometry>
      </visual>
    </link>
  </model>
</sdf>
  1. open Gazebo roscore & rosrun gazebo_ros gazebo and you can insert the model

Add/Delete in Gazebo (script)

  1. follow step 1&2&3 as above to prepare the model
  2. open an empty world roscore & rosrun gazebo_ros gazebo
  3. add model
rosrun gazebo_ros spawn_model -sdf -z 1 -file /home/USERNAME/.gazebo/models/MODEL_NAME/model.sdf -model MODEL_NAME
  1. delete model
rosservice call gazebo/delete_model '{model_name: MODEL_NAME}'

arg in spawn_model can be used to specify 6DOF of the position for placing

Connect ROS to Gazebo kinect

please follow this post

Contact

If you encounter any questions, please contact me at fujenchu[at]gatech[dot]edu

simdata's People

Contributors

acmiyaguchi avatar fujenchu avatar jadkisson6 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

simdata's Issues

Segmentation annotation

Hi, thanks very much for making the dataset public. I noticed that there are object categoy and bounding box annotations in the xml files, but no segmentation annotaion is provided. May I ask where is the segmentation annotation? Thanks!

<annotation>
  <folder>GAZEBOdataset</folder>
 <filename>0.jpg</filename>
  <size>
    <width>640</width>
    <height>480</height>
    <depth>3</depth>
  </size>
  <object>
    <name>bowl</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <difficult>0</difficult>
    <bndbox>
      <xmin>208</xmin>
      <ymin>240</ymin>
      <xmax>328</xmax>
      <ymax>344</ymax>
    </bndbox>
  </object>
</annotation>

Add realistic inertial values to use models in physical simulations

When we load models into the pick-and-place gazebo environment, they drop down onto the table and move around in a very “floaty” fashion. This is because the physical properties are not set correctly. We fixed the initial problem with these models to be able to even use them correctly in the environment by setting a collision mesh. We need to fix the inertial values so things look correct.

See the comment here: #2 (comment)

I think this is good enough, although we might want to go in and manually compute inertial values for items in the warehouse. This script uses pymeshlab to calculate inertial values based on a mesh and an initial weight:

https://github.com/vonunwerth/MeshLabInertiaToURDF

We could take plausible weights for each class of object, compute the intertial values, and then fill in the values.

We need to insert the values into the template (or modify the resulting rendered model with a script) in this CMakeList

simData/CMakeLists.txt

Lines 11 to 23 in bdc5388

foreach(SUBDIR ${SUBDIRS})
get_filename_component(MODEL_NAME ${SUBDIR} NAME)
set(MODEL_DIR ${BUILD_MODEL_DIR}/${MODEL_NAME})
# create the description.sdf for the model
configure_file(
${PROJECT_SOURCE_DIR}/description.sdf.template
${MODEL_DIR}/sdf/description.sdf
)
# move mesh files
file(GLOB MESHES ${SUBDIR}/*.dae)
file(COPY ${MESHES} DESTINATION ${MODEL_DIR}/mesh)

We also want to setup a testing environment and load the models into gazebo to see how they behave.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.