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

hannjaminbutton's profile - activity

2020-11-05 04:23:54 -0500 received badge  Good Question (source)
2019-05-13 03:13:12 -0500 received badge  Famous Question (source)
2019-05-13 03:13:12 -0500 received badge  Notable Question (source)
2019-03-11 11:01:38 -0500 received badge  Nice Question (source)
2018-10-16 07:10:34 -0500 received badge  Nice Question (source)
2018-10-16 07:10:24 -0500 received badge  Famous Question (source)
2018-08-10 16:12:58 -0500 received badge  Famous Question (source)
2018-06-26 02:15:09 -0500 received badge  Famous Question (source)
2016-09-02 09:51:52 -0500 received badge  Popular Question (source)
2016-07-18 11:39:20 -0500 received badge  Famous Question (source)
2016-05-30 08:34:51 -0500 asked a question Using Grippers in Stage

Hey,

I have a simulation in Stage with multiple robots that are equipped with grippers:

define simpleGripper gripper
(
  # gripper properties
  paddle_size [ 0.66 0.1 0.4 ]
  paddle_state [ "open" "down" ]
   autosnatch 0

  # model properties
  size [ 0.2 0.3 0.2 ]
)

Now I'd like to tell the robots that they should grab an object and transport it to a specific position. I don't want to use the pr2_controller since it is too complicated. Is there a simple way to write a node that generates goals for the gripper and publishes that goal?

I thought about using the control_msgs/GripperCommand.action, something like that:

#include <control_msgs/GripperCommand.h>
#include <control_msgs/GripperCommandAction.h>
#include <actionlib/client/simple_action_client.h>

typedef actionlib::SimpleActionClient<control_msgs::GripperCommandAction> GripperCommandClient;

int main(int argc, char** argv)
{
  ros::init(argc, argv, "simple_gripper");
  ros::NodeHandle n;

 GripperCommandClient ac("gripper_action", true);
 control_msgs::GripperCommandGoal goal;

 while(!ac.waitForServer(ros::Duration(5.0)))
 {
   ROS_INFO("Waiting for the move_base action server to come up");
 }

 ROS_INFO_STREAM("sending goal...");
 ac.sendGoal(goal);

 ac.waitForResult();

 if(ac.getState() == actionlib::SimpleClientGoalState::SUCCEEDED)
   ROS_INFO_STREAM("reached its goal!");

 else
   ROS_INFO_STREAM("failed to move to its goal!");
}

But actually I don't know how to address the "gripper_action" in that line: GripperCommandClient ac("gripper_action", true); since there is no topic published for the gripper. And furthermore I have no idea how to set the goal for a gripper.

Thanks in advance! :)

2016-04-25 02:53:36 -0500 received badge  Notable Question (source)
2016-02-17 03:39:58 -0500 received badge  Popular Question (source)
2016-02-17 03:39:58 -0500 received badge  Notable Question (source)
2016-02-01 04:13:20 -0500 received badge  Famous Question (source)
2016-02-01 04:13:20 -0500 received badge  Notable Question (source)
2016-01-04 16:08:05 -0500 received badge  Notable Question (source)
2016-01-04 16:08:05 -0500 received badge  Popular Question (source)
2015-10-20 05:35:43 -0500 received badge  Famous Question (source)
2015-10-19 10:37:18 -0500 received badge  Notable Question (source)
2015-10-17 23:53:23 -0500 received badge  Famous Question (source)
2015-08-31 04:47:57 -0500 received badge  Popular Question (source)
2015-08-05 07:40:09 -0500 received badge  Notable Question (source)
2015-06-29 07:04:07 -0500 received badge  Famous Question (source)
2015-06-21 03:16:38 -0500 marked best answer slam_gmapping odometry tf already published

Hey, I'm running my robot with a laser scanner and wheel odometry and the navigation stack. I already built a map from logged data and now I want to build it online. So I start my launch file for my robot (ibr_node) and the laser scanner. My ibr_node sends a transform from the map frame to the odom_base_link_frame.

<launch> 
<arg name="laser_x_offset_arg" default="0.72"/>
<param name="/use_sim_time" value="false"/>

<node pkg="mcm_ros_node" type="ibr_node" name="ibr_node" output="screen">
<param name="min_distance_control_on" value="false"/>
<param name="min_distance" value="1.0"/>

<param name="dev_ti_left" value="/dev/ti_left4"/>
<param name="dev_ti_right" value="/dev/ti_right4"/>

<param name="sigma_x_2" value="100.0"/>
<param name="sigma_y_2" value="100.0"/>
<param name="sigma_p_2" value="50.0"/>  
<param name="sigma_xy" value="10.0"/>
<param name="sigma_xp" value="0.0"/>
<param name="sigma_yp" value="0.0"/>
<param name="laser_x_offset" value="$(arg laser_x_offset_arg)"/>

</node>

<!-- Laser Scanner -->
<node pkg="lms1xx" type="LMS1xx_node" name="LMS1xx_node"/>

 <!-- static transforms -->
<node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0.72 0 0 0 0 0 /base_link /laser 100"/>
<node pkg="tf" type="static_transform_publisher" name="odom_base_to_base_broadcaster" args="0 0 0 0 0 0 /odom_base_link /base_link 100"/>

</launch>

Then I start a launch file for slam_gmapping:

<launch>
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
    <rosparam>
    odom_frame: odom_base_link
    base_frame: base_link
    </rosparam>
</node>
</launch>

With this transform tree:

map -> odom_base_link -> base_link -> laser

The transform from odom_base_link to base link and the transform from base_link to laser are static.

roswtf shows this Error:

ERROR TF multiple authority contention:
* node [/slam_gmapping] publishing transform [odom_base_link] with parent [map] already published by node [/ibr_node]
* node [/ibr_node] publishing transform [odom_base_link] with parent [map] already published by node [/slam_gmapping]

How can I solve this? When I just dont send the odometry transform in my ibr_node the map frame is missing in my transform tree.

Thanks in advance!! :)

2015-06-15 12:33:34 -0500 received badge  Student (source)
2015-06-12 00:12:04 -0500 commented answer Eclipse unresolved includes

Yes, I clicked on the triangle. For my version it only says Code Style, Documentation, File Types, Indexer and Language Mapping. I also included these paths but its still not working. But thanks for your answer, I will get a more recent version of eclipse!

2015-06-11 23:59:48 -0500 received badge  Popular Question (source)
2015-06-11 03:38:33 -0500 asked a question Eclipse unresolved includes

Hey,

I'm trying to use Eclispe (Indigo) with ROS (Hydro). I can import my packages but I still have inresolved includes. I followed the Turorial but I'm not able to do this step:

In Eclipse, right click the project, click properties -> C/C++ general -> Preprocessor Include Paths, Macros etc. Click the tab "Providers" and check the box next to "CDT GCC Built-in Compiler Settings [ Shared ]".

When I click on porperties -> c/c++ general there is no Preprocessor Include Paths, Macros etc.

Is there any way to solve this problem in another way?

2015-06-01 09:47:59 -0500 commented question Interpretation of PointCloud2 Datatype

No, I have no openni device. So there is no other way to get the x, y and z cooridnates?

2015-06-01 09:36:43 -0500 received badge  Popular Question (source)
2015-05-29 08:33:34 -0500 commented question Interpretation of PointCloud2 Datatype

Actually I have a Laserscanner and convert the sensor_msgs::LaserScan into sensor_msgs::PointCloud2, so I think that my PointCloud is unordered.

2015-05-29 07:06:25 -0500 asked a question Interpretation of PointCloud2 Datatype

Hey,

I'm working with PointCloud2 but actually I have some problems understanding the reprsentation. I'm aware of this link, and I understand the variables header, width, height, point_step, row_step, is_bigendian and is_dense. But I have some problems with PointField[] fields and uint8[] data.

The docu says that fields describes the channels and their layout. But what kind of channels?

And data holds the actual point data? So how can I get the x,y and z coordinates of all the points stored in the PointCloud?

Thanks in advance :)

2015-05-21 01:36:20 -0500 asked a question Laser Footprint Filter deprecated

Hi!

I want to use the laser_filters/LaserScanFootprintFilter in ROS Hydro. But I get a warning that says that LaserScanFootprintFilter has been deprecated and that I should use PR2LaserScanFootprintFilter but this doesnt work either.

What to I have to do in order to work with the FootprintFilter?

2015-05-21 00:25:19 -0500 received badge  Enthusiast
2015-05-20 08:37:56 -0500 received badge  Famous Question (source)
2015-05-20 05:08:14 -0500 asked a question Calibrating Laser Scanner Transform

Hey,

I work with a robot that is equipped with a 2D Laser Scanner. And actually its pretty hard to measure the distance from the center of the rorbot to the center of the Laser Scanner accurately by hand. So I think my static transform between the frame for the base link and the frame for the Laser Scanner is not precise enough so that there are small errors when the robots rotates.

Is there any possibility to determine the exact position of the Laser Scanner using Laser Scan Data?

Thanks in advance :)

2015-05-18 11:48:11 -0500 received badge  Notable Question (source)
2015-05-16 12:56:13 -0500 received badge  Popular Question (source)
2015-05-15 07:54:26 -0500 asked a question Feature Detection 2D Laser Scanner Data/Point Cloud

Hey,

I have a robot that is equipped with a 2D Laser Scanner. I have a node for transforming the sensor_msgs/LaserScan into sensor_msgs/PointCloud. Now I want to extract some features (like lines and circles) from that Point Cloud.

Are there any packages for feature detection?

2015-05-04 08:21:34 -0500 received badge  Notable Question (source)
2015-04-30 15:31:55 -0500 received badge  Popular Question (source)
2015-04-21 06:29:52 -0500 received badge  Famous Question (source)
2015-04-16 01:19:11 -0500 commented question ignore obstacles behind the laser

Well roswtf shows that move_base is unconnected to local_costmap/footprint and global_costmap/footprint. However, I can visualize the foot print in rviz.

2015-04-15 09:35:20 -0500 asked a question ignore obstacles behind the laser

Hey I want to use the Navigation Stack on my robot with a laser scanner and wheel odometry. Everything is working fine but when I send goals it doesnt work. The problem is that the laser scanner is just in front of the robot, so behind the laserscanner there are some points detected and the navigation stack interprets them as obstacles. Therefore I have always some obstacles in front of my robot and it doenst move anymore. How can I tell my robot that these data are no obstacles and it should ignore them? Do I have to adjust the raytrace_range? What exactly is the raytrace range about?

Thanks in advance :)