smarc-project / imc_ros_bridge Goto Github PK
View Code? Open in Web Editor NEW๐ข Minimal library for bridging ROS and IMC messages
License: Other
๐ข Minimal library for bridging ROS and IMC messages
License: Other
Neptus expects 2 types of messages from a vehicle to ensure the plans it has are correct.
First is the PlanDBInformation. This is a simple ack of a received plan.
The second is the PlanDBState. This includes PlanDBInformations in it for every plan the vehicle knows about, with their MD5 hashes. The hashes are calculated for the PlanDBSpecification message that was previously received (it has maneuvers and such in it, we send a PlanDBInformation when we first receive it).
As it is, the MD5 hashes are easier to calculate in the bridge, since the cpp IMC library already has the serialization method we need. So right now when a PlanDB message is received, if its arg is of type PlanDBSpecification, the MD5 is calculated and passed into ROS. The rest of the system just echoes that same MD5 back to the bridge when it sends the PlanDBState message.
If the MD5s that Neptus calcualtes and the MD5 it receives in the PlanDBState message do not match, Neptus considers the plan in the vehicle out of synch and warns the user when a plan is started. The source of the warning can be found by grep -r "not synch"
in Neptus source.
HOWEVER, our MD5s do not match with Neptus's. I am out of ideas and am giving up on it.
Here are some useful things to look at for any future souls that may attempt to fix this problem:
Java implementation of IMC:
https://github.com/LSTS/imcjava/blob/master/src/java/pt/lsts/imc/adapter/VehicleAdapter.java
https://github.com/LSTS/imcjava/blob/9d37d0eed8fe90f72f3a295c562c3fb53f6c7730/src/java/pt/lsts/imc/adapter/PlanDbManager.java#L65
https://github.com/LSTS/imcjava/blob/efed1384cc0cc5bacb8ce8ec7bcd536d19c91c8c/src/pt/lsts/imc/IMCMessage.java#L1592
This was received as a guide from our Porto comrades.
Good luck
We have used the imc ros bridge to convert different types of ROS messages to IMC messages, and the bridge works very well. However, we have noticed the following issues:
Finally, we have made a 'how-to' document for integrating custom ROS messages, i.e., ROS messages that are not part of default packages such as sensor_msgs, into the imc ros bridge. In our case, we show how customized messages from an SBG INS can be added (https://github.com/SBG-Systems/sbg_ros_driver). Is this of any interest for you?
Hi,
I am trying to set up a connection between ROS and a simulated instance in Dune of the lauv.
For that, I am executing the following command in Dune:
./dune -c lauv-simulator-1 -p Simulation
Now, I want to read the IMC messages from ROS and send tasks to the robot from ROS, such as the Goto task, which is exactly what your code seems to be doing.
However, when I execute your bridge_node with the command in the tutorial
roslaunch imc_ros_bridge bridge.launch server_addr:=127.0.0.1 server_port:=6002
It seems like the connection between them never happens; the ROS code never enters in the callback functions, and the dune console never shows that a new connection has been established.
I think the problem is in the ROS parameters for the connection, e.g. the port or the robot name. I am new to Dune and Neptus, and I am unsure of how to make it work. If you could give me an example on which parameters would make the bridge work with the lauv-simulator-1, it would be much appreciated :)
Thank you!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.