Building a ROS Robot for Mapping and Navigation #1
Ғылым және технология
Get your first 10 PCBs for free at www.pcbway.com/
I previously showed a demo of Turtlebot 3 doing mapping and navigation with ROS. Now it's time to attempt to built a robot from scratch and understand how ROS hangs together and which components we need to implement it all from scratch. I'm using my NERF Blaster Robot chassis to try this because it has wheel encoders and already has an Arduino on board.
In this video I've added a Raspberry Pi 4, and an RPLidar A1 which we'll look at more closely next time.
Links for this video:
Free ROS book: emanual.robotis.com/docs/en/p...
Robot Ignite Academy: www.theconstructsim.com/
Ubuntu Mate on Rasp Pi 4: • Install Ubuntu MATE On...
wiki.ros.org/ROS/Installation
wiki.ros.org/catkin/Tutorials/...
You can support me on Patreon or buy my Merchandise:
***************************
Patreon: / xrobots
Merchandise: teespring.com/stores/james-br...
***************************
Affiliate links - I will get some money of you use them to sign up or buy something:
***************************
Matterhackers 3D printing supplies: www.matterhackers.com?aff=7500
Music for your KZread videos: share.epidemicsound.com/xrobots
Amazon US: www.amazon.com/?tag=xrobotsuk-20
Amazon UK: www.amazon.co.uk/?tag=xrobots...
Amazon FR France: www.amazon.fr/?tag=xrobotsuk0...
Amazon DE Germany: www.amazon.de/?tag=xrobotsuk0...
Amazon ES Spain: www.amazon.es/?tag=xrobotsuk0...
Amazon IT Italy: www.amazon.it/?tag=xrobotsuk0...
***************************
Other socials:
***************************
Instagram: / xrobotsuk
Facebook: / xrobotsuk
Twitter: / xrobotsuk
***************************
CAD and Code for my projects: github.com/XRobots
Huge thanks to my Patrons, without whom my standard of living would drastically decline. Like, inside out-Farm Foods bag decline. Plus a very special shoutout to Lulzbot, Inc who keep me in LulzBot 3D printers and support me via Patreon.
HARDWARE/SOFTWARE
Below you can also find a lot of the typical tools, equipment and supplies used in my projects:
Lulzbot 3D Printers: bit.ly/2Sj6nil
Lincoln Electric Welder: bit.ly/2Rqhqos
CNC Router: bit.ly/2QdsNjt
Ryobi Tools: bit.ly/2RhArcD
Axminster Micro Lathe: bit.ly/2Sj6eeN
3D Printer Filament: bit.ly/2PdcdUu
Soldering Iron: bit.ly/2DrNWDR
Vectric CNC Software: bit.ly/2zxpZqv
Why not join my community, who are mostly made up of actual geniuses. There’s a Facebook group and everything: / 287089964833488
XROBOTS
Former toy designer, current KZread maker and general robotics, electrical and mechanical engineer, I’m a fan of doing it yourself and innovation by trial and error. My channel is where I share some of my useful and not-so-useful inventions, designs and maker advice. Iron Man is my go-to cosplay, and 3D printing can solve most issues - broken bolts, missing parts, world hunger, you name it.
XRobots is the community around my content where you can get in touch, share tips and advice, and more build FAQs, schematics and designs are also available.
Пікірлер: 274
Can't stop hearing it as ROSberry Pi :D
@SCU3A_S7EVE
4 жыл бұрын
I hear it as “green needle.”
@cmacks95
3 жыл бұрын
Rosberry Pi is the Ros image for raspberry pi 4
I had been trying to get into ROS and couldn’t find my way into it. Thanks to you I have now started in RoboIgnite Academy. This series has just become more fascinating! What an amazing display of software abilities.
@gregoryskaltsas1858
3 жыл бұрын
Excellent! You covered a semester in a few minutes. I will recommend your videos to students.
@CodeBUNNY
3 жыл бұрын
He should put a biting head on it
I've been using ROS for a few years now, and I'm stoked to see one of my favourite youtubers also getting into it. Can't wait to see the openDog doing cool autonomous stuff using ROS.
@jamesbruton
4 жыл бұрын
thanks, that is the eventual aim.
@aryaanand759
4 жыл бұрын
can you suggest some free tutorials
@benjaminc5757
4 жыл бұрын
Same here !
@marklagana2769
4 жыл бұрын
@@aryaanand759 do the ros tutorials!
Graduating soon(ish), COVID willing, and I can't help but thank you for your awesome work which has been a huge part of what inspired my to pursue engineering. Cheers James.
I love how you build things up one chunk and interface at a time, debugging each before moving to the next
This video is really informative. I had a similar project a year ago for a University subject. However seeing how you done it makes me want to improve so so more! Thanks for sharing!
i'm not sure if people realize and appreciate enough the work you do, in the sense that just reducing the gear ration from the motors, converting that into code, calibrate the 2 motors (which are opposite to each other) to match each other's speed, get the accurate reading from the encoders, and this is not even talking about the communication and translation between devices when you are using ros or electronics, etc, is just talking about that small part on wheels+encoders+arduino IDE. Well done!
Thumbs up for the crystal clear explanation.. Waiting for part 2 🤘
man you got me into Arduino, then I got interested in pi, and now you introduce ROS. Im gonna go bankrupt this way lol. I actually applied for different jobs for the sole purpose of funding this hobby xD. Thanks haha
Congrats on getting through that James - I know how hard ROS is to learn! This is very exciting to see this developed.
@jamesbruton
4 жыл бұрын
thanks, part 2 is a bit more hectic!
@SystemsPlanet
4 жыл бұрын
It's my experience that anything that is hard to learn is not worth learning. Eventually a competitor, that is easy to learn, will replace it, and all your effort will be in vain.
@CerebralDad
4 жыл бұрын
Systems Planet Unless you’re trying to be innovative. The competitor would have had to learn that which was hard to learn in order to make it easier to learn
When open dog v2 can walk properly he should put a lidar scanner on it
@BurningApple
4 жыл бұрын
Yes! OpenDog 2 with full autonomy would be epic!
@jameswalker199
3 жыл бұрын
Maybe one of those OpenNI depth cameras, too. I think Orbec is the company that makes the "Astra" one I've seen and liked the look of before.
I'm usually sad when you work on projects that aren't your spectacular robot dogs! But I love the idea of one of these on the dog that I'm going to be even more thrilled if it works out really well!!
I’m looking forward to your video on ROS with a laser scanner for mapping. I just ordered a laser scanner but I have no idea how to use it yet!
so interesting! ty ... looking forward for next part
This series will become the most view robotics realated video on youtube crystal clear explnation
@jamesbruton
4 жыл бұрын
thanks!, Part 2 gets a bit more hectic though ;-)
@sammflynn6751
3 жыл бұрын
@@jamesbruton Are you allright? everything ok? no video this week ? :(
Fantastic coverage of ROS. Looking forward to the next video on this
@jamesbruton
4 жыл бұрын
The next one is not as straight forward ;-)
@bgrant1512
4 жыл бұрын
@@jamesbruton Ive been working on a tracked rover and looking at ROS. This video unlocked a couple issues I was stuck on. Im using the same LIDAR you are so Im going to be following very closely
Great video! I appreciate the detail.
Awesome. Correct me if I'm wrong, but ROS essentially looks like a standardized communication API for robotics. Can't wait to see more and what useful robots you can make with this!
@jamesbruton
4 жыл бұрын
Pretty much, the main advantage for me is that there are so many ready-made nodes that can immediately make the robot intelligent.
Hi James Fantastic video, really appreciate it
I like your debug setup!
Great update video Great update project Thanks for sharing 👍😀
@jamesbruton
4 жыл бұрын
thanks!
nice i didnt know there was so much learning courses on the subject. definitely going to check it out.
Love the series keep it up :)
This will be the best series ever! Just read a comment about the VM for ROS. It's not really the best option. neither is the other workstation xD. You can switch to ROS2 which can run on windows (it's newer than ROS and does not have much documentation and support as ROS so it's a good step to start with ROS). Or you can use dual boot. you will get both windows and ubuntu running on the same machine (you get to choose which OS to load when booting).
Hey buddy your work is awesome :D
Very impressive. As usual....
You are so smart it blows my mind.
I like this video with more of a software focus!
Awesome video! Any chance of a future VR project? You did some great ones in the past. Wandering if it was possible to create a really cheap and light strap on exoskeleton for full body tracking without any external detection systems...
Nice job explaining a much more complex set of abstractions than usual. I notice you don’t tend to use diagrams. Have you considered a bit of white boarding for this Ros stuff?
Nice video! Thank you 🙏🏻
Loved the video
Hi Bouton, this is a nice work on your video. I am working on a project with serial communication between Raspberry Pi and Arduino as well. However I discovered there is a half second delay for sending a letter, and 3~5 second delay for sending a string. I glad to know how would you going to solve it.
I don't if you take it as compliment (I hope so), but you're far better than Iron Man himself! Thank you for the lesson!
This what am ı looking for, thanks!
Oh I want that T-Shirt! :D _checks description..._ Ooh goodie! There's a store.
Thanks for sharing ebook
Ooo...I love this! This will be PERFECT for an autonomous lawn mower / Weed wacker! Actually I have been thinking and designing one already...LIDAR is what I am missing.
@jamesbruton
3 жыл бұрын
The challenge with lawns is that there's lots of open space, so the LIDAR might not see anything
@travisash8180
3 жыл бұрын
@@jamesbruton Not even a toothbrush ?
@ToddChevrier
3 жыл бұрын
@@jamesbruton I was thinking using the sonar you get from Adafruit and then once it detects, then kick on the LIDAR. That should work?
Thank you really helpful.
Great again! What if you put the rotary encoders on non powered wheel to avoid bad encoder data when powered wheels drifted on the floor ?
You could easily build up an optical mouse style sensing apparatus to determine ground travel direction and velocity. Whether using "mouse" type circuits or a camera and computer vision it's a straightforward way to establish accurate ground tracking.
@jamesbruton
4 жыл бұрын
I was hoping I could do it with the lidar...
When I was at University I started out studying MechE, but was particularly interested in robotics, so I was curious if maybe software was a better route. I managed to get a job in the Robotics and Artificial Intelligence Lab for a summer where I had to learn to work with ROS for 3 months. After that, I was 100% confident MechE was the right choice for me! Even as someone who knows their way around Python and a bit of C, that was a gauntlet of fire... Even other people I know who are software developers tell me they hate working with ROS.
For a rolling vehicle on a flat surface the static traction (tires not slipping) is solely determined by the coefficient of friction of the tires and the force (weight) applied to those tires. This is because as the contact patch is increased in size the relative pressure is decreased proportionally and therefore grip remains the same. If you need more traction and wear isn't a concern you can just switch to a softer durometer gripper tire. If wear is a concern then a softer durometer and a wider tire. This all gets way more complicated when considering something like a race car going around a track with contact patches changing size dynamically, uneven road surfaces, changing coefficient of friction with temperature and track surface. But for slow robots things are nice and simple.
Thank you really helpful
If it helps anyone, the way I think of ROS topics is less "pipes" and more "pigeon-hole message box". A ROS node can theoretically subscribe to any topic it wants and go to collect the latest data whenever required.
First! LUL , Oh baby. You the man James. This series is the best
@jamesbruton
4 жыл бұрын
thanks!
Hello James, thank you for making this video. Do you have the code for this particular robot uploaded to github? I can't seem to find it any where.
@usamazaheer3109
7 ай бұрын
did anyone find the code??
18:15 "It is Captain Speed, as I say..." lol
@chromosundrift
4 жыл бұрын
“Capped in speed” heh
How do these LIDAR thingys work outdoors around foliage and other obstacles not composed of hard flat surfaces?
The site for the free ROS book seems to have gone offline. But the actual book was always on Dropbox and is still available there - unfortunately, KZread usually censors comments with links so, I'll just say you can find everything via the Wayback Machine. In any case, the book covers ROS Kinetic Kame which came out in 2016 and belongs to the old ROS 1 series of releases. ROS 2 came out in 2017 and has been stable for a long time - so, it's probably best to start on a book or tutorial that covers it. James's videos are still a great place to get a high-level intro to the general ideas.
I didn´t quite get the part where you made a connection between the raspberry pi and the workstation. Did you set the ROS_MASTER_URI to the workstation and ROS_IP to the raspberry IP on the robot?
can you please make a more detailed video on setting up the pi and the remote system
Why do you need the 5 V regulator , already having the l298 like motor controllers? Confusing only because there are no schematics .Thanks.
Cool. I am trying to do something similar in my native language as well
Just subscribed Came from Mark Rober
What's the best and cheapest raspberry pi alternate? Because I can't seem to find them at a good price anywhere.
FYI, I have compiled ros from source on a pi0w. Just the build time alone was almost 30 hours.
This is what I need I think .
rosserial doesn't work in ROS2 & everything is quite a bit different, but each participant is a full node & there's auto discovery. so it's harder to use an 8 bit part, but something slightly bigger like an esp32 or pi pico is a first class node. i dunno if you got the returns you were looking for in your ROS videos but i'd love to see more. mundane stuff like buttons and LEDs got a lot tougher to just throw in there
Ever consider doing an ROV/submersible robot? Doing optical/photogrammetric SLAM in short-visibility with an ROV seems like a really interesting challenge :D would be super useful for archeology, cheap, safe, automated photogrammetry of underwater sites.
@jamesbruton
4 жыл бұрын
Yes I'm doing research for that now.
Hello I really live your work can i ask under what name did you upload your package in the github link
Since you built a perfect Hulkbuster armour could you build a mark 38 also known as the igor armour?
Is the board on the previous kit that reads the arduino sensors based on the stm32?
Great content, could you make a robot then explain odometry ? :)
Use cssh to connect to sets of servers and run the same command on all of them at the same time.
Thank you very much for this video. May you please upload the Arduino code? I know you have uploaded the updated version but I need this code specifically. Thank you very much.
can you please tell me about motor driver , what motor driver are you using for it . i am getting motor driver with only one pwm and one DIR pin confg. but in your case each pin is getting directly PWM pulses.
Awesome 🌹
very Good!
I'm a poor bystander really itching to dive into diy robotics and home automation, and I had this idea to run a drone-assisted security system running on a local server with functions that communicate with Home Assistant's integrated systems, and with the knowledge that an ROS-controlled device can be integrated into the same server infrastructure as Home Assistant I suddenly hope I'm not the only person with these sorts of ideas.
Do you still have the code from this video? I don't see it on GitHub.
trying to build my robot on Raspberry pie; C++, Python, ROS, SLAM which should I start with, how do I progress?
Do you use other types of control aside from PID?
What motors and encoders are you using please?
Hi sir, can you display the codes and the packages of ros in the libraries with proper arrangements?
hello from Qazaqstan!
Crazy. Wow.
I can't find the code of the project, what"s the name of the repository on Github?
@munimshafi2543
4 ай бұрын
did you find it, i also couldn't find it
you are the best
do you think a Raspberry Pi zero W can work with the same setup?
Awesome
awesome
how did you connect the 2 ros nodes to the same roscore?
can you tell me what type of encoder you are using please?
Hi there I am following your code to differential drive a robot but my robot does not stop it follows all the command related to drive forward, rotate but its does not stop.
😍😍 amazing
I like your tshirt man
I don't know waht the link is for the arduino playground.
Hi, I have been trying to make my self-balancing robot use ROS for a long time. This video has helped clear a lot of things up for me! I am having trouble installing ROS on an ubuntu 18 VirtualBox. I have tried multiple virtual machines with ubuntu 18 and it doesn't install. The error is about packages not installed due to unmet dependencies. Then "E: Unable to correct problems, you have held broken packages" I also get that error when running "sudo apt update" Please help!
There's a cmd_vel publisher in Android store called 'ros control'. Which means you can use your phone to steer it if you want
@jamesbruton
4 жыл бұрын
I tried it but it won't go forwards?
Neat!😄
I'd like to make a similar robot able to roll around a home or business mapping the walls, ceilings, doors, windows, base trim, etc and then paint the space autonomously.
Please help to answer a few quiz questions for this video: 1: What is the purpose of a ROS-enabled robot? A. To play music B. To do mapping and navigation C. To cook food D. To clean windows 2: Which Arduino board was used in the robot setup? A. Arduino Uno B. Arduino Mega C. Arduino Nano D. Arduino Due 3: What type of power bank was used to power the Raspberry Pi? A. 10 amp hour B. 15 amp hour C. 20 amp hour D. 25 amp hour 4: What is the purpose of a PID controller in robotics? A. To regulate motor speed B. To control temperature C. To measure humidity D. To adjust lighting 5: Which Linux distribution was used in the setup? A. Ubuntu Mate B. Fedora C. Arch Linux D. Debian 6: What is the purpose of a catkin workspace in ROS? A. To store cat pictures B. To organize source code C. To manage hardware components D. To control robot movement 7: Which topic is used for driving robots around in ROS? A. Velocity topic B. Acceleration topic C. Position topic D. Rotation topic 8: What is the purpose of the ROS serial node in the setup? A. To send messages to the Arduino B. To control the laser scanner C. To communicate with the Raspberry Pi D. To debug data from the Arduino 9: Which tool was used for PCB manufacturing and assembly? A. PCB Maker B. Circuit Builder C. PCB Way D. Electronics Pro 10: What is the purpose of the tf transform in ROS? A. To transform images B. To control motor speed C. To provide odometry data D. To debug Arduino code
Raspian is built off of Debian (Which Ubuntu is also built off of) and everything Debian already uses Aptitude as its package manager, the thing that changes which packages are available for the system is the architecture of the processor the package is compiled for and the source list for APT. As far as I can see ROS is available on Raspian by default, so I wonder what went wrong when you tried it?
@jamesbruton
4 жыл бұрын
It also won't let me install ROS kinetic on Ubuntu 18.04 or Melodic on 16.04 by default. So this was the easiest way to do it. Bear in mind that my experience in limited.
Unable to find the repo for this exact project. Can you help me ?
What version of Ubuntu Mate are you using? Just pulled down bionic (18.04) both 32 and 64, and when starting my Raspberry Pi it's just black screen and red/green lights. Tried starting it up with a different distro and everything started up fine, so don't think it's a hardware issue.
@jamesbruton
3 жыл бұрын
Link to a helpful video is in the description
Sir, thank you for this video. If we install ubuntu 16.04 or 18.04 in Raspberry Pi will it work? And which ROS distribution is best for beginners, who want to use raspberry pi?
@jamesbruton
3 жыл бұрын
I am using 18.04 and Melodic.
The videos is really great!! Thank you for the information. I'm already working on ROS I have connected RPlidar and Arduino Mega to Jetson nano. The /dev/ttyUSB0 and 1 continuously switches between Mega and Nano causes error. How can I define particular port to Mega and Nano. Or How can i read wheather its a Mega or Nano. Please if possible mention the same in the next video. Thank you.
@jcugnoni
4 жыл бұрын
Hi, you can write a small udev rule to assign a given 'device' name to your USB serial device (Arduino or else). Link: unix.stackexchange.com/questions/66901/how-to-bind-usb-device-under-a-static-name
@pranav398
4 жыл бұрын
@@jcugnoni Thank you sir !! I'll try the same
From where I can source the code for wheel encoder testing? i can not find it on your github
I'm having trouble finding the playground code, can I get a link?