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

frankb's profile - activity

2018-06-26 08:59:22 -0500 received badge  Good Question (source)
2017-10-05 03:05:22 -0500 received badge  Nice Question (source)
2017-10-03 09:41:53 -0500 received badge  Good Question (source)
2017-07-31 16:04:06 -0500 received badge  Taxonomist
2016-10-17 12:42:41 -0500 received badge  Nice Question (source)
2016-10-17 12:41:04 -0500 received badge  Famous Question (source)
2016-03-08 15:13:09 -0500 received badge  Famous Question (source)
2016-02-24 14:27:59 -0500 received badge  Famous Question (source)
2016-02-24 14:27:59 -0500 received badge  Notable Question (source)
2016-02-24 14:27:59 -0500 received badge  Famous Question (source)
2016-02-24 14:27:59 -0500 received badge  Notable Question (source)
2016-01-20 16:24:58 -0500 received badge  Notable Question (source)
2016-01-20 16:24:58 -0500 received badge  Popular Question (source)
2015-08-28 07:14:35 -0500 received badge  Famous Question (source)
2015-08-19 10:49:54 -0500 received badge  Famous Question (source)
2015-08-19 03:28:38 -0500 received badge  Notable Question (source)
2015-08-01 05:08:09 -0500 received badge  Popular Question (source)
2015-07-29 19:26:05 -0500 asked a question rosbridge_server: share messages to non-ROS computer using HTTP

Is there a way to share a topic with a non-ROS computer? I am trying to send a string from my ros computer to another computer over a local static ip network. I was looking into using rosbridge_server to do this as it claims "Rosbridge provides a JSON API to ROS functionality for non-ROS programs."

I followed the tutorial: http://wiki.ros.org/rosbridge_suite/T... and used roslibjs as indicated here: http://wiki.ros.org/roslibjs/Tutorial...

While testing solely on my ros computer, I was able to subscribe to my topic over a websocket and have the string displayed on the web console using this HTML code:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />

<script type="text/javascript" src="http://cdn.robotwebtools.org/EventEmitter2/current/eventemitter2.min.js"></script>
<script type="text/javascript" src="http://cdn.robotwebtools.org/roslibjs/current/roslib.min.js"></script>

<script type="text/javascript" type="text/javascript">
  // Connecting to ROS
  // -----------------

  var ros = new ROSLIB.Ros({
    url : 'ws://localhost:9090'
  });

  ros.on('connection', function() {
    console.log('Connected to websocket server.');
  });

  ros.on('error', function(error) {
    console.log('Error connecting to websocket server: ', error);
  });

  ros.on('close', function() {
    console.log('Connection to websocket server closed.');
  });

  // Subscribing to a Topic
  // ----------------------

  var listener = new ROSLIB.Topic({
    ros : ros,
    name : '/copter_center_str',
    messageType : 'std_msgs/String'
  });

  listener.subscribe(function(message) {
    console.log('Received message on ' + listener.name + ': ' + message.data);
    //listener.unsubscribe();
  });

</script>
</head>

<body>
  <h1>Simple roslib Example</h1>
  <p>Check your Web Console for output.</p>
</body>
</html>

However, this method requires a web connection to include eventemitter2 and roslib. I tried installing both libraries and writing a javascript file to do it offline, but did not work as there were issues installing roslib.

It seems like roslib is designed to be used as a web interface to access ROS topics and services. Can rosbridge be used to give another computer access to a single topic and its messages over a local offline connection? If not, how is this interaction typically done? It would be perfect if there existed an HTTP call to subscribe to a topic on the rosbridge server.

2015-07-22 12:12:16 -0500 commented answer roslaunch: using ampersand (&) in gscam config

You need to be using an IP (ethernet) camera. In my case, the parameters were defined by the camera manufacturer in their documentation. The format was provided by them. So you can't do it for any camera out there.

2015-07-22 11:56:27 -0500 received badge  Popular Question (source)
2015-07-22 10:50:56 -0500 received badge  Self-Learner (source)
2015-07-22 10:50:56 -0500 received badge  Teacher (source)
2015-07-22 10:17:52 -0500 received badge  Scholar (source)
2015-07-22 10:17:43 -0500 answered a question roslaunch: using ampersand (&) in gscam config

I figured it out. I googled the issue under general XML syntax, not just a roslaunch problem.

You can use "& amp;" for the "&". So my code now becomes this and it works!

<launch>
  <arg name="cam_name" value="my_camera" />

  <!-- Start the GSCAM node -->
  <env name="GSCAM_CONFIG" 
      value="souphttpsrc location=http://10.16.63.224/control/faststream.jpg?stream=full&amp;fps=0 timeout=5 ! jpegdec ! ffmpegcolorspace" />
  <node pkg="gscam" type="gscam" name="$(arg cam_name)">
    <param name="camera_name" value="$(arg cam_name)" />
    <remap from="camera/image_raw" to="$(arg cam_name)/image_raw" />
  </node>

</launch>
2015-07-22 09:31:15 -0500 commented answer roslaunch: using ampersand (&) in gscam config

Is there a way to use the ampersand "&" in a roslaunch file? Thanks!

2015-07-22 09:29:34 -0500 commented answer roslaunch: using ampersand (&) in gscam config

Unfortunately, this does not work. I am sending params to my camera over http through the "location" variable of the form <camera_stream>?<param1>&<param2>. Your method is changing the framerate of the gstreamer image pipeline rather than the internal params of the camera itself. I need the "&" :(

2015-07-21 21:32:11 -0500 asked a question roslaunch: using ampersand (&) in gscam config

Hi guys, I am trying to use an ampersand (&) in my launch file for gscam but it's apparently bad syntax. Here's the output:

 Invalid roslaunch XML syntax: not well-formed (invalid token): line 7, column 92
The traceback for the exception was written to the log file

Here is my launch file:

<launch>
  <arg name="cam_name" value="my_camera" />

  <!-- Start the GSCAM node -->
  <env name="GSCAM_CONFIG" 
      value="souphttpsrc location=http://10.16.63.224/control/faststream.jpg?stream=full&fps=0 timeout=5 ! jpegdec ! ffmpegcolorspace" />
  <node pkg="gscam" type="gscam" name="$(arg cam_name)">
    <param name="camera_name" value="$(arg cam_name)" />
    <remap from="camera/image_raw" to="$(arg cam_name)/image_raw" />
  </node>

</launch>

If I remove the "&fps=0" from the end of location, then the launch file works, but I need it there to operate my camera properly. Is there a way to use "&" in a launchfile? maybe a delimiter?

Thanks, -Frank

2015-07-01 03:33:56 -0500 received badge  Notable Question (source)
2015-06-25 14:28:04 -0500 received badge  Notable Question (source)
2015-06-03 14:26:16 -0500 received badge  Popular Question (source)
2015-05-31 01:56:44 -0500 commented question Working with cv_bridge and OpenCV correctly

are you following the turtorial here? http://wiki.ros.org/cv_bridge/Tutoria... calling cv_bridge::toCvCopy with the correct image encoding?

2015-05-31 01:53:36 -0500 commented question ROS stereo disparity issues

Did you calibrate the cameras using stereo_calibration? Also, what parameters are you using? A min_disparity (lower values allow you to see further) of 0 and disparity range of 64 seem to work for me. Also mess with texture threshold to remove noise. 500 worked well for me on that param.

2015-05-31 01:45:51 -0500 received badge  Enthusiast
2015-05-29 16:08:06 -0500 received badge  Popular Question (source)
2015-05-28 20:18:15 -0500 commented question How to record values within a vector of type cv::Point2f?

Have you tried publishing it through ROS as a geometry_msgs::Point ? I think you can only publish using ROS messages. http://docs.ros.org/api/geometry_msgs... Or try a different message type.

2015-05-28 20:06:47 -0500 asked a question PCL conversions is VERY SLOW

Hi all, I am generating pointclouds from a stereo camera using stereo_image_proc at a good speed of 24Hz. However, when I convert from the ROS pointcloud format (sensor_msgs::PointCloud2) to the PCL format (pcl::PointCloud< T >) for PCL processing, there is a drastic slow down even when no processing is done. I have noticed this slow down after a recent Ubuntu software update on May 21st and hence decided to run some tests.

I have tested this with two conversion methods: 1) subscribing as PointCloud< T > for implicit conversion and 2) using fromROSMsg and toROSMsg for direct conversion. In both test cases, I subscribe and immediately re-publish the pointcloud. With conversion: Method (1) yields yields a rate of 12Hz while Method (2) a rate of 8.8Hz. For control purposes; I also tested subscribing as a ROS pointcloud and re-publishing that same ROS pointcloiud. As expected, the control was still 24Hz without conversion.

Method 1: Subscribe directly as a PointCloud< T > while including pcl_ros/point_cloud.h. Described here: http://wiki.ros.org/pcl_ros as well as in my test below: Publishes at 12Hz.

#include <pcl_ros/point_cloud.h>
typedef pcl::PointCloud<pcl::PointXYZ> PointCloud;
.
.
.
void cloud_cb(const PointCloud::ConstPtr& msg)
{
    pub.publish(msg);
    return;
}

Method 2: Subscribe to ROS pointcloud and convert to PCL using fromROSMsg and toROSMsg. Described here: http://wiki.ros.org/pcl/Tutorials#pcl.. . as well as in my test below: Publishes at 8.8Hz.

void cloud_cb(const sensor_msgs::PointCloud2ConstPtr& input)
{
    pcl::PointCloud<pcl::PointXYZ> temp;
    sensor_msgs::PointCloud2 output;

    pcl::fromROSMsg(*input, temp);
    pcl::toROSMsg(temp, output);

    pub.publish(output);
    return;
}

I am running ROS Indigo on Ubuntu 14.04. I remember running a PCL passthrough filter on my cloud last week without issue. I also tested conversions on a friends computer yesterday running an older version of Indigo (prior to the May 21st update). Conversions did not seem to affect his publish rate as he was able to publish at the original 24Hz.

I have tried removing pcl_ros and pcl_conversions using apt-get remove, and installing versions prior to May 21st using git, however, the slow-down still persists. Has anyone else experienced this slow-down? Are there other conversion methods I should know about? Please investigate this and let me know if you are able to re-publish your clouds at the same rate they are coming in at or if you are having this slow-down like me.

Thanks, -Frank

2015-05-27 08:34:02 -0500 received badge  Student (source)
2015-05-27 00:43:08 -0500 received badge  Editor (source)
2015-05-26 21:59:15 -0500 asked a question Converting PointCloud2: From ROS to PCL (converting in callback vs directly)

Hello, I am subscribing to my point cloud topic generated by stereo_image_proc and trying to convert it from the ROS format (sensor_msgs::PointCloud2) to the PCL format (PointCloud< PointXYZ >) so I can use PCL functions. I know there are a few ways to do this, but one method is much slower and the other does not allow for message filtering as I want to synchronize my pointcloud callback with an image callback.

Method 1: Subscribe Directly as a PointCloud< PointXYZ > while including pcl_ros/point_cloud.h. Described here: http://wiki.ros.org/pcl_ros as well as below.

#include <ros/ros.h>
#include <pcl_ros/point_cloud.h>
#include <pcl/point_types.h>
#include <boost/foreach.hpp>

typedef pcl::PointCloud<pcl::PointXYZ> PointCloud;

void callback(const PointCloud::ConstPtr& msg)
{
  printf ("Cloud: width = %d, height = %d\n", msg->width, msg->height);
  BOOST_FOREACH (const pcl::PointXYZ& pt, msg->points)
    printf ("\t(%f, %f, %f)\n", pt.x, pt.y, pt.z);
}

int main(int argc, char** argv)
{
  ros::init(argc, argv, "sub_pcl");
  ros::NodeHandle nh;
  ros::Subscriber sub = nh.subscribe<PointCloud>("points2", 1, callback);
  ros::spin();
}

This method does not allow me to synchronize callbacks by message_filtering using the method described here: http://wiki.ros.org/message_filters#T... . My code compiles, however, I never get a synchronized callback. it was suggested in this post that it is not possible: http://answers.ros.org/question/18693...

Method 2: Subscribe to sensor_msgs::PointCloud2 and convert within the synchronized callback using fromROSMsg. Described below as well as here: http://wiki.ros.org/pcl/Tutorials#pcl...

#include <pcl/sample_consensus/model_types.h>
#include <pcl/sample_consensus/method_types.h>
#include <pcl/segmentation/sac_segmentation.h>

...

void 
cloud_cb (const sensor_msgs::PointCloud2ConstPtr& input)
{
  // Convert the sensor_msgs/PointCloud2 data to pcl/PointCloud
  pcl::PointCloud<pcl::PointXYZ> cloud;
  pcl::fromROSMsg (*input, cloud);

  pcl::ModelCoefficients coefficients;
  pcl::PointIndices inliers;
  // Create the segmentation object
  pcl::SACSegmentation<pcl::PointXYZ> seg;
  // Optional
  seg.setOptimizeCoefficients (true);
  // Mandatory
  seg.setModelType (pcl::SACMODEL_PLANE);
  seg.setMethodType (pcl::SAC_RANSAC);
  seg.setDistanceThreshold (0.01);

  seg.setInputCloud (cloud.makeShared ());
  seg.segment (inliers, coefficients);

  // Publish the model coefficients
  pcl_msgs::ModelCoefficients ros_coefficients;
  pcl_conversions::fromPCL(coefficients, ros_coefficients);
  pub.publish (coefficients);
}

This was my primary method of choice, however, fromROSMsg has slowed down (at least on my computer: have not tested on others) since a recent update. I used to be able to process pointclouds at 30Hz a few days ago, but now it is reduced to 5Hz (approx .1s for each call to fromROSMsg()). Is anyone else having speed issues related to fromROSMsg? Subscribing to PointCloud< PointXYZ > works much faster than fromROSMsg right now, but I am unable to synchronize my callbacks. Any recommendations would be of great help.

Ubuntu 14.04. ROS Indigo.

Thanks, -Frank

2015-05-22 02:11:42 -0500 asked a question pcl::fromROSMsg slow after Update

Hi, after a recent Ubuntu software update, pcl::fromROSMsg is now really slow when converting from a ros pointcloud to a PCL pointcloud. Using ros::Time::now() before and after the function call, I determined that it's taking on average 0.1 seconds to complete. Hence I am only able to process point clouds at around 5Hz while last night I was able to process them at around 20 to 30Hz.

I am using ROS Indigo on Ubuntu 14.04. The update was entirely updating ros packages and ros-indigo-pcl-ros 1.2.6-0Trusty was updated.

Has anyone recently experienced a slow down since the update? If not, does anyone have any suggestions for fixing this?