Close
0%
0%

Project Hermes

A beginner's exploration of Raspberry Pi robotics and SLAM technology

Similar projects worth following
162 views
0 followers
Born out of a COVID-19 enforced boredom, the project intends to create some manner of autonomous rover that can map and navigate an enclosed multi-room space. Functional ideas so far include coffee delivery, and... additional coffee delivery. Other ideas to come!

The project aims to use entry-level (cheap) devices to provide a basic proof of concept for an autonomous rover. Initial plans are to use the Raspberry Pi 4 platform with Kinect-based SLAM functionality. Initial research seems to show that ROS is the best foundation to use with Kinect mapping. These platforms are by no means set in stone and readily subject to change.

As the concept for the project evolves, it seems there are two parallel development paths:

  1. The Practical Path
    1. Rudimentary motor, lighting, and sensor I/O
    2. Additional enhancements to refine the above
    3. Likely Python based, although Java preferred if enough support is available
    4. Initially using Raspbian OS (subject to change)
  2. The Enlightened Path
    1. SLAM functionality using Kinect, LIDAR, or other sensors
    2. Independent roaming functionality
    3. Location-related command and control (call over, send to, etc)
    4. Additional physical roles as the project evolves (delivery, towing, limbs, etc)
    5. Anticipating ROS on Ubuntu (still in preliminary research)

Shipping constraints related to COVID-19 add additional challenge to the availability of parts and subsequent progress.

  • 1 × Raspberry Pi 4 (2GB)
  • 1 × DFRobot tank chassis
  • 2 × DC motor 12v 160rpm
  • 1 × Xbox 360 Kinect sensor

  • [Misc] Additional use cases considered

    JetSetterton03/29/2020 at 17:24 0 comments

    Living next to an old rail line, I've been surprised there aren't more trainspotting type sites. Project location has significant amounts of unobstructed visibility to two sets of tracks. It would be interesting to see if late-game systems might be able to watch for trains and catalog engine/car numbers. Obviously some hefty recognition algorithms involved, but an interesting idea.

  • [Enlightened] Decisions on Ubuntu GUI, cont'd

    JetSetterton03/28/2020 at 20:45 0 comments

    So after 12 hours of imaging, errors, new imaging, more errors, I've come to some conclusions:

    Native Ubuntu desktop (at least 18.04.4) just isn't ready for the Pi 4. A clean install got Ubuntu desktop (Gnome) working, but there are large gaps in wifi and bluetooth controllers. Despite finding some fixes that would get some basic functionality temporarily, it's clear that it's not talking correctly to the Broadcom firmware. I was still on "critical" firmware (VL805: 000137ad, BL: 2019-09-10) at this point, but I was frustrated enough that I wasn't interested in playing anymore. I think I ended up with four different installs trying to get this going.

    After running into all the firmware issues, I decided to head back to Raspbian (Buster). It's a Debian OS so it keeps me close to my preferred Ubuntu, and it obviously has all the hardware support tested and baked in. I also opted to switch firmware channels to "stable" and updated (VL805: 000137ad, BL: 2020-01-17).

    I knew ROS could be compiled from code, but my compiler experience isn't terribly robust. Ultimately, I settled on this guide and decided to give it a go. I skipped the section for the assimp fix as I didn't see any related issues in the build. On a Pi 4, ROS took close to 90 minutes to compile. Painful, but the results are worth it. I am currently up and running with ROS on Raspbian with no issues thus far. Stuck on Python 2.7.16 for the moment, but that's another challenge for another day.

    Sidenote: I don't remember running into firmware issues with Ubuntu 19.10, but after seeing ROS wasn't natively supporting it, I wasn't in it long. It could be worth exploring again based on the results of the compiler.

  • [Enlightened] Decisions on Ubuntu GUI

    JetSetterton03/28/2020 at 18:30 0 comments

    Seeing that Ubuntu has gone back to GNOME as its default GUI, and MATE being a derivative thereof, I'm going to give the default a try. I'm breaking out the --no-install-recommends command to try and keep it as lean as I can. Starting with installing it on top of the work I've already done, but won't be surprised if starting over with a clean image yields better results.

    Winner for round 1: GNOME

  • [Practical] Rover Components Update

    JetSetterton03/28/2020 at 18:11 0 comments

    While the service has been good at RobotShop.com, it's not without its frustrations. Have tried to request changes to get available inventory, but by the time they respond, the pieces are on backorder. Finally told them to drop all the backordered components for now, but they also changed my shipping to UPS Ground instead of 2 day air.

    Bottom line, motor controller has finally shipped, but not expected to arrive until Wednesday (4/1) now. Hermes sits, still immobile and unpowered.

    Beginning to scope out the next order for some ultrasound sensors, light sensors, not sure what else yet.

  • [Enlightened] ROS Tutorials, Part 1

    JetSetterton03/28/2020 at 18:00 0 comments

    The first few ROS tutorial pieces have gone well. I'm getting a feel for catkin (the build manager within ROS). Reminds me of PHP's artisan manager for Laravel.

    I've gotten to the point in the tutorials where apparently I will need some manner of Xwin GUI. Ubuntu Mate seems to be the favorite, but no version for Pi 4. Tempted to go with the familiar Kubuntu KDE but that's a lot of overhead. More research required...

  • [Enlightened] Getting Ubuntu installed with ROS, Part 2

    JetSetterton03/28/2020 at 04:30 0 comments

    Editor's note: I've opted to format log titles with their corresponding project path for referencing. Previous entry updated.

    Alright, new attempt now with Ubuntu 18.04 LTS, and the DHCP IPv4 issue is back. Running "netplan try" and then "dhclient -4 -v wlan0" seems to have things happy now. Verified good following reboot. Back to our regularly scheduled programming...

    Installed the myriad of packages for ROS Melodic (seriously, 1300+ including dependencies). Haven't installed any desktop GUI for Ubuntu yet. I don't know if they're useful with ROS, and I'm trying to keep things lean if possible. I've seen references to Ubuntu Mate but no support for Pi 4 at this time.

    Already we've run into the new dilemma. Python 2.7 is installed by default, while the latest at this time is 3.8.2. Python 3 seems to fix a lot of the ambiguity and lack of syntax that frustrates me coming from heavily structured object-oriented languages like Java and PHP. After deliberation, I've decided to proceed with 2.7 for the moment while exploring ROS tutorials. Once I'm comfortable with the system (if ever), we'll upgrade Python and try the tutorials again to see how much support is available.

    With that, I think we're officially underway with trying some ROS tutorials!

  • [Enlightened] Getting Ubuntu installed with ROS, Part 1

    JetSetterton03/28/2020 at 04:05 0 comments

    Stay tuned for the prequel that describes how we got to this point. For now, an update on the quest for ROS/Ubuntu...

    After trying multiple avenues for Ubuntu on Raspberry Pi, I ultimately came back to the Raspberry Pi imager. I suppose the people actually designing the hardware probably know what they're doing. I've tried multiple avenues of netbooting and slim ISOs, but the imager results, while still imperfect, were the most promising.

    After hours of struggling to get DHCP IPv4 working on Ubuntu 19.10, something finally relented and allowed the lease. Honestly not sure what was the final element but I suspect there will be plenty of time to explore that because...

    ROS isn't supported on 19.10. Well, not really. There are some packages for it, but not the whole Melodic kit and kaboodle. So now we're back to the imager, relenting on using an older but LTS version of Ubuntu (18.04).

    I've also opted to hook up the active cooling fan to the Pi. Following all the work and updates with the first Ubuntu install, the board was definitely emitting some warmth and the SD card was a bit toasty when removed. Simple hookup to a 5v pin and GND.

View all 7 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates