Comments (6)
Hi,
Thanks for the interest! I'm currently working on designing a TCPROS client (ROS is generally badly documented, so there is a lot of Wireshark fiddling in this). Once that is done, pub/sub and service/client will be a couple of hours of work to make.
After that, I'll make examples. For now you can get/set parameters (as stated in the README). The next time you get a notification from this issue, the stated features and examples will be there!
from rosrust.
If you come up with some new insights on ROS to help improve the documentation/etc you should publish them! I have been trying to find those details for a while and never actually got to sitting down with wireshark
from rosrust.
Yeah, most of the delay in this process is caused by ROS's documentation being very lacking, which is made extra bad by the fact that a lot of elements of protocols are wildly different on the original C++ and Python implementations.
Getting all of that right is what's taking so long 😢.
from rosrust.
In theory, the master API is documented here (and the immediate linked pages): http://wiki.ros.org/ROS/Master_API
If you're keeping notes, it would be great to have something published afterward which details how the docs diverge from reality. Also, I'm curious that you've had to reimplement xmlrpc— are they ways that ROS usage deviates from the standard that make one of the other implementations (eg) unsuitable?
Finally, not sure how far along you are with message generation, but one thought on that is that (at least temporarily) you might be able to use a bridge like rust-cpp to reuse the serialization code avoid needing to build out all of that infrastructure. Another alternative path here might be to avoid compile-time generated headers altogether, and instead parse the msg files at runtime, following the pattern of variant.
from rosrust.
I was less worried about Master API, and more worried about Slave API (its first method doesn't even have an explanation on what all of its various return values mean).
At the moment when I wrote the xmlrpc code there weren't any existing libraries (I started working on this several months before the linked lib even had its first release). ROS works pretty standard with XMLRPC.
Message serialization is done, I just have to look into more ROS details to choose the best way of implementing all of the genmsg bindings, and add things to the ROS build farms so that I have all the standard message types generated right in the distro. I'll do all of that once I'm done with service/client, which should hopefully be by next week!
from rosrust.
@cwoodall @mikepurvis Since you've asked, I just ran into something right now. Apparently a client can "probe" your service, sending you this kind of a garbage header:
{
"md5sum": "*",
"service": "/add_dem_numbers",
"callerid": "/rosservice",
"probe": "1"
}
This is not documented anywhere, and is extra annoying since I've coded things in a way that if I get a header that doesn't match, I just say no thanks, bye.
Also, after I dealt with that, I still had issues connecting to rosservice. The docs explicitly say that a client has to send a "type" field, but "rosservice call" never does that.
In any case, publisher/subscriber and service/client are done!
I'll make some examples right now!
from rosrust.
Related Issues (20)
- Derive Serde's Serialize and Deserialize for the generated message structs HOT 1
- Publish data to different computer HOT 1
- Upgrade nix to 0.25.1? HOT 1
- Synchronising multiple topics HOT 3
- subscribe_param HOT 2
- Shared memory accessible within multiple callback functions
- Using struct methods as callback for subscription HOT 1
- rust analyzer not showing completion for custom messages but shows it for "built-in" messages like std_msgs/Header HOT 2
- First publish of publisher_node is lost HOT 3
- Example will not compile: Could not find `std_msgs` in `rosrust_msg` HOT 1
- dynamic_reconfigure with rosrust
- consider moving on from `error_chain` HOT 1
- Could `Publisher` gain a `has_subscribers()` function
- Is the ctrl-c shutdown handler needed? HOT 2
- thread leaks when using rosrust::api::Ros::new HOT 1
- spin_once implementation in rosrust HOT 1
- rosrust subscribes to the entire parameter tree (/)
- Using srv inside rorust code
- Unsoundness in `(decode/encode)_variable_primitive_vec`
- Not compiling
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rosrust.