Giter Club home page Giter Club logo

mars-rover's Introduction

Mars Rover

Curiosity/Perseverance inspired Rover

Controller for driving the Rover found here https://github.com/jakkra/RoverController.

CAD model

The whole Fusion 360 project can be found in the CAD folder, download the .f3z file and open it in desktop Fusion 360.

The CAD render images are more up to date than the real images of the rover, for example some cosmetics have been added and the high gain antenna which can be rotated by a servo.

Wheels

There are two options for wheeles, either original Curiosity style wheels that print in one piece. Or Mars 2020 style wheels that print in two parts where outer part can be printed in flexibale plastic such as TPU. The rover_2020_wheel_flex.f3d wheels are preferred if your printer can print in TPU as they provide way more grip.

Driving

There are 3 ways to drive the Rover right now:

  • LoRa
  • Websockets
  • Generic RC Transmitter

By moving a 3 way switch on the rover, the startup mode can be choosen; WiFi station + LoRa, LoRa only or WiFi AP (when using website hosted on the Rover, see data folder). Here is my controller supporting both LoRa and websocket control of the Rover.

Telematics

Rover will automatically send telematics data as soon as someone connects to the websocket server or over LoRa if Rover is being controlled ove LoRa.

Hardware

  • 6 12V 60 RPM DC motors, one in each wheel (#6)
  • 2 brushless ESC's one for each side (3 motors)
  • Lots of (12, one for each servo) 12V to 5V switching voltage regulators
  • 4 servos (MG946R/MG996R) on each corner wheel to steer.
  • 6 Servos (MG946R) in the arm for 6-DOF. Poweded by a 3S battery.
  • 2 servos (MG946R/MG996R) for the head.
  • 6 Channel RC receiver and transmitter
  • 6 Motor shaft adapters https://www.pololu.com/product/1081
  • Some Round Metal Servo Arm 25T Disc Horns.
  • MCU (ESP32)
  • 3S battery
  • Standard PVC pipe with inner diameter of 23.40 mm and outer diameter 25 mm.
  • Lots of screws and bolts, mostly M3, but some M4's too.
  • Two kinds of bearings: 5x 608ZZ and 5x 25mm SKF 6005
  • Check the Fusion360 project for more details.
  • Cable madness is TODO to fix (temporary fixed by hiding it under the "lid")

Building

There is no manual, but downloading the CAD model and browsing through it should get you started. Browse through both open and closed issues for help. Feel free to open an issue if you have a question.

Images

Videos:

Driving Modes

There are three ways to drive the rover. Either using a RC controller, LoRa or from a website hosted on the ESP32. RC controller is deafult, but as soon as someone connects to the ESP32 AP and a websocket is created, the RC controller or LoRa will be overriden by the WiFi controller. The website functionality is just as basic as the RC controller right now, but the plan is to add more advanced functionality to the website which is not possible to do on the RC controller. On the RC Transmitter I use two joysticks for channels 1-4 for, and two switches for channel 5-6. Joysticks are used both for steering the Rover and for moving each axis of the arm. When switch1 is:

  • LOW: joysticks are used for driving the rover
  • MID: Wheels will be set correct angles for the rover to be able to rotate on the spot by running each side of wheels in opposite direction. The direction is descided by the steer joystick.
  • HIGH: Arm mode, the two joysticks are used for moving axis 1-4 on the arm. Switch2 is used to switch between moving axis 1-4 and axis 5-6 (the gripper). This will be changed in the future, steering each axis manually is not really a good way, inverse kinematics is TODO.

Arm

Currently arm is just pretty much mapped to controls on the Controller, this is not really useful, so TODO.

Misc

Uploading Controller page to Spiffs

pio run -t uploadfs

Decoding crashes

xtensa-esp32-elf/bin/xtensa-esp32-elf-addr2line.exe -pfiaC -e /c/Users/ijakk_000/Documents/Rover-code/.pio/build/esp-wrover-kit/firmware.elf 0x00000000:0x3ffb5c60 ...

mars-rover's People

Contributors

jakkra avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mars-rover's Issues

Tubes

What tubes are used for suspension? I measured the diameters, 25x22.6 (external / internal). but I did not find such in stores.

Software & communications flow

I'm in the process of writing the control software.
This issue is mostly to share what I'm doing and to collect hints/other views on this topic.

Since my version of this rover is based on a Raspberry Zero WH, for development speed reasons I chose to use Java. I know that performance-wise and memory/CPU-wise it sucks, but there's a ton of ready-made libraries and I don't want to reinvent the wheel.
Namely, what I'm using is:

https://pi4j.com/ - for IMU, ADC, PWM controller, etc, it has lots of libraries ready to use
https://www.eclipse.org/paho/ - MQTT communication
https://eclipse-ee4j.github.io/jersey/ - REST API

I will eventually use WiFI and LoRa for the radio/control part, and all telemetry will be sent by the rover through MQTT. MQTT will also be used for interactive control.

Pre-programmed/batch control will be handled through a set of REST APIs that the code running on the rover will provide.

software

Hi, i really like the rover, Nice project!
is there a guide for people that does not know how to program (like me) to control the rover remotely?

Openmct

Hello, I recently found a next-generation mission control framework for visualization of data on desktop and mobile devices developed by NASA. This is the link https://nasa.github.io/openmct/

Grip rotator and servo insertion

image

Hello,

I'm in the process of assembling the arm: when it comes to the grip rotator, how did you manage to install the servo? The print came out perfect but the servo doesn't slide in since the protruding rubber part where the power+pwm cable comes out leaves no space to insert the first part of the servo diagonally and then slide it in. Did you cut away some part somewhere?

Thank you

Body drillings

Hello,

the rover_back v1 f3d file shows a number of holes on the back part of the body (to attach reactor and antenna) and on the front part (arm). Since I'm quite new to fusion 360, how can the body STLs be exported, so that they include all holes?

Thank you

Servo Horns

Hey Guys

Does anyone have the link they used to buy the disk metal server horns for steering (Some Round Metal Servo Arm 25T Disc Horns.)

Mounts inside the bearing

Hello.
I did not understand how this part is mounted inside the bearing? What keeps her from falling out?
Could you clarify this issue?

image

Arm missing from F3D CAD file

Hi, I checked out the last version for the CAD file but I can only find the arm_holder component in there .. Is there a seperate location for the arm?

Thank you so much for this design!

Printing tolerances

Hey @jakkra does your design have enough tolerance in the CAD model for direct printing or would I need to account for shrinkage in my slicer?

Can the design drawing of the car provide a SolidWorks version

Dear jakkra:

Thank you for your selfless sharing. Your rover is very cool. I also want to make one, but Fusion360 is very slow in China, and the license is basically not available. Is there a solidworks version of the car? Whether the bearings on the 4 driving wheels are missing, I wondered how to install them for a long time.

question

hey ļ¼Œ genius i am fersh person about Mars-Rover , but i 'm very carazy about it , could i learn it good from knowing nothing?

Best support type to slice & print body

Hello,

I'm proceeding with all prints, and when it comes to the body I wonder what's the most efficient support type to use when slicing stl files: I'm using Cura and I usually use the default line with 10% spacing. Any hint here/what have you used?

Thank you

What 12V to 5V switching voltage regulators do you use ?

First off thanks for all the hard work you have put into this project. I am interested in building this, but I am having issues sourcing a 12v-to-5v-switching-voltage-regulators. I would like to know which ones you choose to go with.

Bearings

I just bought some of the large size bearings and was wondering how people are securing them into position (main_leg_body_connector to the leg_boddy_bearling_connector).

STL files ?

I have a Linux computer, so I have not Fusion 360. Can I have the STL files please ?

Connecting 2 body halves

Hey Guys

When connecting the 2 body halves there seems to only be connectors at the top. How are others connecting the body halves together at the bottom to stop them coming apart?

Steering ball bearing - best way to print

Hello,

what's the best way to print the steering ball bearing? (see image) all in one print? body by body? I'm thinking to give it a try with 0.12 layer thickness and 30% infill. Did you print it or buy a ready-made one?

Thank you

image

what motors did you use

First off thanks for all the hard work you have put into this project. I am interested in building this, but I am having issues sourcing a 25mm x 56mm brushless dc motor. I would like to know which ones you choose to go with.

How to print head top connector & head rotator

I'm trying to figure out how to print the head top connector & head rotator: I see that some bodies need to be exported as a single stl. One thing that is not clear to me is what bodies need to be exported/printed together in the red area here below:

Screenshot_20200622_231752

Any hint? Thank you :)

Electronics schematics

Hello, could you share the electronics schematics?
Iā€™m building the electronics based on a raspberry zero and that would come handy.

Thanks!

Servos don't fit

Hi Guys

I bought TowerPro MG946R's for the steering as stated in the readme but after printing the wheel rotors they don't seem to fit at all. Just wondering if I am missing something.

Tubing

Hello, thank you for sharing this very interesting project: far as I can see the rocker bogie tubing is not printed but looks like standard pvc tubing: what thickness did you select?
Thank you

STL Files

Hey, just wondering if there are any pre generated STL files available or if everyone is just creating their own from the CAD?

What RC receiver and transmitter do you use

Once again,thanks for all the hard work you have put into this project. I am interested in building this, but I am having issues sourcing a RC receiver and transmitter. I would like to know which ones you choose to go with.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.