Notifications
Clear all

MQTT

10 Posts
4 Users
0 Reactions
2,091 Views
teddy
(@teddy)
Member
Joined: 5 years ago
Posts: 41
Topic starter  

Bill, how about looking at: MQTT - MQ Telemetry Transport or Message Queuing Telemetry Transport as a project?

 

Ted


   
Quote
Spyder
(@spyder)
Member
Joined: 5 years ago
Posts: 849
 
Posted by: @teddy

how about looking at: MQTT

I totally agree with this one, as ROS uses MQTT as a msg service, which makes it fundamentally relevant to the DB1 project if, in fact, you intend to implement ROS


   
ReplyQuote
byron
(@byron)
No Title
Joined: 5 years ago
Posts: 1174
 
Posted by: @spyder

ROS uses MQTT as a msg service, which makes it fundamentally relevant to the DB1 project if, in fact, you intend to implement ROS

And it may also be relevant even if ROS is not used as I think DB1 will use ethernet to communicate between some of its on board computers.  It would also be very useful if DB1 had wifi and was to send telemetry data to a 'HQ' computer or even to receive some 'overseeer' commands.  

Outside of robotics I use it to do computer to computer comms on my home network where a house based computer connects over both hard wired and wifi ethernet to the likes of rapsberry pi's and esp8266 /32 boards running weather stations and 'outpost' monitoring of the greenhouse and heating oil tank etc.  I both collect the data sent into a database and transmit data to the remote computers to do stuff like switch on the greenhouse heater or turn on outside lighting.  

Its a very useful means of passing data twix computers, it is easy to set up and use (once you know how 😋), so a write up of mqtt in the excellent DroneBot stye would be welcome I'm sure.


   
ReplyQuote
(@starnovice)
Member
Joined: 5 years ago
Posts: 110
 
Posted by: @spyder
Posted by: @teddy

how about looking at: MQTT

I totally agree with this one, as ROS uses MQTT as a msg service, which makes it fundamentally relevant to the DB1 project if, in fact, you intend to implement ROS

ROS uses it's own proprietary stack to communicate among the nodes.  It does have a MQTT bridge to export to MQTT, http://wiki.ros.org/mqtt_bridge

But MQTT is not a part of ROS and it does not need it for communication.

Pat Wicker (Portland, OR, USA)


   
ReplyQuote
byron
(@byron)
No Title
Joined: 5 years ago
Posts: 1174
 
Posted by: @starnovice

ROS uses it's own proprietary stack to communicate among the nodes.

I think I seen the ROS comms described as a publish / subscribe protocol like MQTT.   I don't know much at all about ROS but maybe the way its protocol is described has led to confusion?


   
ReplyQuote
Spyder
(@spyder)
Member
Joined: 5 years ago
Posts: 849
 
Posted by: @byron

It would also be very useful if DB1 had wifi and was to send telemetry data to a 'HQ' computer or even to receive some 'overseeer' commands.  

Yea, I wondered about that. Why couldn't we use wifi modules like the 8266 or esp32 when we can instead of only i2c ?

Or is there a benefit to sticking to a single form of comms ?


   
ReplyQuote
Spyder
(@spyder)
Member
Joined: 5 years ago
Posts: 849
 
Posted by: @starnovice

MQTT is not a part of ROS and it does not need it for communication

Oops

I was under the impression that it was fundamental to the pub/sub service


   
ReplyQuote
(@starnovice)
Member
Joined: 5 years ago
Posts: 110
 

@spyder That does not make it any less of an interesting topic, I see there are no shortages of YouTube videos about it.

Pat Wicker (Portland, OR, USA)


   
ReplyQuote
byron
(@byron)
No Title
Joined: 5 years ago
Posts: 1174
 
Posted by: @spyder

is there a benefit to sticking to a single form of comms ?

I expect that i2c coms may be quicker than MQTT, just based on gut feel.  

In MQTT there are internal ways of managing the queue to be sure any message that was published is received by a subscribing client, but without setting any of this up (so publish by one - receive by another - but the publisher does not check on this) I wondered what would happen if I bombarded my main mqtt subscriber computer, that collects data into an sql database, with many messages simultaneously.  

I set up 2 computers to publish 1000 data messages each just as fast as they could to the mqtt broker.  The subscriber computer (which was also the broker) ran a program to receive the messages (mqtt generates a callback for each received) and put them into a queue which was read on a FIFO basis to update the database (several database tables were involved in the update).  

The sending of the data on the sending computers was as quick as pressing the button to send.  The receiving computer' program that placed the received data into a queue and then updated the database took a little longer, over a minute if I remember rightly (maybe even more than 2 minutes), but no data was lost in this process.   So mqtt is fast and reliable, but large amounts of data all arriving at once may not be quick enough for some situations.


   
ReplyQuote
(@starnovice)
Member
Joined: 5 years ago
Posts: 110
 
image

The left side is an image of the ROS stack.  The right side is ROS2 which is not quite ready for prime time.

Pat Wicker (Portland, OR, USA)


   
ReplyQuote