ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Damien's profile - activity

2022-04-28 17:51:48 -0500 received badge  Stellar Question (source)
2021-12-20 04:23:05 -0500 received badge  Good Question (source)
2019-05-20 01:47:05 -0500 marked best answer Adding objects in MoveIt: fixed in the world while the mobile manipulator is moving: confusion with root_joint, planning_frame and srdf structure

Hi all, Sorry if this question is answered somewhere else, but I didn't find a clear answer.

In the context of a mobile manipulator, we use move_base for base navigation and moveIt for arm planning. We have an issue when adding parts and objects to the MoveIt planning scene: they are added "fixed" to the robot. So when the robot moves, the parts move with it... :-( Not the expected behavior! Another thing we'd like to do in the future but that our current issue will also not allow: having a rgbd sensor fixed to a wall and providing an octomap to MoveIt...

So, digging into it, I'm not sure if we have an issue with:

  • our custom robot urdf/srdf structure (we do use a virtual joint between /map and /base_footprint in the SRDF)

  • the overall concept of the Moving Planning scene, root_joint and planningFrame... and how they are linked to the gmapping's map.

So what we are expecting to do, is it even feasible? should the root_joint of my custom robot be base_link? or the map/world_frame? we can querry for the current PlanningFrame (getPlanningFrame() ), but there is no way to set it. So I guess it is generated at the construction of the PlanningScene... and thus will use the first frame of the URDF... which will never be the Map frame...

I think you got it: I'm missing a connection between all these concepts. Can someone help? Thanks

Damien

2018-01-18 23:07:33 -0500 received badge  Famous Question (source)
2017-11-29 08:47:48 -0500 received badge  Nice Question (source)
2017-11-16 16:21:50 -0500 received badge  Notable Question (source)
2017-11-16 13:16:30 -0500 received badge  Popular Question (source)
2017-11-15 14:10:57 -0500 edited question Adding objects in MoveIt: fixed in the world while the mobile manipulator is moving: confusion with root_joint, planning_frame and srdf structure

Adding objects in MoveIt: fixed in the world while the mobile manipulator is moving: confusion with root_joint, planning

2017-11-15 14:10:42 -0500 edited question Adding objects in MoveIt: fixed in the world while the mobile manipulator is moving: confusion with root_joint, planning_frame and srdf structure

Adding objects in MoveIt: fixed in the world while the mobile manipulator is moving: confusion with root_joint, planning

2017-11-15 14:10:42 -0500 received badge  Editor (source)
2017-11-15 14:09:35 -0500 asked a question Adding objects in MoveIt: fixed in the world while the mobile manipulator is moving: confusion with root_joint, planning_frame and srdf structure

Adding objects in MoveIt: fixed in the world while the mobile manipulator is moving: confusion with root_joint, planning

2017-03-07 02:39:56 -0500 received badge  Famous Question (source)
2017-02-09 10:28:57 -0500 received badge  Good Question (source)
2016-11-09 09:19:35 -0500 received badge  Good Question (source)
2016-10-28 14:57:25 -0500 received badge  Famous Question (source)
2016-10-28 14:57:25 -0500 received badge  Notable Question (source)
2016-10-19 00:51:22 -0500 received badge  Taxonomist
2016-09-02 09:45:19 -0500 received badge  Nice Question (source)
2016-09-02 09:45:07 -0500 received badge  Notable Question (source)
2016-08-31 07:03:10 -0500 received badge  Popular Question (source)
2016-08-31 04:59:20 -0500 commented question Conceptual question on Ros + docker

I didn't know the existence of the ROS discourse site! :-) In which section do you suggest I should post it?

2016-08-31 04:40:01 -0500 commented question Conceptual question on Ros + docker

But how would they write these Ros apps against my container: would they need a full desktop install of ROS on their machine? and my container only contains libraries and my own nodes? or would they create another container with their nodes? thks

2016-08-31 04:40:01 -0500 received badge  Commentator
2016-08-31 03:55:14 -0500 asked a question Conceptual question on Ros + docker

Hi all, I've been reading the different ressources about Docker+Ros I found on the web + the video of Ruffin White talk in Roscon2015... So I see great potential of Docker with ROS for usecases such as testing and Continuous integration, or deployment on robots for a robot manufacturer etc... basically when what I need is to run a clean version, without adding any modification to the image/container....

But I think I'm missing a concept or at least I'd like discuss the usefulness of Docker on another usecase...

We are working on an internal "product" that is a big collection of ROS nodes. So we rely on ROS and ROS-Industrial packages, plus some third party drivers for hardware, specific libraries etc... We have our own Continuous Integration Buildbot server that generates a Debian from the catkin-install output (on different slaves to account for the linux/ros-distribution mix).

When we need to set-up a new machine, we need to install ubuntu, ros, then our script to install all the required libraries and dependencies, and finally install our Deb. Then start working, developping and customizing the final application for the robotic cell deployment.

So, building a Docker container to host all this looks like a great solution to provide a clean install of our product/solution both internally or to our external partners/clients. Another option would to provide a kind of Vagrant or Chef cookbook to automate the correct deployment of a new machine, external libraries script execution and my product deb installation... (any opinion on the most suitable strategy?)

However, and this is the point where I'm getting lost on the usefulness of Docker for my usecase, our product is NOT meant to be working isolated and alone... It's a collection of ros nodes to allow easier programming and deployment of industrial robotic cells. So it can be seen as library to be used by our developers and clients.

So If I am a user of this product, having a docker component would be great to start. But then I would develop my own robotic application/installation using this product + extra drivers form other Ros repo + my own nodes and application-specific Guis, my own config files and programs etc...

So, to my current understanding, I could "save" all this in my local version of the docker container... but when the official product docker container is updated, I would then loose all my specific configuration and application, right?

Or should I create a new docker container for my own developments ? and ask my clients to control Docker programming to be able to create their own application?

As you can see, I fully get the benefits of the docker container when the objective is to use something completely "closed" or ship an application that is just meant to be ran/executed.

But I dont' get the "how-To" when I need to work on top of a third-party provided container... And maintain the integrity of my work ... (more)

2016-05-10 13:47:44 -0500 marked best answer How to setup bloom to generate a local deb, outside of ros.org buildfarm

Hi. This question is related to this one: http://answers.ros.org/question/17380...

Basically, what we need to do is to provide our ros packages to project partners and clients. But we do not want to distribute the source code for some of the nodes (some yes, and some no). And we don’t want either to appear yet in the official ROS buildfarm/jenkins/repo for project confidentiality required by some clients. And we will want in the future to add obfuscation of python code and license management for C++ code with LMX for example...

So we’ve been digging around the ROS release process. But things are not really clear to us yet.

Would you know how to do, or how would you advise us to do in order to generate such installers so that our clients can easily install it and that we can check release numbers, and send only compiled code. I think there are 2 ways:

  1. The “easier” but not sure if it works well: generate a tar.gz of the catkin workspace after having cleaned it from source code…. Do you have experience on this? Do we need to remove the devel folder? if we remove the src folder this doesn't work, do we need to leave at least the config and lanch files? more?... Is this documented somewhere? Maybe we need to compile catkin with release flag?

  2. The more complex but cleaner and more long-term: generating a debian and putting it on a server. I’ve seen that we can use Bloom to generate a debian automatically in GitHub. And then there is pull generated to populate the ROS buildfarm…

  3. But then, where is it compiled? In local? By github? By ros.org?
  4. How can we specify/include in the debian only compiled code and not source code? (or a mix)
  5. Can we generate only one debian for a metapackage? or will we have to generate as many .debs as packages?
  6. Do you know how to disable this pull to ros.org? and to github (or how to configure the deb to be generated on our git server?)
  7. If we don’t publish it on ros.org , can we still get the track feature to manage release version and tags etc…
  8. If/when we'll have generated the .deb, what kind of server would we need to implement to get a private server to be able to run apt-get? (or any similar method) Might PPA be the solution? Or can one call an apt-get on a private git server since the release debian will be there?

  9. And finally, how/where does the obfuscation popsup in this process?

Thanks in advance for any advice and guidelines. You will have understood that we know more or less what we want, but have little idea of the available options and how to implement this... what a program :-)

For the question point 2, for a first package that in particular defines its own services, we ... (more)

2016-05-08 15:33:21 -0500 marked best answer TF Listener error when running two kinects with openni_launch

Hi.

I'm trying to achieve something simple:

  • launch 2 kinects
  • publish static TF between kinects and HRIworkspace frames
  • merge the 2 pointclouds in HRIworkspace
  • run octomaps for later moveit planning. This is the fundamental issue: Octomaps cannot take as input multiple Pointcloud: it works only with 1 pointcloud. So I need to rotate and merge my individual pointcloud so that i can fill the result into octomap...

My issue is that I have it running with one kinect. but "just" running a second node of kinect breaks something and listener->waitForTransform throws me the typical error: [ERROR] [1408981523.817028455]: "HRIworkspace" passed to lookupTransform argument target_frame does not exist.

Import thing: I know that I can have only 1 Kinect per Hub. And I did pay attention to this.

so, Step by step:

Step 1. Kinect Launch files. Launches both kinects and the static publishers for the kinects links.

<!-- Parameters possible to change-->
<arg name="camera1_id" default="1@0" />
<arg name="camera2_id" default="2@0" />
<arg name="depth_registration" default="true" />

<!-- Default parameters-->
<arg name="camera1_name" default="kinect1" />
<arg name="camera2_name" default="kinect2" />

<node pkg="tf" type="static_transform_publisher" name="world_to_HRIworkspace" args="0 0 0 0 0 0 /world /HRIworkspace 10" /> 

<!-- Launching first kinect-->
<include file="$(find openni_launch)/launch/openni.launch">
  <arg name="device_id" value="$(arg camera1_id)" />
  <arg name="camera" value="$(arg camera1_name)" />
  <arg name="depth_registration" value="$(arg depth_registration)" />
  <arg name="publish_tf" value="true"/>
</include>

<node pkg="tf" type="static_transform_publisher" name="HRIworkspace_to_kinect1_link"  args="2 -2 2 2.356 0.35 0 /HRIworkspace /kinect1_link 1" /> 

<!-- Launching second kinect-->
<include file="$(find openni_launch)/launch/openni.launch">
  <arg name="device_id" value="$(arg camera2_id)" />
  <arg name="camera" value="$(arg camera2_name)" />
  <arg name="depth_registration" value="$(arg depth_registration)" />
  <arg name="publish_tf" value="true"/>
</include>

<node pkg="tf" type="static_transform_publisher" name="HRIworkspace_to_kinect2_link" args="2 2 2 -2.356 0.35 0 /HRIworkspace /kinect2_link 1" />

Step 2. The future merging node, with the tf listner.

Ok, for debug purposes, it doesn't do much of merging... but I need this to run before implementing more. Now it only tries to get the transform and transform the pointcloud...

Note that the definition of the tf: listener is the main, so its buffer should have time to fill...

void cloud_cb1(const sensor_msgs::PointCloud2ConstPtr& input1) {
       listener->waitForTransform("kinect1_rgb_optical_frame","HRIworkspace", (*input1).header.stamp, ros::Duration(10.0) );
       pcl_ros::transformPointCloud("HRIworkspace",*input1, output1, *listener);
       pub.publish(output);    
    }

    int main (int argc, char** argv)
    {
    // Initialize ROS
    ros::init (argc, argv, "merge2pcl2");
    ros::NodeHandle nh;

    listener = new tf::TransformListener();
    ros::Subscriber sub1 = nh.subscribe ("/kinect1/depth_registered/points", 1, cloud_cb1);
    pub = nh.advertise<sensor_msgs::pointcloud2> ("output", 1);
    ros::spin ();
    }

Step3: If i run only 1 kinect:

No problem all TF transforms are found, code running smoothly, republishing the pointcloud. TF echo runs ok rosrun tf tf_monitor kinect1_rgb_optical_frame HRIworkspace runs ok

RESULTS: for kinect1_rgb_optical_frame to HRIworkspace
Chain is: HRIworkspace -> world -> kinect1_link -> kinect1_rgb_frame -> kinect1_link -> kinect1_depth_frame
Net delay     avg = -0.000275143: max = 0.000302901

Frames:

All Broadcasters:
Node: /HRIworkspace_to_kinect1_link 930.502 Hz, Average Delay: -0.000832957 Max Delay: 0
Node: /kinect1_base_link ...
(more)
2016-02-29 06:53:50 -0500 received badge  Favorite Question (source)
2016-01-09 19:11:29 -0500 received badge  Popular Question (source)
2016-01-08 05:59:05 -0500 answered a question Support for tool changing

Hi Jeremy, did you find a solution for your issue? It is indeed a hard requirement for any Industrial application...

Thanks

2015-12-21 10:38:53 -0500 asked a question Rviz: clicking a TF to align the robot TCP?

Hi.

I'm looking for a way to define new motions in our applications, in a user friendly way.

We have large scenes with lots of TF published for the various parts and toolings. I'd like to easily "teach" moveit to move to a given TF from the user interface. Today Rviz allows to move the interractive markers and plan and execute the motion. But the marker is moved by hand. There is (to my knowledge, and we still are in Hydro...) no way to ask it to "snap" to a given TF... Is it correct?

So, I'm looking for solutions or ideas about how we could obtain something like in all the CAD design tools: Align with Axis X of frame Toto. Align with Axis Y(reverse direction) of frame Tata, and align with Axis X of frame Tutu (But at a distance of 5cm along Axis Y of Tutu)... Don't try to figure out motion I'm saying, it's pure invention for the example.

And this I'd like to do it in Rviz and graphicaly: we can already specify easily by code the moveIt goal to be a given pose in a specific Frame but not in a "user friendly" way... (interractive or in Rviz)

Thanks for any experience, pointers or inputs. Damien

2015-11-16 14:47:39 -0500 received badge  Famous Question (source)
2015-09-09 17:04:42 -0500 marked best answer procedure to get catkin_make install generate and copy only pyc and no .py

Hi. I need to ship to some client ans application based on ROS. I don't want to provide my source code to this client. So I'm planning to ship a tar.gz of the /install folder of catkin_ws or a .deb.

One starting question: does a .pyc file dependent on my system settings? or will my client have the capability to execute my node since he uses the same version of ubuntu and ros?

Supposing it makes sense to ship a .pyc and not a .py file:

The package packing process will take as input the /install folder. The files that end-up in /install are set in the CMakeList.txt So if I want to ship on .pyc files, I should specify them explicitly in the install section of CmakeList

But

  • If I checkout my svn repo in a clean environment, run catkin_make, I get an error since no pyc files have been generated yet and my Camkefile is inconsistent.

  • This works fine if in Cmakefile I specify to install my_file.py but this is not what I want...

So is there a way to force catkin_make to build all the python in .pyc?

Otherwise I need to run this twice with a change in Cmakelist in between... I have lots of proprietary packages to ship, and this is just not OK.

Thanks for any insights

Damien

2015-09-09 17:04:39 -0500 received badge  Famous Question (source)
2015-09-09 17:04:37 -0500 received badge  Nice Question (source)
2015-07-08 08:57:43 -0500 received badge  Famous Question (source)
2015-02-23 10:04:14 -0500 received badge  Famous Question (source)
2015-01-12 20:47:59 -0500 received badge  Notable Question (source)
2014-12-16 14:16:39 -0500 received badge  Notable Question (source)
2014-12-16 01:33:27 -0500 received badge  Popular Question (source)
2014-12-04 03:45:50 -0500 asked a question Can I use metapackage to define my release list of packages?

Hi. We have developed lots of different packages in our group. However from these packages, we want to release various "products" as individual debians.

In previous questions I discussed options to generate our own debians outside of the ROS buildfarm. At the end we chose for sake of simplicity to run

catkin_make install
and use FPM to generate a debian form the install folder. This works fine for us since we have total control on the machine where it will be deployed. And we have it automated with buildbot.

fpm -s dir -t deb

So basically now, what I need is to specify WHICH packages I want to build and install for each release. Since I ship directly the contents of /install I cannot permit catkin_to compile everything in the catkin_ws....

I don't want either to generate a release branch in my SVN in order to maintain a simple process and limit the overhead of our release management process.

So I had in mind to use a catkin metapackage defining the <run_depend> list so that it contains all and only the packages I decide to ship in my release (of course I expect catkin to manage dependencies).

The issue I have is that either

 catkin_make -DCATKIN_WHITELIST_PACKAGES=my_release_metapackage 

or

 catkin_make --pkg my_release_metapackage 

still compile ALL the packages in the catkin_ws... and not ONLY the ones specified in the <run_depend>...

So: 1. Are matapackages the correct way to do what I want?? If so, how should I do it? 2. Is there any other way to just compile and install a specific list of packages??

Thanks

2014-09-26 09:12:00 -0500 received badge  Notable Question (source)
2014-09-25 12:49:24 -0500 marked best answer Bloom-release issue: could not resolve rosdep key 'rospkg'

Hi.

I have an anoying issue that I can't get solved...

To test debian building and releasing, I created two repos on github. One for source and the other for the release debians. I commited two of our nodes for testing purpose before trying to use our internal git and build in local instead of on the ros buildfarm... So I try to take it small steps after small steps to try to control all the aspects...

So, I'm compiling perfectly well the packages with catkin_make and catkin_make install in 'devel' overlay. The install folder can be relocated anywhere and executes the nodes smoothly when I update the bashrc to source the correct folder as overlay etc...

So all seems pretty clean to me.

I do run catkin_generate_changelog and catkin_prepare_release still in the 'devel' overlay.

BUT. When running bloom-release --rosdistro hydro --track hydro https://github.com/repo/repo.git --edit in the 'devel' overlay, I have the following error:

==> git-bloom-generate -y rosdebian --prefix release/hydro hydro -i 0
Generating source debs for the packages: ['deburring_riveting_demo', 'hironx_grippers']
Debian Incremental Version: 0
Debian Distributions: ['precise', 'quantal', 'raring']
Releasing for rosdistro: hydro
Placing debian template files into 'debian/hydro/deburring_riveting_demo' branch.
==> Placing templates files in the 'debian' folder.
Running 'rosdep update'...

####
#### Generating 'precise' debian for package 'deburring_riveting_demo' at version '0.0.2-0'
####
Generating debian for precise...
No homepage set, defaulting to ''
Could not resolve rosdep key 'rospkg'
Try to resolve the problem with rosdep and then continue.

So Yes, my python package 'deburring_riveting_demo' imports rospkg. And in package.xml I added <run_depend>python-rospkg</run_depend> Also tried to add it also in <build_depend>, but didn't change anything...

So as discussed on some other questions, I did clean my rosdep files and updated them. And I also run rosdep resolve python-rospkg correctly since it answers

#apt
python-rospkg

I have to mention that at the beginning I did try in package.xml to < -depend> on rospkg instead of python-rospkg. That might be one of the origins of bloom trying to rosdep rospkg??

So I have no clue about how to solve this issue...

I'm guessing that there might have a cache somewhere still pointing to <run_depend>rospkg</run_depend>

But I deleted my /devel, /build and /install; I deleted all temporary files in /src, I double checked the correctness of the upstream git repo...

Is there anywhere else I have to look for this??

Any idea of what is going wrong?

Thanks Damien

2014-09-25 09:14:53 -0500 received badge  Scholar (source)
2014-09-25 09:14:48 -0500 commented answer Bloom-release issue: could not resolve rosdep key 'rospkg'

That was it!! Too many steps and stuff to learn and control at the same time... I didn't regenrate catkin_prepare_release Now it works smoothly. Thanks a lot. I'm closing the question.

2014-09-24 17:54:54 -0500 received badge  Popular Question (source)