Rock Crawler project

I have decided to start planning a new project to turn my Traxxas TRX-4 (Land Rover Defender) RC Rock Crawler with swapped out motor to a brushless one, the project is to turn it into a fully AI autonomous rock crawler.

This is my TRX-4

People do similar by making race cars which is all about going as fast as possible, I am doing it to go as slow as possible while navigating Rocky terrain without tipping over.

My 1st strip will be to workout what sensors, cameras and devices I will need such as LiDAR, stereo cameras, ultra sonic sensors, Gyroscope, GPS and what ever else I can think of that will be useful such as moveable weight distribution system, automatic lighting system and even a working winch system.

My 2nd step is to prototype a working system and chose to use 2 onboard computers. My pi-top[4] and a NVIDIA Jetson Xavier NX (ordered just waiting on delivery) using parallel computing. The Xavier NX will be doing all the heavy lifting for calculations while the RPi will be used to control the RC car. Probably look into using ROS

My 3rd step would be prototyping PCB boards to have both computer attached with built in networking, for this I will swap out the pi-top[4] for a RPi 4 compute module (due to available space under the shell and the Xavier NX developer kit comes with the Xavier NX compute module. The pi-top[4] will then be turned into a remote debugging and monitoring system, will also have to upgrade the TRX-4 suspension, wheels and foam inserts

4th step will most likely be shrinking everything down as much as possible and focus on fitment and install as there is limited space and will have to look into waterproofing too and and also polishing code.

Last step would be to publish everything from code to PCB designs etc.

It’s going to take quite some time to get this project up and running and started as it’s rather ambitious but I am also sure there will be some sort of cross over between my project and the pi-top rover.

My programming language of choice would be Python as its my favourite. Also never used ROS so would have to look into that to.

2 Likes

@CAProjects this project combines so many of the things I love into one thing - 4x4 vehicles, robotics and Raspberry Pi - what a dream project! :heart_eyes:

Happy to help out where I can, a few thoughts initially:

  • If you’ll be combining LiDAR, cameras and various other sensors you will definitely want to use ROS - it will speed up development time significantly and allow you to focus on solving specific problems with your project rather than writing things from the ground up. I have some experience with ROS on Raspberry Pi so I can certainly help set you off in the right direction with that - I’ve even created a basic ROS framework for the pi-top Robotics Kit which you could use as a starting point. I highly recommend theconstructsim.com for ROS learning, I’ve used it extensively and it’s an invaluable tool because the dev environment is set up for you so you can focus on learning rather than debugging (though it’s a bit pricey, I usually pay for a month and consume as much as I can to get my skills where they need to be to do the next project, then I cancel until I need it again)
  • Start simple and don’t do it chronologically in the steps you have outlined. First thing I would do is research, build and test the drivetrain and get it working really well before adding anything else. Assuming you can remote control your vehicle to go over rocky terrain with just the drive train mods then it’s safe to say that building a more automated version will be more straightforward.
  • Incrementally add complexity on top of that and don’t add too many sensors at one time. Think of one automated task you’d like to accomplish first and then try and get that working before moving on (make it really simple to start with, even detecting obstacles and planning a route around them is complex enough!). You’ll be constantly cycling through step 1 and step 2 as you add more complexity to solve different automated tasks - step 3 will be a long way down the line :wink: so make sure you keep the momentum going by solving lots of simple problems instead of one huge insurmountable project!
  • In the early stages of the project I wouldn’t try and use both a Jetson and a Pi, choose one and stick to it - the ROS code will be pretty portable anyway, just your low-level hardware drivers might change if you change in future.

I’m happy to have a call and throw ideas around, I can also help with architecture design - just send me a private message and we can set one up! :+1:

@duwudi thanks for the insight, what I have listed is the overall outlook of the project and understand that it’s quite a task.

The drive train is a solid platform, one of the best in the RC community and chose it because of that so that part is solved and I have plenty resource at hand how to modify it further for the extra load from the sensors and cameras etc adding to it.

As you mentioned, start simple, it’s how I plan going though the steps. Will be starting more with the RPi for the start of practical things as there is a ton of resources on the platform and the jetson is fairly new to the market in comparison so there will be a learning curve for that but the jetson is built with AI as its primary focus with plenty compute power to do the task and is why I have that on my list. I also believe that ROS can take advantage of the 389 CUDA cores and 48 tensor cores the jetson has which makes it’s more viable when adding more complexity.

I am currently in research stage and part of that is to get components that I know I want to use and build tests to get used to using the components so I have a code base to work from when implementing it.

Learning ROS is something I want to do as I believe it’s highly used for AI autonomous race car stuff and it’s something that the jetson community use a lot.

I know the steps are ambitious but I do know the underlying steps will take some time to get through. The way I see it, as long as your learning, no mater how much you learn, it’s progress.

The start will be converting the TRX-4 from RC to RPi controlled which has 3 servos, for steering, diff lock and high/low gear and 1 castle creation 3000Kv motor as the drive motor. As an RC it is lowered by a 4s lipo battery so all these will have to be interphased.

In some of my research, I have seen some similar stuff but more on high performance racing end and 1 project I seen had 3 rpi3 compute module cluster, however, very little info about it is available, but the jetson nano seems to be more common. The nvidea sdk is rather powerful and boosts performance of ROS making the Jetson Xavier NX a powerful beast in comparison to the nano.

I will be doing as you said, doing simple stages from learning the components how they work and how to code them to get an even better understanding of them. Learn to walk before you can run philosophy approach.

Also thanks for the offer to ask for help/ideas. I am thinking of possible getting a rover/ATK kit when available to buy as a means of learning the robotics side and my experiences could be documented as pet of a learning resource for others to. So much I know is needed but will take it 1 step at a time

@CAProjects the Jetson Xavier is very cool, so much power in that thing!

The way I see it, as long as your learning, no mater how much you learn, it’s progress.

Absolutely!

Anyway it sounds like a solid plan, send over a block diagram when you’ve compiled your research and I can help put a second pair of eyes on it, I’m very excited to see where this goes! :grin:

Done testing with an Adafruit Ultimate GPS v3 and got it working, now just got to do decoding the serial data, i like to do all the wok myself to understand things better :slight_smile: also got a gyroscope sensor to test out next

I am also writing the python code do use CPU cores if using a Raspberry Pi and use GPU cores when running on an NVIDIA Jetson device the decoding will take some time as its dealing with NMEA sentences

Also, i have ordered a Microsoft Azure Kinnect for Depth sensing camera and got a couple nano LIDAR sensors to. sadly this project looks like will be centered around the NX, however, i have plans to use a raspberry pi so the pi-top is being my rpi dev kit for this. and then transfer to a compute module.

Some of this work would work prefectly for the ATK kit, which i still have plans to buy :slight_smile: currently got my pi-top[4] running Jupyter notebook server, not using it for data science stuff but am using it for some statistical work along with documenting testing and code snippets etc.

Alot of my work at this time is working with sensors so i can understand them more and learn how to use them and configure them before i decide to combine them together. this is my 1st baby steps for the project

@CAProjects ATK? Do you mean the Robotics Kit? It did use to be called AVK though :wink:

Theoretically, we could make an adapter for the pi-top [4] Expansion Plate to allow it to use the Jetson board - then you’d have an IMU, encoder motor drivers, servo motor drivers, grove ports, USB-C PD input (for a rechargeable battery pack) and more all built into one device - the robotics kit metal build structure would probably be quite quick for prototyping stuff too.

Anyway, it sounds like you’re making great progress, this is an awesome project and I can’t wait to see it progress. You should share your repos at some point with the community, I’m sure others would be interested in helping out (me included!) :grinning:

@duwudi hey, reading this post has made me wonder, is there an open specification for the port on the bottom of the pi-top so that we can design and build our own circuit boards and hardware? Also, what type of connector is being used? We would need to be able to source it and solder it onto a board as well.

@CAProjects dude, this is pretty sick. I’ve never worked with machine learning yet, but it’s on my tood list. Keep us posted! I would love to see how this project turns out!

@duwudi yeah i meant the AVK kit hehe, count not remember exactly what it was called, was close

an adapter plate for the Jetson would be cool and nice to have but would be rather expensive for a niece market also the Xavier NX does take 19v in, have not yet looked at running it of battery power yet. i can just see it now, pi-top Jetson Edition hahaha. although it would be better just to use the compute module directly instead :stuck_out_tongue: and the Nano is way more popular due to price :slight_smile: not to mention that the Jestion platform runs on Ubuntu as well

Speaking of which, you guys thought about doing a CM4 version for the pi-top? or is that not worth it at all?

Also I will share my repo(s) when i have sorted that stuff out. I have a github but currently nothing really to submit to it yet till i get the GPS code done. speaking of which rough code and not at all optimized and does not handle when no GPS fix or errors yet. Once the GPS scripting is don’t, i will be doing a pi-top[4] specific documentation to make use of the OLED to display the GPS coords etc. maybe could be something that can be added to Further? will make a post in the pi-top further to discuss there


coords censored due to it is my house location :stuck_out_tongue:

same code is working on the pi-top[4] with the only change is the port but i want to add displaying gps info to the oled

1 Like

@CAProjects yeah, my thinking was around using the actual compute module and just building a custom daughterboard for it with the modular connector and some power management.

We’ve thought a lot about using the CM4 - it would make our lives so much easier in terms of engineering and design flexibility. The problem is that the specs always lag behind the normal pi board by 6-18 months which makes it troublesome for the maker market - for a pure education or industrial product it would make sense though since that market generally doesn’t care what’s under the hood, just that it solves a problem they have.

Putting GPS coordinates on the OLED should be really easy with the new SDK, let me know how you get on!

Any documentation for the SDK?

@CAProjects yeah it’s here

@duwudi perfect thanks, will be needing it really soon.

Random question, are any of the foundation plate ports linked to the UART serial at all, have not really looked at it in quite some time? And I’m working at the moment

AFAIK, none of the plate ports connect to UART serial.

@CAProjects D7 on the Foundation and Expansion plates are connected to the same GPIO used for UART (14 and 15)

Thanks, just pulled out the foundation plate and tried the gps in to D7 and works although not a standard way :stuck_out_tongue:

Need to look into a converter board. What are the connectors used on the foundation plate?

@CAProjects The connectors are the same ones that SEEED Studio Grove sensors use - Farnell sell them and so do Digikey. I don’t have an exact part number for the ones we use as they are from a factory in China and don’t correspond exactly to any big-name connector manufacturers - there is a good discussion on it here. We can always send you some if you need them - just let us know what you want :+1:

I think the best solution is to cut the cables and join them so you can go from Foundation Plate port to breadboard easily - the only problem then is making sure the polarity and pinout is correct…