I am looking for suggestions, recommendations, and lessons learned from those on the forum that are developing their own robots.
Let me start by saying that I am not an engineer or a programmer. I was the concept guy who developed the concepts, passed it off to the technical teams, and wondered aloud why it couldn't be developed in a week 😀 .
I joined this forum back in 2019 when Bill was actively developing a robot and bringing us along as he developed and tested each area of the project. I wanted to build an autonomous robot and this looked like the "hand holding" I needed. Unfortunately the project was scrapped and nothing has been developed in its place. I have been waiting for Bill to start a similar project.
Since 2019 I have developed a few projects using Pi and Arduinos for around the house, but still wanted to develop a robot. Since this will be a learning adventure my goals will be simple. Maybe goal #1 will be driving in a straight line. Also, I would like this robot to be able to operate inside and outside.
For this post I have two questions.
1. What is a recommended hardware configuration to start? Should it be only the Pi5, only ESP32-S3, a mix of Pi and ESP32-S3, or other configuration? Would it make sense to split the sensing from robot movement across the hardware? Is one type of hardware better than the other for the desired purpose (sensing versus movement)?
Here is a list of what I have in the workshop:
- Raspberry Pi 5/4/3B
- A1 RPLIDAR 360 degree dev Kit
- Intel Realsense Tracking camera T265
- Gravity Huskylense (original)
- ESP32-S3-DevKitC-1
- Arduino Mega R3 Board
- ESP32-S3-Box-3
- FPV camera
- HC-SR04 Sensors
- TF Mini Micro laser
- PICO W
- ESP32-EYE
- Jetson Nano model P3A50 (purchased in 2020)
- Turtle Bot 3 Waffle Pi (purchases 2019)
- Waveshare Jet Bot (purchased 2020)
- Arduino Giga R1 Wifi with display boards and camera
2. Programming language for Pi 5? I've written only a couple application in python and I would rate myself as a beginner (was watching Paul McWhorter back in 2019/20). I am a little bit more comfortable with Arduino (C++). If the recommendation is to use the Pi 5, can I write C++ code versus python?
I am just looking for a starting vector for this project. Any and all input is appreciated. I'll create a project thread if it looks like I am having some success.
Thanks
Mike
list of what I have in the workshop
What a great list of hardware to play with!
My thoughts on Python is that you will find a lot of support and examples for that language.
As you are not an engineer or a programmer then a step by step tutorial on building a robot using the hardware you have would be ideal if you can find one. Have you done an internet search?
To work well outside a four wheel stable and robust platform would be ideal.
https://www.waveshare.com/rasprover.htm
@robotbuilder Thanks for the response.
I've been searching and I find examples with both the Pi and ESP32. Some of the examples are pretty basic - good starting point for me, but not sure if the code is extensible or I'd have to start over as I add new capabilities (LIDAR, etc.).
Years ago I saw a tutorial that showed the robot system architecture. I thought that would be a great example to follow (if I can find it) as it would help me understand the interactions between HW/SW functions.
I am also looking on Amazon for a book that would have examples that I can follow.
I have some motors and 1 RC car chassis (1/10 scale) that I might try and use, but the chassis will be important along with the motors. I built a simple tracked chassis using an RC receiver, but it lacked the torque to move off of the cement driveway.
I'm guessing this will be a mix of technologies and I'll need to understand what functions are best suited for which hardware.
Thanks again....back to google search (see need to search dronebotworkshop too).
That's a nice unit. Thanks for sending the link. I was looking at RobotShop, ServoCity and a few other places. Didn't check waveshare and I bought their Jet Bot years ago!
1. What is a recommended hardware configuration to start?
#1: This is a "... not as I do" reply. I'd go for the Raspberry Pi setup. We've worked together so I know you're capable with the ESP32 and Arduino. Now is the time to move up to a SoC system. I'd get the complete car bot as a template bot to work from, as opposed to the chassis only. I prefer to have a model to work from, is all; and it helps to get your feet wet.
#2: Your C and C++ skills won't be lost with a RPi; the opposite. But if you can, brush up with Python. That will pay off nicely. Unless I'm way off ("Never, Tim!") most folks here speak Python every other sentence.
The one who has the most fun, wins!
To start with the last question first then yes, you can certainly code in c++ on the Rpi's though you will not be able to do so from the familiar Arduino IDE. You will probably have to use something like Visual Studio Code.
My personal preference would be for python mainly because the development environment is much easier, no more needing to compile meaning its really simple to run - adjust - run again. Say you've got some code that to run the bot in a straight line, but the dam thing is still veering a bit to the left, a quick ctrl C to stop the program, amend the bias variable of the pmw sent to one of the motors drivers, and hit the run button (probably only go veer to the right this time, but maybe you will be coding a PID function 😎 ) I expect you will also find it a lot easier to use OOP and classes etc with python, say to create a motor object that then has a motor instance for each of the motors etc.
But don't take my way of working as a recommendation, as programming in C++ or Python will do the job just fine.
To get going my suggestion would be to start simple and get a bot chassis that had 4 wheels and an Ackerman front wheel steering arrangement rather than skid steering type of chassis, a motor driver board and your choice of the esp32 of picoW. That would get you going and enable you to test your code to get the bot trundling along in a straight line compensating for any imbalance of the motors (and there usually is). Keeping your code modular will enable it to be easily moved to another board as you progress (different pin names etc). Then it will be time to get more complicated.
I don't think theres a straight answer on using one board, say a rpi5, or using multiple boards. Using multiple board does mean more of a twixt board communications challenge, but multiple boards can be advantageous where a processor can be dedicated to specific tasks. If I remember correctly the DroneBot bot ran into serious issues with using i2c to communicate with a bunch of processor board due to noise on perhaps too long cable lengths. The likes of an rpi5 can both run many programs simultaneously and utilise many threads within each program, but its will need bigger batteries than the simple microprocessor boards. Which reminds me of another python advantage, in this case micropython, as its much easier to run asynchronous programs on the likes of the esp32 or picoW to do some multitasking on those boards. (but there is a leaning curve to get to grips with the async programming demands)
I recently bought a rover and base station gps rtk boards from waveshare as the cost is now down to the sub $100 mark and something like that may prove to be good for navigating your bot outdoors, but of no use indoors.
Anyway I hope that was just some food for thought and look forward to seeing how your bot adventures progress.
@byron Thanks for the response. I am looking at waveshare and yaboom. I just read about the power issue/concern with the Pi 5. Much to think about, but I like the ability to purchase some of these robot expansion boards for the Pi 5.
Thanks!
I recently bought a rover and base station gps rtk boards from waveshare as the cost is now down to the sub $100 mark and something like that may prove to be good for navigating your bot outdoors, but of no use indoors.
Byron, Can you send me a link to the rover you purchased? I can only find one "outdoor" 4WD chassis with Ackerman steering from Cytron Chassis. It's approximately $140 with shipping.
The rover I was referring to in that remark was the gps rtk 'rover' board. When using gps rtk boards one board is placed on the 'bot' which roves about the place and to get centimeter accuracy this 'rover board' needs to get gps correction signals from somewhere which could be from some remote source fed from the internet or ones own local fixed 'base station' with is a rtk board that remains in the same place.
I don't actually have an Ackerman steering bot, but a 4 wheeled version of the 6 wheeled pololu bot that @dronebot-workshop has a go at some years ago. I cant find a link to Bills pololu bot, but he build a nice motor control for it if I remember correctly, but heres a pic of mine.
But my remarks on getting a bot with proper steering are based my use of using this this skid steer bot, and a brief foray with a remote controlled bot that ended up being given to a nephew, and whilst I'm currently using it as my testbed for the gps rtk I intend to base a new bot on one of those remote control model cars such as the following (just picked as an example of the sort of chassis and I would certainly junk the silly car body and replace it with my own 3d printed box to house the electronics. I would be looking for some sort of 'rock crawler' as they call them as I dont want it to charge about the place at high speed. 😎 )
https://www.modelsport.co.uk/product/tamiya-rock-socker-truck-cr-01-385123
@byron Thanks for the response. I searched last night and today and the only outdoor chassis with Ackerman steering was from Cytron (Chine) and would cost ~$140 with shipping.
I went with the Yahboom Smart Robot Ackerman Chassis from Amazon. I also purchased Yahboom Robot Expansion Board 3.0 to work with the Pi 5.
Thanks for your input!
@tfmccarthy Tim, I decided to go with the Raspberry Pi and code in Python. This should be entertaining!
I was 90% leaning towards a complete kit (waveshare or yahboom) but the $900 price tag was more than I care to spend right now (I wanted everything - off road, Ackerman steering, LIDAR, cameras, soda and rolling hot dog machines!). I bought complete kits back in 2019 and 2020 and I really didn't learn much when all the coding was completed for me. Since I really didn't understand ROS1 I had trouble getting anything to work.
I have a pile to parts I can use on this robot and figured the best way to learn is to start with the basic movements and add capabilities as I go along. I am sure when I finally quit it be be a single file of 10,000 LOC and no objects/classes - or whatever they're called.
I have your number on speed dial!
My apologies. I wasn't clear about what I meant by a complete kit vs chassis only.
I agree, $900 is ridiculous. By a complete kit what I meant was a basic robot car without the RPi; preferably with a camera. Here are three:
-
- TurboPi roboty chassis $139
- Freenove chassis $74
- Sunfounder chassis $90
I think one of them should be within budget. Then you get the RPi for what, like $60 more? That's reasonable. (I spent more on one Petoi Bittle quadruped.)
What you get is an introduction to the RPi, how it controls the sensors and servos, a working robot car, and the final payoff, a template for the robot car you actually want to build. Now I've seen your work on the shack and hut, so you're more than able to build you own chassis, given the template. And you seem to have all these bits and pieces just lying around looking to be adopted. You just need a starter for the RPi and the bot and "Bob's your uncle!"
But I didn't make that clear, did I? That's because I was worried the chickens had put you out of the house and the bunnies wouldn't let you in theirs. Or something like that.
The one who has the most fun, wins!
I am looking for suggestions, recommendations, and lessons learned from those on the forum that are developing their own robots.
Let me start by saying that I am not an engineer or a programmer. I was the concept guy who developed the concepts, passed it off to the technical teams, and wondered aloud why it couldn't be developed in a week 😀 .
I joined this forum back in 2019 when Bill was actively developing a robot and bringing us along as he developed and tested each area of the project. I wanted to build an autonomous robot and this looked like the "hand holding" I needed. Unfortunately the project was scrapped and nothing has been developed in its place. I have been waiting for Bill to start a similar project.
Since 2019 I have developed a few projects using Pi and Arduinos for around the house, but still wanted to develop a robot. Since this will be a learning adventure my goals will be simple. Maybe goal #1 will be driving in a straight line. Also, I would like this robot to be able to operate inside and outside.
For this post I have two questions.
1. What is a recommended hardware configuration to start? Should it be only the Pi5, only ESP32-S3, a mix of Pi and ESP32-S3, or other configuration? Would it make sense to split the sensing from robot movement across the hardware? Is one type of hardware better than the other for the desired purpose (sensing versus movement)?
Here is a list of what I have in the workshop:
- Raspberry Pi 5/4/3B
- A1 RPLIDAR 360 degree dev Kit
- Intel Realsense Tracking camera T265
- Gravity Huskylense (original)
- ESP32-S3-DevKitC-1
- Arduino Mega R3 Board
- ESP32-S3-Box-3
- FPV camera
- HC-SR04 Sensors
- TF Mini Micro laser
- PICO W
- ESP32-EYE
- Jetson Nano model P3A50 (purchased in 2020)
- Turtle Bot 3 Waffle Pi (purchases 2019)
- Waveshare Jet Bot (purchased 2020)
- Arduino Giga R1 Wifi with display boards and camera
2. Programming language for Pi 5? I've written only a couple application in python and I would rate myself as a beginner (was watching Paul McWhorter back in 2019/20). I am a little bit more comfortable with Arduino (C++). If the recommendation is to use the Pi 5, can I write C++ code versus python?
I am just looking for a starting vector for this project. Any and all input is appreciated. I'll create a project thread if it looks like I am having some success.
Thanks
Mike
Raspberry Pi 5 is best suited for high-level control, sensor fusion, and navigation. Use it to run ROS (Robot Operating System) if you plan to get into serious robotics. It can handle vision processing with your Intel Realsense T265 and FPV camera. You may use RPLIDAR A1 to Map the environment in 2D and TF Mini Micro LiDAR for short range obstacle detection. To program the Raspberry pi 5, you can use python or C++ with ROS 2. Here are some sources that you may find helpful.
https://www.pcbway.com/project/shareproject/An_introduction_to_quadruped_robot_models_0f4aa139.html
https://docs.ros.org/en/foxy/How-To-Guides/Installing-on-Raspberry-Pi.html
