[Discourse.ros.org] Rosserial_arduino performance question

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[Discourse.ros.org] Rosserial_arduino performance question

Joshua Whitley via ros-users



Hi,  I've been using myrobotlab but am looking to migrate to ROS.  SO I'm just getting started.

Currently using Arduino to interface to 5 servos in a humanoid head including eye cameras as a starting point for some CV experimentation with object tracking and recongition.

I've installed the latest version of 32 bit ROS on a Ubuntu 16.04.2 Mate system running in 32bit VirtualBox under Linux Mint.  of course I expect that things will be a bit slower running on the VM.  But Ubuntu is pretty responsive.

I've built the Blink example and have successfully controlled the LED using ROS, but there is a several second delay from when I start the command to when the LED changes state.

Same thing for the single servo example.  It takes about 4 seconds from then I start rostopic to when the servo actually moves.

Is this just due to running in the VM environment, or is there something else that I should be looking at to improve the performance.  Obviously a 5 second latency from command to movement is going to be a problem:)

If it is just due to the VM environment I have another machine I can sacrifice to doing a bare metal install of Ubuntu 16.04 on.

Other than this perhaps being due to the VM installation is there anything I should be looking at that can reduce the latency?

Thanks,
Burt






---
[Visit Topic](https://discourse.ros.org/t/rosserial-arduino-performance-question/1631/1) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list
[hidden email]
http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>
Reply | Threaded
Open this post in threaded view
|

[Discourse.ros.org] Rosserial_arduino performance question

Joshua Whitley via ros-users



Hi It's definitely the VM, as ROS is a heavy software I expect it to run much slower in VM's. Though I have used Arduino Mega with ROS indigo on a VM (Ubuntu 14 running on Ubuntu 16) and the time delay was still maximum around a second. I suggest look into the rosrate, the rate at which the communication takes place given in hertz. Maybe You can use Rviz simulation tool to simulate and check the response of your components, but you will have to create a urdf model of your setup and write some code to make it move on Rviz.






---
[Visit Topic](https://discourse.ros.org/t/rosserial-arduino-performance-question/1631/2) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list
[hidden email]
http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>
Reply | Threaded
Open this post in threaded view
|

[Discourse.ros.org] Rosserial_arduino performance question

Joshua Whitley via ros-users
In reply to this post by Joshua Whitley via ros-users



Thanks, I don't know if you saw my edit.  I got to thinking that at least part of the latency could be due to having to load rostopic each time to send the message from the examples, so part of the delay may be the time it takes for rostopic to load and initialize before it gets around to sending the message.

So I was thinking that I could write a test program that would be able to send several messages in a row without having to reload and init for each command, or maybe there is a way with rostopic to accomplish the same thing for testing.  So more digging into examples and tutorials.

I'm also working on setting up an older box to try running ROS without the VM.  Unfortunately the one I have available has some issues running 16.04 Ubuntu, and even 15.10.  I was able to get 15.04 to install and run well, but I prefer to use the latest ROS, so I'm seeing if 15.10 even with a couple of hiccups will work well enough.  If not then I'll have to get a newer machine to use for ROS testing, or figure out the hiccups with trying to get ROS installed under Linux Mint.

Thanks again,
Burt






---
[Visit Topic](https://discourse.ros.org/t/rosserial-arduino-performance-question/1631/3) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list
[hidden email]
http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>
Reply | Threaded
Open this post in threaded view
|

[Discourse.ros.org] Rosserial_arduino performance question

Joshua Whitley via ros-users
In reply to this post by Joshua Whitley via ros-users



OK, I have ROS kinetic running now on an older 32 bit box running Ubuntu 15.10.

That improved things significantly.  Now each launch of rostopic has a latency of a bit under 2 seconds from the time I press enter to when one of the servos connected to the Arduino moves.  That is much better than the 4+ seconds I was seeing in the 32bit VM installation.

Now on to some more advanced tutorials and getting things set up to drive all 5 of the servos associated with the head I'm working with, then on to looking at OpenCV integration, etc.






---
[Visit Topic](https://discourse.ros.org/t/rosserial-arduino-performance-question/1631/4) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list
[hidden email]
http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>
Reply | Threaded
Open this post in threaded view
|

[Discourse.ros.org] Rosserial_arduino performance question

Joshua Whitley via ros-users
In reply to this post by Joshua Whitley via ros-users



You're right about the initialization time. On startup, `rostopic` registers a new publisher with the ROS master. Then, `rosserial_arduino` is notified of this and negotiates a direct communication channel with `rostopic`. All of this takes some time. So what you should do is create a publisher once and keep it open. This should greatly reduce your latency on all following `publish()` calls.






---
[Visit Topic](https://discourse.ros.org/t/rosserial-arduino-performance-question/1631/5) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list
[hidden email]
http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>
Reply | Threaded
Open this post in threaded view
|

[Discourse.ros.org] Rosserial_arduino performance question

Joshua Whitley via ros-users
In reply to this post by Joshua Whitley via ros-users



Thanks Martin,  That's what I'm working towards and I do expect that performance will be significantly improve the performance.

Just started dipping my toe in the ROS water so I have a bit to go before I'm fully up to speed:)






---
[Visit Topic](https://discourse.ros.org/t/rosserial-arduino-performance-question/1631/6) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list
[hidden email]
http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>