Live data from Hacker News

Robotics Development Environment with ROS in C++ and Python

github.com

41–50 of 59 posts

Re: Robotics Development Environment with ROS in C++ and Python

#42
post #27

ROS is really great for getting started with robotics, but from my experience (and from others who I've talked to) tends to buckle under its own weight in larger projects. This isn't to say you shouldn't use it, just be careful with it. It has some really questionable design decisions and implementation details that can bite you later.

Isn't this the case with any Python development in general? Once you start building at scale you'll be forced to use Cython extensions and other non-native python code.

The C++ side of ROS is better but still not amazing.

Re: Robotics Development Environment with ROS in C++ and Python

#43
post #27

ROS is really great for getting started with robotics, but from my experience (and from others who I've talked to) tends to buckle under its own weight in larger projects. This isn't to say you shouldn't use it, just be careful with it. It has some really questionable design decisions and implementation details that can bite you later.

Isn't this the case with any Python development in general? Once you start building at scale you'll be forced to use Cython extensions and other non-native python code.

Isn't this the case with any Python development in general?

No this isn't generally true for Python, and I'm not sure why you'd be forced to use Cython for things at scale. Unless you have some particular type of software in mind perhaps?

Re: Robotics Development Environment with ROS in C++ and Python

#44

Earlier quoted context omitted.

Isn't this the case with any Python development in general? Once you start building at scale you'll be forced to use Cython extensions and other non-native python code.

Isn't this the case with most of Python? It did a great job of pretending to be an efficient language by having libraries pawn off the heavy lifting to companion C implementations. I wonder what's so special about Python that it does this much more often than any of the other languages I know.

>I wonder what's so special about Python that it does this much more often than any of the other languages I know.

You answered it:

> It did a great job of pretending to be an efficient language by having libraries pawn off the heavy lifting to companion C implementations.

That's a feature.

Re: Robotics Development Environment with ROS in C++ and Python

#45
post #27

ROS is really great for getting started with robotics, but from my experience (and from others who I've talked to) tends to buckle under its own weight in larger projects. This isn't to say you shouldn't use it, just be careful with it. It has some really questionable design decisions and implementation details that can bite you later.

Isn't this the case with any Python development in general? Once you start building at scale you'll be forced to use Cython extensions and other non-native python code.

We’ve build a few enterprise sized applications in python and has a much better time of it than we ever did with the C#(that still powers most of our software).

Dynamic types aren’t exactly great, but Python is generally really good at getting things done. I probably wouldn’t use it if you had millions of concurrent users instead of the thousands we do, but for most projects it will work just fine even when the projects grow in size.

Re: Robotics Development Environment with ROS in C++ and Python

#46
post #36

Earlier quoted context omitted.

Examples of poor decisions? I am just interested.

- Fundamental bug in the way they compute message schema checksums used for compatibility checks, causes buffer overflows and undefined robot behavior when changing array lengths. Is marked as wontfix because they don't want to recompile existing packages. - custom build tooling based on cmake is super cumbersome and buggy, and it means that you simply cannot communicate with ROS based stuff, without yourself becomin…

With roslibpy you can communicate with ROS stuff without being a ROS Node: https://github.com/gramaziokohler/roslibpy "Unlike the rospy library, this does not require a local ROS environment, allowing usage from platforms other than Linux."

Please also consider, that this is related mostly to ROS1.

Re: Robotics Development Environment with ROS in C++ and Python

#47
post #27

ROS is really great for getting started with robotics, but from my experience (and from others who I've talked to) tends to buckle under its own weight in larger projects. This isn't to say you shouldn't use it, just be careful with it. It has some really questionable design decisions and implementation details that can bite you later.

Isn't this the case with any Python development in general? Once you start building at scale you'll be forced to use Cython extensions and other non-native python code.

The comment above is true of ROS, full stop. Even in C++ without involving Python. Especially if you have any real time requirements. It uses sockets for interprocess communication, which adds massive amounts of overhead. Replacing ROS and using straight function calls sped up a simulation of a system I was running from 10x real time to 1000x, for example. That's fine for certain applications but just didn't work for my particular use case.

Re: Robotics Development Environment with ROS in C++ and Python

#48

I kind of feel ROS rebuilt a ton of Google tech before it was open sourced. rosbuild is bazel, Ros messages are protobuffers/flatbuffers, orchistration is k8s. I feel we could do a better job these days with the newer tools rather than ROS's less maintained, less interesting to researchers, reimplementation of infra tech.

I've seen IPC tools be built from scratch or on top of more popular stuff in several companies I worked in, unfortunately.

ROS2 is building on DDS, which is a standardized protocol and has implementations from multiple vendors as well as open source implementations, with QoS built in etc.

Re: Robotics Development Environment with ROS in C++ and Python

#49
post #43

Earlier quoted context omitted.

Isn't this the case with any Python development in general? Once you start building at scale you'll be forced to use Cython extensions and other non-native python code.

Isn't this the case with any Python development in general? No this isn't generally true for Python, and I'm not sure why you'd be forced to use Cython for things at scale. Unless you have some particular type of software in mind perhaps?

>Unless you have some particular type of software in mind perhaps?

Webservices. May be its fine for couple of hundred users, but when there are thousands of concurrent users with heavy I/O I've been forced to replace asyncio with uvloop, replacing coroutine with gevent, implementing pre-fork worker models etc. to get decent performance.

I've since then moved any webservices development to Golang and has been perfect.

I understand there are large scale companies like Instagram which supposedly use Python and I don't detest it. It's just there are better tools for job now, especially for a lean startup and of-course Python has it's advantages like being a good first programming language and large library ecosystem.

Re: Robotics Development Environment with ROS in C++ and Python

#50
post #40

I kind of feel ROS rebuilt a ton of Google tech before it was open sourced. rosbuild is bazel, Ros messages are protobuffers/flatbuffers, orchistration is k8s. I feel we could do a better job these days with the newer tools rather than ROS's less maintained, less interesting to researchers, reimplementation of infra tech.

ROS does not do orchestration. The only valid point you have is that ROS IPC can do with better serde and yes, protocol buffers are indeed more elegant. The rest of it's not relevant to the actual project at all.

"roslaunch is a tool for easily launching multiple ROS nodes locally and remotely via SSH, as well as setting parameters on the Parameter Server. " sounds like a form of orchestration to me
Post reply on HN