773 karma · joined May 8, 2017
Get in touch: mat@msadowski.ch
When architecting a system from scratch it's a bit easier since you don't deal with legacy systems at the beginning. Then when doing specifications I tend to divide the system into parts: actuation, sensing, logic. Then depending on the application I try to choose the best systems for doing the job.
For example if the robot is meant to be used in an agricultural context you know you need some kind of global localization (RTK GPS is probably best), usually you will need an IMU as well (this one will depend on the platform, budget etc). Then if you are expecting some occlusion (e.g. treetops) you might start thinking on what will happen to the GPS signal and what other sensors to add.
I do similar considerations for the actuators and software logic, trying to think of all possible scenario in a representative environment. From my experience if the work is fully remote it takes between 30 minutes to 1 hour just to discuss the environment, allowing me then to propose the best systems for the job.
Humanoid robots sound super difficult. I don't know how many companies might be working on humanoids so I'd advise you to try to look for something relatively broad. For example mobile robots and drones have been working quite well for me, but hardware wise I'd expect them to be much simpler than humanoids.
Also I take projects outside of Upwork, however, I don't get as much traction outside of that platform, and as much as I would like to live off direct contracts it doesn't seem it will happen anytime soon.
* We have a working robot now, and this robot will need to perform very repeatable tasks by driving through waypoints. Let's design a state machine that would do that. * We need to make a system for outdoor mapping using a LiDAR. Can you suggest off the shelf LiDAR and localization system that we could use and then integrate everything in ROS? * My robot has misconfigured local navigation and it's not listening. Could you have a look? * The rangefinder we are using on the drone is not performing well. Can you look through the logs and help us troubleshoot it?
Quite often the work requires me to integrate existing software. ROS (Robot Operating System)is amazing for this, as it has lots of open source packages, where some of them work really well out of the box.
I rarely add anything to off-the shelf robots. Most of my clients are making their own robots and want help with architecting/programming these systems. I don't design any components (I don't have almost any experience with electronics). I can do some simple CAD design if needed but my clients are better of hiring someone for CAD anyway.
I'm not sure what do you mean by robot designs from scratch - if you mean robots that you could build and program yourself then yes, there are plenty! I've listed some of the ones I liked the most in Awesome Weekly Robotics (https://github.com/msadowski/awesome-weekly-robotics).
Currently I don't think I would try to compete with someone like Roomba. It would take huge amount of money to create robots like these at scale for the low price of these units. Also all the electronics need to be certified (at least with a CE mark, but I expect something else would also be needed). Rarely one person can pull something like this off from A to Z.
If I'm ever to start a company I would like to try to grow it organically. If I ever get a really good idea I'll definitely give it a shot.
Geneva is crazy expensive and this is the main reason why I'm moving to Prague in two weeks!
On one occasion I had a client not pay, but thanks to the Upwork protection I got paid quickly and then they resolved it with the client.
If I was doing a similar service as UpWork and wanted to offer a kind of payment protection I'm not sure how I would go about that. I'm thinking maybe something like a code diff week-after-week sent to the client but at the same time not everything can be diffed (especially countless meetings with clients). Would you have some ideas?
I love the idea of ROS2 but the advice I'm usually giving clients is to only look into it as a part of their R&D and to expect to be very early adopters and therefore most likely needing to fix multiple issues that will inevitably come up.
For the companies that have a single product they are focusing on and that they want to push out of the door as quickly as possible with minimum R&D budget I suggest sticking with ROS Melodic (afaik more package support Melodic than Noetic) but I also recommend them to keep an eye out on ROS2 and switching to it as soon as it makes sense for them.
Right now I'm basing almost all my view on ROS2 on Michael Ferguson's blog (https://www.robotandchisel.com/) and particularly this article: https://www.robotandchisel.com/2020/07/29/five-things-ros2/.
When I will finally start experimenting with ROS2 I'm going to start with Autoware course: https://www.youtube.com/watch?v=XTmlhvlmcf8
About the fake soldier-robot video: I think it's a good satire and I hope we will never get to anything similar to this in real life. As you probably noticed from the article I'm not a fan of military robotics.
I started by doing two projects on Upwork while working a full time job, then I decided to quit without any projects lined up and was very lucky to find a long term project on Upwork before my 1 month notice period finished.
Marketing wise at the beginning it was just Upwork. Shortly after I started I tried writing technical posts for my blog (mostly related to ROS and some hardware testing/reviews). Around that time I also started Weekly Robotics newsletter (https://weeklyrobotics.com/) but so far it brought only one client onboard but it's a great way to show potential clients that I'm following what's going on in the industry.
When it comes to tips: I would suggest learning ROS - if you have experience in software it should be quite easy for you but expect some learning curve. Then I would suggest doing some projects like integrating SLAM and obstacle avoidance on a mobile robot, ideally with a physical platform.
If I were you I would treat it as a hobby in the beginning and try to have fun and if you find a niche that truly sparks your interest it might be worth specializing in it.
I've put this article together and thought some of the points I'm making might be relevant for you - especially these about remote work and self-employment. If you have any questions or need some tips then feel free to comment here or send me an e-mail (you'll find it in my profile description)
* Quadruped 8dof * Quadruped 12dof * Biped 3dof * TriFinger (the link above)
I'd love to build the actuator module from this project one day!
[1] https://github.com/open-dynamic-robot-initiative/open_robot_...
If someone would like to build something larger then Stanford Dogg (https://github.com/Nate711/StanfordDoggoProject) is one choice, however as far as I remember the price comes to around $3k for parts only.
Even cheaper alternative to Pupper could be OpenCat (https://www.petoi.com/) however it was never fully open source and I don't think it's available anywhere.
I wish this had a bit more processing power (or a raspberry pi add on) so that it could run ROS but that would definitely hurt the flight time.
Couple of years ago there was a prototyping board Snaodragon Flight that came with built-in cameras for optical flow: https://discuss.ardupilot.org/t/ardubee-a-ready-to-fly-micro.... I think some people here might find it interesting.
If however you do more long term projects (I have one active project that has been open for 2 years) then you quickly get to the 10% charge.
I wish they reduced the amount of money you need to earn to enter 5% charge range (it's currently $10k AFAIK) and I imagine it's quite rare for freelancers to get there.
What I think is quite bad on UpWork when it comes to charges is the 'connects' that you have to pay for since last year I think. Last I checked it was up to $1 USD per project proposal, which might make it very difficult for some people to get their foot in.
I also don't mind paying since so far it's been the best method to get projects for me so far.
With the current setup the only cost I have are the TransferWise fees for USD to EUR conversion when I send the money to my local bank.
At one point I decided that it would be nice to add header images to every issue. I decided to do it through a quick and dirty python script that adds the text for me.
Another thing I've just recently automated is the python script calling mailchimp API to show me the most popular link together with unique opens. I'm currently planning to embedd this info in every issue.
The next step that I'd like to automate is the campaign creation. With the API I don't suppose this will be a huge deal, just need to put some time on this. When I have it then I'd like to create a commit hook that will do all of these things automatically after pushing changes to the repo.