Perception tutorial update - #178
Conversation
| You should now see something like this: | ||
|
|
||
| .. image:: preprocess_3d_demo.png | ||
| :width: 700px |
There was a problem hiding this comment.
This is not good enough.
The example should leave the point cloud that is used for the octomap as-is and spawn a (finite-length) cylinder CollisionObject that can be used as the object model to grasp.
mlautman
left a comment
There was a problem hiding this comment.
This is a good start. Great job!
This needs significant cleanup before we can review it for content. Ping me when it's ready for another pass.
|
|
||
| If you set the initial and the final location of the robot in a way that there is no straight path between them, then the planner will automatically avoid the octomap and plan around it. | ||
|
|
||
| .. image:: obstacle_avoidance.gif |
There was a problem hiding this comment.
This gif is unnecessary and distracts from the tutorial itself. Please remove
There was a problem hiding this comment.
based on the discussion I have removed the text
| :width: 700px | ||
|
|
||
| Getting Started | ||
| =============== |
There was a problem hiding this comment.
See above. Please match syntax to other tutorials for consistency
| add_subdirectory(doc/state_display) | ||
| add_subdirectory(doc/interactivity) | ||
| add_subdirectory(doc/pick_place) | ||
| add_subdirectory(doc/perception_configuration) |
There was a problem hiding this comment.
Please rename directory perception_pipeline to match the name of the tutorial itself
| ================================= | ||
| ################################# | ||
| Perception Pipeline Tutorial | ||
| ################################# |
There was a problem hiding this comment.
Please use the same hierarchy for headers as in every other tutorial. This should be ===== to match other tutorials. All section titles below should be adjusted appropriately. I added notes for most of them but be sure to check the rest of your changes to ensure consistency
| If you haven't already done so, make sure you've completed the steps in `Getting Started <../getting_started/getting_started.html>`_. | ||
|
|
||
| Configuration | ||
| ============= |
There was a problem hiding this comment.
See above. Please match syntax to other tutorials for consistency
| seg.setMethodType(pcl::SAC_RANSAC); | ||
| seg.setNormalDistanceWeight(0.1); | ||
| seg.setMaxIterations(10000); | ||
| seg.setDistanceThreshold(0.05); |
There was a problem hiding this comment.
Add comments when using magic numbers
| seg.setNormalDistanceWeight(0.1); | ||
| seg.setMaxIterations(10000); | ||
| seg.setDistanceThreshold(0.05); | ||
| seg.setRadiusLimits(0, 1); |
There was a problem hiding this comment.
Add comments when using magic numbers
| pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_cylinder(new pcl::PointCloud<pcl::PointXYZRGB>()); | ||
| extract.filter(*cloud_cylinder); | ||
| if (cloud_cylinder->points.empty()) | ||
| std::cerr << "Can't find the cylindrical component." << std::endl; |
| std::cerr << "Can't find the cylindrical component." << std::endl; | ||
| else | ||
| { | ||
| std::cerr << "PointCloud representing the cylindrical component: " << cloud_cylinder->points.size() |
| --------------- | ||
| In addition to the steps given in `Getting Started <../getting_started/getting_started.html>`_, you will also need to install the ``perception_pcl`` package: :: | ||
|
|
||
| sudo apt install ros-kinetic-perception-pcl |
There was a problem hiding this comment.
Add new dependencies to package.xml
|
|
||
| sudo apt install ros-kinetic-perception-pcl | ||
|
|
||
| Running the Code |
There was a problem hiding this comment.
In general we've been standardizing to a show then tell model. ie. Demo's first then, explanations second
There was a problem hiding this comment.
need to update the preprocessing section, will update this with that
There was a problem hiding this comment.
Is this solved?
There was a problem hiding this comment.
The other tutorials put the launch commands for running the demo at the beginning of the tutorial then they go through the steps for integrating this with their custom robot_moveit_config package. It would be great if you made the necessary changes to ros-planning/panda_moveit_config so that this can be run out of the box with a few commands at the start of the tutorial.
|
I'm excited about this! |
…lated to preprocessing
65f6a55 to
b8b65c0
Compare
b8b65c0 to
3e96e8b
Compare
|
Here the build fail is because of this link Here the kinetic-devel doesnt contain the perpection pipeline name change and this link should work once merged. |
| // ModelCoefficients will hold the parameters using which we can define a cylinder of infinite length. | ||
| // It has a public attribute values of type std::vector< float >. | ||
| // values[0-2] hold a point on the center line of the cylinder. | ||
| // values[3-5] hold direction vector of the z-axis. |
There was a problem hiding this comment.
@mlautman I want to write these to be shown as separate lines in the html. how can that be done?
There was a problem hiding this comment.
Found a workaround for this using raw tags, I hope that is ok
| // radius of cylinder | ||
| cylinder_params.push_back(coefficients_cylinder->values[6]); | ||
| // i,j,k values of the direction vector of z-axis | ||
| cylinder_params.push_back(coefficients_cylinder->values[3]); |
There was a problem hiding this comment.
I don't want to include these lines in the tutorial, is there a way to do that?
There was a problem hiding this comment.
The best way to do this would be to use BEGIN_SUB_TUTORIAL and END_SUB_TUTORIAL to include things you want and exclude things you don't. Check out the Python MoveGroup tutorial for an aggressive example of this method.
mlautman
left a comment
There was a problem hiding this comment.
This is going in the right direction. Ping me when these changes are made for another pass
|
|
||
| <node pkg="rosbag" type="play" name="point_clouds" args="--clock -k $(find moveit_tutorials)/doc/perception_configuration/bags/2018-05-28-07-49-11.bag" /> | ||
| <node pkg="rosbag" type="play" name="point_clouds" args="--clock -k $(find moveit_tutorials)/doc/perception_pipeline/bags/2018-05-28-07-49-11.bag" /> | ||
| <!-- <node pkg="moveit_tutorials" type="add_object" name="adding" /> --> |
There was a problem hiding this comment.
Please remove commented out code. If it needs to be here for some reason, add a comment explaining why
| <node pkg="tf" type="static_transform_publisher" name="to_panda_base" args="0 0 0 0 0.2 1.92 camera_rgb_optical_frame temp_link 100" /> | ||
|
|
||
| <node pkg="rosbag" type="play" name="point_clouds" args="--clock -k $(find moveit_tutorials)/doc/perception_configuration/bags/2018-05-28-07-49-11.bag" /> | ||
| <node pkg="rosbag" type="play" name="point_clouds" args="--clock -k $(find moveit_tutorials)/doc/perception_pipeline/bags/2018-05-28-07-49-11.bag" /> |
| <arg name="debug" value="$(arg debug)"/> | ||
| </include> | ||
|
|
||
| <node pkg="moveit_tutorials" type="cylinder_segment" name="point_cloud_preprocessor" /> |
| box_pose.orientation.z = axis.z() * sin(angle / 2); | ||
| box_pose.orientation.w = cos(angle / 2); | ||
|
|
||
| box_pose.position.x = cylinder_params->at(4); |
There was a problem hiding this comment.
No good reason to use ->at() here. Might as well just reference the index directly. See above comment about passing in a struct rather than a vector.
| #include <moveit_msgs/CollisionObject.h> | ||
|
|
||
| void cloud_cb(const sensor_msgs::PointCloud2ConstPtr& input) | ||
| void add_object(std::vector<double>* cylinder_params) |
There was a problem hiding this comment.
Rename function something like add_cylinder
Also, it is generally bad practice to pass in a vector as the container for some list of inputs. You should create a struct and pass that in.
| extract.filter(*cloud); | ||
| } | ||
|
|
||
| void cloud_cb(const sensor_msgs::PointCloud2ConstPtr& input) |
There was a problem hiding this comment.
much better! Now add a comment for the callback :)
| extractCylinder(cloud, coefficients_cylinder, cloud_normals); | ||
| if (cloud->points.empty()) | ||
| { | ||
| ROS_ERROR_STREAM("Can't find the cylindrical component."); |
| { | ||
| ROS_ERROR_STREAM("Can't find the cylindrical component."); | ||
| } | ||
| else |
There was a problem hiding this comment.
No need for else if you return above
| // radius of cylinder | ||
| cylinder_params.push_back(coefficients_cylinder->values[6]); | ||
| // i,j,k values of the direction vector of z-axis | ||
| cylinder_params.push_back(coefficients_cylinder->values[3]); |
There was a problem hiding this comment.
The best way to do this would be to use BEGIN_SUB_TUTORIAL and END_SUB_TUTORIAL to include things you want and exclude things you don't. Check out the Python MoveGroup tutorial for an aggressive example of this method.
| cylinder_params.push_back(coefficients_cylinder->values[4]); | ||
| cylinder_params.push_back(coefficients_cylinder->values[5]); | ||
| get_coords(cloud, &cylinder_params); | ||
| // for (auto i: cylinder_params) |
|
@Ridhwanluthra This PR is getting really big. Let's get these changes fixed up and merged in before adding new features/content to the tutorial. |
used workaround for new line and code formatting in the tutorial-formatter
* passing struct instead of vector to funcs * variable names improved * comments explaining functions added * other minor fixes
|
@mlautman I think I have handled all the reviews and comments. Could you please give it another pass and see if there is anything else that needs to be done |
|
Where should the bag file be maintained? It is too large to be uploaded on git. Its around 2GB. |
|
I'll take a look in the next few days. Regarding the bag file, check out https://git-lfs.github.com/ and see if you can't get that setup. |
|
I had set that up but had to remove it as it only works for enterprises and is not available for public repos |
mlautman
left a comment
There was a problem hiding this comment.
This is really good! So close.
I feel bad that this is taking so long to get merged but there are still a few things that have to get fixed before then. The biggest blocker is that you will need to make the necessary changes to ros-planning/panda_moveit_config so that these demo's can be run out of the box. Other than that, we need to be a little more specific on the instructions so that someone who is a complete noob can get through the tutorial with their custom robot_moveit_config. Once these two issues and some minor changes are made this should be good to go!
Ping me when you've made the suggested changes and after one more pass we should be good to merge!
| @@ -0,0 +1,56 @@ | |||
| <launch> | |||
There was a problem hiding this comment.
This seems rather redundant. Is there a reason you didn't <include> demo.launch and add the additional nodes specific to this demo?
There was a problem hiding this comment.
I guess I started testing that way and didnt change
There was a problem hiding this comment.
Please refactor when you get a chance
| @@ -0,0 +1,53 @@ | |||
| <launch> | |||
| <param name ="/use_sim_time" value="true"/> | |||
There was a problem hiding this comment.
Same as above. At minimum the common elements should be refactored into a common launch file that is included by each of these two scripts.
| // There are 4 fields and a total of 7 parameters used to define this. | ||
| struct add_cylinder_params | ||
| { | ||
| // Radius of the cylinder. |
There was a problem hiding this comment.
Nit pick: If you use /* comment */ instead of // comment for minor comments like these the auto-generated tutorial tends to look a little better
There was a problem hiding this comment.
This is much better
| moveit_ros_planning_interface | ||
| pluginlib | ||
| geometric_shapes | ||
| pcl_ros |
There was a problem hiding this comment.
@v4hn Is adding this dependency going to be an issue?
| <node pkg="tf" type="static_transform_publisher" name="to_panda_base" args="0 0 0 0 0.2 1.92 camera_rgb_optical_frame temp_link 100" /> | ||
|
|
||
| <!-- Play the rosbag that contains the pointcloud data --> | ||
| <node pkg="rosbag" type="play" name="point_clouds" args="--clock -k $(find moveit_tutorials)/doc/perception_pipeline/bags/2018-05-28-07-49-11.bag" /> |
There was a problem hiding this comment.
I just created a S3 account for hosting this. If you send me this and other large files I can give you permalinks so that users can download them.
| segmentor.setOptimizeCoefficients(true); | ||
| segmentor.setModelType(pcl::SACMODEL_PLANE); | ||
| segmentor.setMethodType(pcl::SAC_RANSAC); | ||
| // run at max 1000 iterations before giving up |
| segmentor.setMethodType(pcl::SAC_RANSAC); | ||
| // run at max 1000 iterations before giving up | ||
| segmentor.setMaxIterations(1000); | ||
| // tolerence for variation from model |
| // tolerence for variation from model | ||
| segmentor.setDistanceThreshold(0.01); | ||
| segmentor.setInputCloud(cloud); | ||
| // Create the segmentation object for the planar model and set all the parameters |
| // Create the segmentation object for the planar model and set all the parameters | ||
| pcl::ModelCoefficients::Ptr coefficients_plane(new pcl::ModelCoefficients); | ||
| segmentor.segment(*inliers_plane, *coefficients_plane); | ||
| // Extract the planar inliers from the input cloud |
| pcl::ExtractIndices<pcl::PointXYZRGB> extract_indices; | ||
| extract_indices.setInputCloud(cloud); | ||
| extract_indices.setIndices(inliers_plane); | ||
| // Remove the planar inliers, extract the rest |
* /**/ comments * refactor launch * details on config storage and use * better dependency management
|
I've uploaded the bag to S3. Please add instructions for downloading to the correct location using wget. (you can assume their workspace is located at |
|
@mlautman does it make sense to create an issue for this problem? |
|
Also, there is no license in this yet. |
|
@Ridhwanluthra Please add the license. Copy it in from one of the other tutorials |
|
|
||
| YAML Configuration file (Point Cloud) | ||
| ------------------------------------- | ||
| +++++++++++++++++++++++++++++++++++++ |
There was a problem hiding this comment.
@Ridhwanluthra are you aware of @mohmadAyman's work relating to setting up 3D sensors moveit/moveit#969
Can both of cross-review these PRs to ensure there is no duplicate or contradictory effort? Thanks!
| +++++++++++++++++++++++++++++++++++++ | ||
|
|
||
| We will have to generate a YAML configuration file for configuring the 3D sensors. Please see `this example file <https://github.com/ros-planning/panda_moveit_config/blob/master/config/sensors_kinect_pointcloud.yaml>`_ for processing point clouds, located in the `panda_moveit_config repository for Kinetic <https://github.com/ros-planning/panda_moveit_config>`_: :: | ||
| We will have to generate a YAML configuration file for configuring the 3D sensors. Please see `this example file <https://github.com/ros-planning/panda_moveit_config/blob/master/config/sensors_kinect_pointcloud.yaml>`_ for processing point clouds, located in the `panda_moveit_config repository for Kinetic <https://github.com/ros-planning/panda_moveit_config>`_. |
There was a problem hiding this comment.
I'd prefer we use the examples that are almost available in the moveit setup assistant:
moveit_setup_assistant/resources/default_config/sensors_3d.yaml
There was a problem hiding this comment.
The challenge with including that would be that it won't work out of the box as we can't directly add that.
There was a problem hiding this comment.
From a naming stand point, would sensors_3d.yaml be better? as more generalized.
There was a problem hiding this comment.
+1 to sensors_3d.yaml for the name
There was a problem hiding this comment.
As of now it matches the files in panda_moveit_config.
depthmap
pointcloud
Also, If the name is same the user will have to delete 1 ffile and then use it. or if its all included in a single file they will have to comment out one of the plugins. Which would lead to unnecessary confusion for a newcomer.
| ros.moveit_ros_planning.planning_scene_monitor: Transform error: Lookup would require extrapolation into the future. Requested time 1527473962.793050157 but the latest data is at time 1527473962.776993978, when looking up transform from frame [panda_link2] to frame [camera_rgb_optical_frame] | ||
| ros.moveit_ros_perception: Transform cache was not updated. Self-filtering may fail. | ||
|
|
||
| We are working on fixing it, it should not break the working of the demo. |
There was a problem hiding this comment.
Is there a Github issue tracking the progress of this problem? Please link to it (and create it if needed)
| @@ -0,0 +1,46 @@ | |||
| #include "ros/ros.h" | |||
| int main(int argc, char **argv) | ||
| { | ||
| ros::init(argc, argv, "bag_publisher_maintain_time"); | ||
| ros::NodeHandle n; |
There was a problem hiding this comment.
nh preferred, or something even longer
| cylinder_params->direction_vec[2]); | ||
| Eigen::Vector3d origin_z_direction(0., 0., 1.); | ||
| Eigen::Vector3d axis; | ||
| double angle; |
There was a problem hiding this comment.
move inline with angle = ...
|
|
||
| /** \brief Given the pointcloud containing just the cylinder, compute its center point and its height and store in | ||
| cylinder_params. | ||
| @param cloud - Pointcloud containning just the cylinder. |
| extract.filter(*cloud); | ||
| } | ||
|
|
||
| void cloud_cb(const sensor_msgs::PointCloud2ConstPtr& input) |
| // END_SUB_TUTORIAL | ||
| if (cloud->points.empty()) | ||
| { | ||
| ROS_ERROR_STREAM("Can't find the cylindrical component."); |
There was a problem hiding this comment.
ROS_ERROR_STREAM_NAMED("file_name", "...
| ROS_ERROR_STREAM("Can't find the cylindrical component."); | ||
| return; | ||
| } | ||
| static bool points_not_found = true; |
There was a problem hiding this comment.
you should avoid static - is it really needed here?
There was a problem hiding this comment.
static is needed here as the function will be called again and again but we want to compute the cylinder params only once and also publish it only once
| add_subdirectory(doc/state_display) | ||
| add_subdirectory(doc/interactivity) | ||
| add_subdirectory(doc/pick_place) | ||
| add_subdirectory(doc/perception_pipeline) No newline at end of file |
There was a problem hiding this comment.
Please add a new line here :)
|
|
||
| YAML Configuration file (Point Cloud) | ||
| ------------------------------------- | ||
| +++++++++++++++++++++++++++++++++++++ |
| /********************************************************************* | ||
| * Software License Agreement (BSD License) | ||
| * | ||
| * Copyright (c) 2012, Willow Garage, Inc. |
There was a problem hiding this comment.
Is there a need to update this?
There was a problem hiding this comment.
yea make it this year and your name
* added tests for running CHOMP in scenes with obstacles into the CHOMP tutorial * added section on Tweaking some of the parameters for CHOMP_under-construction commit * added: CHOMP parameters, difference in plans OMPL/CHOMP, python scripts edited * corrected scripts link * fixed formatting issues * PR changes requested * add_randomness is not used in the CHOMP code * addressed the PR changes requested * fixed python script bugs, removed sleep * minor bug changed the file name * changed class-names to be same as file-name * addressed PR requested changes for python script and tutorial document * addition of correct number of arguments check * added chomp_planner into index.rst and removed ros spin call * fixed print statement typo * fixed travis build errors
Add a description of the controller-specific duration parameters, including a discussion of the difference to the global values, as well as an example how to set them.
* Added tutorial for STOMP Motion planner * addressed PR#185 requested changes * addresses PR suggested changes * placed collision_scene_example.py in collision_environments folder * added section on running STOMP unit tests
* updated move_group_interface tutorial's Cartesian path waypoints (example moveit#4) so path is triangular * updated description of the path
| +++++++++++++++++++++++++++++++++++ | ||
|
|
||
| We will have to generate a YAML configuration file for configuring the 3D sensors. An `example file for processing depth images <https://github.com/ros-planning/panda_moveit_config/blob/master/config/sensors_kinect_depthmap.yaml>`_ can be found in the `panda_moveit_config repository <https://github.com/ros-planning/panda_moveit_config>`_ as well: :: | ||
| We will have to generate a YAML configuration file for configuring the 3D sensors. An `example file for processing depth images <https://github.com/ros-planning/panda_moveit_config/blob/master/config/sensors_kinect_depthmap.yaml>`_ can be found in the `panda_moveit_config repository <https://github.com/ros-planning/panda_moveit_config>`_ as well. |
There was a problem hiding this comment.
This is something I want to ask about since I'm not sure, is it possible to have both plugins working at the same time?
There was a problem hiding this comment.
i don't think so but im not 100% on that
| <rosparam command="load" file="$(find panda_moveit_config)/config/sensors_kinect.yaml" /> | ||
| <rosparam command="load" file="$(find panda_moveit_config)/config/sensors_kinect_pointcloud.yaml" /> | ||
|
|
||
| If you are using depthmap change the name of the yaml file to ``sensors_kinect_depthmap.yaml``. |
There was a problem hiding this comment.
Depending if the perception screen was to be merged first, adding this line would be automated.
There was a problem hiding this comment.
agreed. this tutorial can be simplified by relying on the perception screen
| +++++++++++++++++++++++++++++++++++++ | ||
|
|
||
| We will have to generate a YAML configuration file for configuring the 3D sensors. Please see `this example file <https://github.com/ros-planning/panda_moveit_config/blob/master/config/sensors_kinect_pointcloud.yaml>`_ for processing point clouds, located in the `panda_moveit_config repository for Kinetic <https://github.com/ros-planning/panda_moveit_config>`_: :: | ||
| We will have to generate a YAML configuration file for configuring the 3D sensors. Please see `this example file <https://github.com/ros-planning/panda_moveit_config/blob/master/config/sensors_kinect_pointcloud.yaml>`_ for processing point clouds, located in the `panda_moveit_config repository for Kinetic <https://github.com/ros-planning/panda_moveit_config>`_. |
There was a problem hiding this comment.
+1 to sensors_3d.yaml for the name
| +++++++++++++++++++++++++++++++++++ | ||
|
|
||
| We will have to generate a YAML configuration file for configuring the 3D sensors. An `example file for processing depth images <https://github.com/ros-planning/panda_moveit_config/blob/master/config/sensors_kinect_depthmap.yaml>`_ can be found in the `panda_moveit_config repository <https://github.com/ros-planning/panda_moveit_config>`_ as well: :: | ||
| We will have to generate a YAML configuration file for configuring the 3D sensors. An `example file for processing depth images <https://github.com/ros-planning/panda_moveit_config/blob/master/config/sensors_kinect_depthmap.yaml>`_ can be found in the `panda_moveit_config repository <https://github.com/ros-planning/panda_moveit_config>`_ as well. |
There was a problem hiding this comment.
i don't think so but im not 100% on that
| <rosparam command="load" file="$(find panda_moveit_config)/config/sensors_kinect.yaml" /> | ||
| <rosparam command="load" file="$(find panda_moveit_config)/config/sensors_kinect_pointcloud.yaml" /> | ||
|
|
||
| If you are using depthmap change the name of the yaml file to ``sensors_kinect_depthmap.yaml``. |
There was a problem hiding this comment.
agreed. this tutorial can be simplified by relying on the perception screen
| /********************************************************************* | ||
| * Software License Agreement (BSD License) | ||
| * | ||
| * Copyright (c) 2012, Willow Garage, Inc. |
There was a problem hiding this comment.
yea make it this year and your name
| * copyright notice, this list of conditions and the following | ||
| * disclaimer in the documentation and/or other materials provided | ||
| * with the distribution. | ||
| * * Neither the name of Willow Garage nor the names of its |
| * copyright notice, this list of conditions and the following | ||
| * disclaimer in the documentation and/or other materials provided | ||
| * with the distribution. | ||
| * * Neither the name of Willow Garage nor the names of its |
|
|
||
| // BEGIN_SUB_TUTORIAL param_struct | ||
| // There are 4 fields and a total of 7 parameters used to define this. | ||
| struct addCylinderParams |
There was a problem hiding this comment.
The names of all types — classes, structs, type aliases, enums, and type template parameters — have the same naming convention. Type names should start with a capital letter and have a capital letter for each new word. No underscores.
https://google.github.io/styleguide/cppguide.html#Type_Names
| // angle the point made horizontally- |code_start| atan2(pt.z,pt.x);\ |code_end| |br| | ||
| // angle the point made Vertically- |code_start| atan2(pt.z, pt.y);\ |code_end| |br| | ||
| // Loop over the entire pointcloud. | ||
| for (auto const pt : cloud->points) |
There was a problem hiding this comment.
Longer variable name:
pt -> point
| pointcloud and store the cylinder parameters in coefficients_cylinder. | ||
| @param cloud - Pointcloud whose plane is removed. | ||
| @param coefficients_cylinder - Cylinder parameters used to define an infinite cylinder will be stored here. | ||
| @param cloud_normals - Point normals corresponding to the plane on which cylinder is kept */ |
There was a problem hiding this comment.
this is awesome documentation
| ROS_ERROR_STREAM_NAMED("cylinder_segment", "Can't find the cylindrical component."); | ||
| return; | ||
| } | ||
| static bool points_not_found = true; |
There was a problem hiding this comment.
rather than use static, make these functions part of a class and use a member variable
There was a problem hiding this comment.
I have converted it to a class but I was wondering why is keeping static such a bad idea?
* license naming and year * conversion to class to remove static * naming and styling fix
| @@ -0,0 +1,319 @@ | |||
| #include <ros/ros.h> | |||
There was a problem hiding this comment.
This is referenced from an earlier commit. The license has already been added
| +++++++++++++++++++++++++++++++++++++ | ||
|
|
||
| We will have to generate a YAML configuration file for configuring the 3D sensors. Please see `this example file <https://github.com/ros-planning/panda_moveit_config/blob/master/config/sensors_kinect_pointcloud.yaml>`_ for processing point clouds, located in the `panda_moveit_config repository for Kinetic <https://github.com/ros-planning/panda_moveit_config>`_: :: | ||
| We will have to generate a YAML configuration file for configuring the 3D sensors. Please see `this example file <https://github.com/ros-planning/panda_moveit_config/blob/master/config/sensors_kinect_pointcloud.yaml>`_ for processing point clouds, located in the `panda_moveit_config repository for Kinetic <https://github.com/ros-planning/panda_moveit_config>`_. |
includes - configuration - obstacle avoidance - cylinder segmentation - planning scene update This commit adds a rather small rosbag file as an example for the tutorials.
feedback addressed or too detailed to get this merged eventually..
|
I just looked through the tutorial, fixed a few minor issues and merged it as 160e941 . Not all feedback in this pull-request has been addressed or thoroughly discussed, but the comment history was way to long already and it took a lot of effort to look through everything to judge the current quality. |
Rename camera to match perception tutorial: moveit/moveit_tutorials#178.
I have added tutorials for obstacle avoidance and how to use a preprocessed pointcloud with moveit's perception pipeline.
@v4hn @mlautman @feroze