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

Marcin Bogdanski's profile - activity

2020-10-20 07:26:24 -0500 received badge  Good Answer (source)
2020-07-24 04:13:29 -0500 received badge  Famous Question (source)
2019-03-11 10:24:10 -0500 received badge  Notable Question (source)
2018-01-18 07:56:03 -0500 received badge  Popular Question (source)
2017-10-24 11:30:12 -0500 received badge  Famous Question (source)
2017-01-22 18:09:35 -0500 received badge  Notable Question (source)
2016-08-26 00:42:51 -0500 received badge  Nice Answer (source)
2016-08-25 09:24:31 -0500 commented answer Using Dynamixel Motors on Kinetic

Hi. Sorry for late reply, I was super busy over last couple days. See edited answer

2016-08-25 09:06:52 -0500 received badge  Supporter (source)
2016-08-25 09:06:49 -0500 answered a question can't find ros package in kinetic driver-base

I have similar problem with couple packages (usb_cam, dynamixel, urg_node).

In my case I had to download source from github into a workspace, and compile manually with catkin_make.

Having said that, I would like to update some packages into kinetic as well, some guidance would be great!

2016-08-25 09:01:30 -0500 answered a question My Robot doesn't stops even if cmd_vel is not Published.Why ?

What is the receive logic on your robot?

If you set PID target when you receive cmd_vel, then your robot will be stuck on last received value, disregarding how old it is. If cmd_vel topic just stops, your robot will carry on using last cmd_vel

Most probably you need to check for timeout, e.g. if no message was received in last 1 second, then set PID target to zero. This way if cmd_vel cut's off, then robot will carry on for 1 second, then timeout will kick in and set PID target to zero, which in turn will stop the robot.

If my understanding of your problem is wrong, please edit your question to include relevant source code section from your robot.

2016-08-25 04:05:39 -0500 received badge  Enlightened (source)
2016-08-19 19:36:04 -0500 received badge  Nice Answer (source)
2016-08-17 00:54:37 -0500 received badge  Necromancer (source)
2016-08-15 06:55:15 -0500 received badge  Good Answer (source)
2016-08-14 20:33:51 -0500 received badge  Nice Answer (source)
2016-08-14 13:55:16 -0500 commented answer Which data is thrown away in queue if publish and spinonce rate is different?

"If necessary" == If there is more than one message on the queue.

SpinOnce will call a callback once for each message on the queue before removing it. And through that it will clear the whole queue. As far as I know it will never remove message without calling a callback.

2016-08-12 04:29:55 -0500 answered a question Which data is thrown away in queue if publish and spinonce rate is different?

No

SpinOnce can call multiple callbacks if necessary. spinOnce will call callback for each message in a queue separately, and only then remove it from a queue. Thus you will get callback for each one. Callbacks will be one after another as fast as possible.

Your receiver will get: a,b,c ...pause... d,e,f.... pause... g,h,i

This is assuming your queue length is sufficient. if queue gets full, you will start loosing messages.

2016-08-11 09:29:30 -0500 answered a question Strange segfault when running node on raspberry pi 3

Not a direct answer, but maybe some things to try:

  • Does segfault on any particular line of code?
  • I didn't use rasbian or OpenCV, so this might be complete miss, but maybe try Ubuntu Mate 16.04? It should correspond more closely to what you have on laptop? I have a lot of ROS stuff running or RPi3 with Ubuntu without issues.

Marcin

2016-08-10 04:26:16 -0500 answered a question How do I measure packet latency?

Hi

The closest thing would, as mentioned, Topic Statistics. TopicStatistics monitors period and stamp_age. I don't know if it is supported on windows. TopicsStatistics can be tricky to work with though, to enable topic statistics:

1) Run roscore as normal

2) Enable statistics rosparam set enable_statistics true

3) Only then start your other nodes, you will need at least one subscriber per topic you want to measure. TopicStatistics won't work on topics that have no subscribers.

4) You should see /statistics topic, which is aggregated, all nodes publish to it, so you need to filter out messages you need.

I think TopicStatistics work using timestamps in headers, which means your measures will depend on quality of these timestamps. If both your nodes are on single PC then that should be ok, if nodes span across network, or messages are being generated based on time from external hardware (like laser scanners etc), then your timestamps may be off.

2016-08-09 05:31:11 -0500 received badge  Enthusiast
2016-08-08 21:08:38 -0500 received badge  Nice Answer (source)
2016-08-08 17:44:24 -0500 commented answer How to visualize depthimages from rosbag file with RViz?

I just realized parameter description got folded into one long unreadable blob. Now fixed. Happy to help.

2016-08-08 14:20:05 -0500 received badge  Teacher (source)
2016-08-08 10:54:31 -0500 answered a question How to visualize depthimages from rosbag file with RViz?

RViz requires not only data to display, but also TF transform information that is published on separate topic. If TF data was not generated when .bag file was recorded, then it would be missing. Thus you probably need to spoof some dummy TF transform, just so RViz is happy.

The other problem is that, to spoof TF data correctly, you need to spoof them with timestamps corresponding to data from .bag file. Which means you need to use simulated clock from bag file.

Try the following:

1) start roscore as normal

2) setup roscore to use simulation time (I read that rosbag should do it automatically, but it didn't seem to work for me):

rosparam set use_sim_time true

3) start dummy TF transform

rosrun tf static_transform_publisher 0 0 0 0 0 0 map dummy_frame 100

Where:

  • 0 0 0 0 0 0 is offset and rotation for child frame "dummy_frame" - this does not matter
  • map is source "global" frame - this is the one you are missing (this should really be fixed in RViz, if no frames, then assume global frame exists with default name?)
  • dummy_frame - static_transform_publisher needs some child frame to work with - does not matter
  • 100 - publish rate in ms

4) Play bag file along with clock signal for other ROS nodes

rosbag play --clock mydata.bag

5) Start Rviz

Hope this helps.

2016-07-31 20:45:24 -0500 received badge  Popular Question (source)
2016-07-31 14:29:10 -0500 asked a question Subscribe to topic without specifying message type in C++

Hi All

We are writing piece of diagnostics software for ROS. Mainly a tool to display topic data streams etc. It is required to be done in such a way, that our tool can subscribe to any topic at runtime, including user defined messages. Something like GUI for rostopic info, kind of similar to rqt_plot.

Currently we are subscribing to topic using topic_tools::ShapeShifter, which works. ShapeShifter provides raw byte data buffer and message type definition as string (in rather clumsy format). So technically we got everything we need, but it really doesn't feel like the right way to do it.

Is there a "less wrong" way to subscribe to topic dynamically in C++?

Thanks Marcin

2016-07-31 14:14:58 -0500 answered a question Using Dynamixel Motors on Kinetic

I got dynamixel package running on Kinetic. It is not in apt-get repository yet.

Just create workspace, do git clone of dynamixel repository, then catkin_make. Don't forget to add appropriate source setup.sh line to your .bashrc and restart terminal/roscore before using. It should compile without errors on Ubuntu 16.04 (tested on PC only).

Create normal worksapce:

~$ mkdir -p ~/my_workspace/src
~$ cd ~/my_workspace/src
~$ catkin_init_workspace

Clone dynamixel source code and compile:

~$ git clone https://github.com/arebgun/dynamixel_motor.git
~$ cd ~/my_workspace
~$ catkin_make

Add your new worksapce to bashrc and source it (so it is visible to roslaunch)

~$ echo "source ~/my_workspace/devel/setup.bash" >> ~/.bashrc
~$ source ~/.bashrc

Run your shiny new dynamixel manager:

~$ roslaunch dynamixel_tutorials controller_manager.launch

Should work on Ubuntu 16.04

2016-07-31 14:11:41 -0500 received badge  Editor (source)
2016-07-31 14:10:12 -0500 answered a question ROS running on Raspberry PI 3

I'm running ROS Jade on RPi2 (Ubuntu 14.04) and ROS Kinetic on RPi3 (Ubuntu Mate 16.04) without any problems.

Note that by default hardware serial on RPi3 is connected to bluetooth. I didn't figure out how to break it out yet. Other than that all works great. Tested with Hokuyo laser scanner, usb_cam, etc. The heat is a bit of an issue, but at 50% CPU utilisation RPi2 is running at ~60C without problems.

Also, note that latest Ubuntu 16.04 for RPi3 is not stable yet (tested couple weeks back), thus using Ubuntu Mate.

2016-07-31 14:05:21 -0500 answered a question Is there a robot monitor node?

I had similar problem couple months ago. Needed to monitor robot for errors/warning, topic latency, diagnostic info etc. I tried rqt_robot_monitor but found it rather convoluted and difficult to setup. I ended up writing dedicated node to listen monitor other nodes and display easy to understand status info to the user. Unfortunately it was very project specific :| Would be great to have a proper generic tool for health monitoring.

2016-07-31 13:58:57 -0500 answered a question usb_cam package and head_camera.yaml missing

I was running simple usb_cam setup on Ubuntu 14.04 and ROS Jade. usb_cam installed from ros repository with apt-get. Didn't try on kinetic yet.

2016-03-28 06:19:14 -0500 asked a question Alternative to diagnostic_aggregator and robot_monitor?

Firstly, my first post, hello everyone!

I have been working with /diagnostics topic recently. Mostly for urg_node and mavros. I was wondering if there is any reasonable, maintained alternative to diagnostic_aggregator and robot_monitor? Basically I need a very simile GUI or terminal app that will consume /diagnostics topic, check names/keys/values against provided template and display overall status information. I know about rqt_runtime_monitor but it doesn't quite do what I need, it just displays whatever comes in.

Thanks Marcin