Shop OBEX P1 Docs P2 Docs Learn Events
Long Range UGV - Page 3 — Parallax Forums

Long Range UGV

135678

Comments

  • ercoerco Posts: 20,244
    xanadu: Gee gang, I'd love to go out tonight, but I have to stay home in case my new rover calls.

    Xannie waits!

  • RS_Jim wrote: »
    So I guess its ET Phone Home!
    Jim

    He did. They got him back and more problems....

    By the way erco your robots leave for Oz in two days...


  • erco wrote: »
    xanadu: Gee gang, I'd love to go out tonight, but I have to stay home in case my new rover calls.

    Xannie waits!


    I won't be able to go to work either :)

  • ercoerco Posts: 20,244
    xanadu wrote: »
    I won't be able to go to work either :)

    You're just doing a different sort of work, telecommuting like these interplanetary rover drivers: https://www.amazon.com/Working-Mars-Scientific-Discovery-Exploration/dp/026201775X

    I have that book, it's a good read.

  • xanaduxanadu Posts: 3,347
    edited 2017-03-30 21:40
    The Huawei E367 OpenWRT tested compatible modem is here, along with some friends. I ended up getting 12 USB modems for $20. That was all I could find on eBay. I am completely over the MR3020, and have no reason to keep these modems except one as a spare.

    These have the same setup as my first one, 3G radio, micro-SD slot and large SIM slot, with external antenna connector. I'm not sure if they're locked, I tested one with an AT&T sim card and it works. If one is locked, there are unlocking instructions all over the web.

    If you want one of these Huawei E367, let me know. I'll ship them for postage only. If not, back to eBay they go.
    605 x 454 - 89K
  • xanaduxanadu Posts: 3,347
    edited 2017-04-01 00:29
    Okay so we have a working Pi over 3G, with a reverse SSH tunnel. I was able to boot the Pi, it phoned home, then I could send requests on any port from a dedicated LAN at home. The home based LAN is connected to an SSL VPN, and I can use my laptop to test things in the field before leaving it out there.

    It looks like SimpleIDE supports Linux, and Parallax has a nice tutorial on how to setup everything on the Pi. I will install that next. I, or anyone else that wants to, should be able to FTP code, or write it directly on the Pi.

    So it looks like I'll be using my PAB + PropC for navigation, and the Prop Protoboard + SPIN as the system that controls the power buses.

    I will put the rover back together this weekend. I'm done painting. I'm going to 3D print a waterproof case for steering pots. I plan to use two of them, but ignore one in the code, keeping it as a spare in case something goes wrong. I have a feeling that will take all day to make and test out.

    Here's the new connectivity block diagram.
    Capture.JPG

    1013 x 375 - 36K
  • xanaduxanadu Posts: 3,347
    edited 2017-04-05 00:13
    $8 shipped for 8 relays, and all the passives and optos. That left me wondering about quality issues. I figure the relays will be open or closed most of the time and not switching much. I ran this for a couple of cycles and nothing broke.



    Next I will load test them, but not turning on and off that fast. I need to figure out what the load will be, not much point in overstressing it.

    Good news on the linear actuator. I was able to easily move the limit switch, so it is impossible to stress the steering. A feedback pot would normally be good enough, but not this time. I may use two feedback pots, one on each steering arm. It sure would be nice to have 4 wheel steering. This thing has a big turn radius. I'm going to have to teach it how to do a 300 point turn.

    The microswitch leads were stuck through the plastic and bent over. I tried not to melt the plastic but it was impossible. That plastic piece rides inside of a slot, inside of the cover I removed for the photos. There's an o-ring where the shaft exits, so I'm confident this will be somewhere between water resistant, and waterproof.

    I was hoping to get it put back together today, but I'm having paint issues again. The Krylon and Rustoleum HATE each other, bigtime. I'll post some pics of that tomorrow.
    1210 x 908 - 271K
    1210 x 908 - 298K
    1865 x 1467 - 470K
  • ercoerco Posts: 20,244
    Awesome relay action! WRT 300-point turns, I do have some experience there...

  • That's fast! Very accurate. Nothing like what I'm building hehe.

    Here's an idea of what we're working with.

  • The paint isn't quite done, but I'm impressed with the durability. I scuffed it and nothing happened. Also, it feels rough, like CARC paint.

    I beefed up the steering, there's a little more to do on that. The desert is hot enough to make this plastic weak, so I'm trying to reinforce everything around attachment points.

    I need to figure out how to attach the front wheels. They had clips on them that I had to destroy to remove. I don't really want to use them, but I don't want to drill a hole in the axle either.

    I hope to take it for a test drive this weekend.
    1210 x 908 - 314K
    1210 x 908 - 342K
  • xanaduxanadu Posts: 3,347
    edited 2017-04-08 20:50
    Well, it's almost time for a test drive. Keep in mind this is temporary, so I can get in some testing. For now, I put down some wooden board and loosely screwed everything to it so it can flex a little. Left to right, fuse block, 7v PSU for Propeller, little battery meter, rear motor controller, Propeller, steering motor controller, and RC receiver. This will probably be the last test with the RC receiver. The rest will be over the modem, or XBee.

    The original battery has been on a conditioning charge, and capacity cycle. It checks out, more than enough to run some tests. I've measured around 2.5 A @ 12 V for the rear motors, and 0.5 A for the steering actuator. The battery is rated 9.5 AH, so it should be good for a long drive.

    I'll get a good idea of the turning radius and traction.
    2016 x 1512 - 1M
  • I have some code from older RC robots using PWM motor controllers. It loaded it and only two motor controllers will respond. All three motor controllers will work, so long as they're plugged into the first 6 pins, the remaining 6 pins for channel 2&3 don't seem to do anything. This is the first time I've used it with 3 channels.

    I removed all of the RC stuff for troubleshooting. Duane, have you used this with more than 2 channels?
    DAT objectName          byte "TwoPwmX131127e", 0  
    CON ' Parent object constants
    
      _CLKMODE = XTAL1 + PLL16X 
      _XINFREQ = 5_000_000
    
      TOTAL_ENCODERS = 4 '4            ' This is not user changable. The other constants may
                                    ' adjusted by user.
      MAX_ENCODER_INDEX = TOTAL_ENCODERS - 1                              
      'SPEED_BUFFER_SIZE = 16
      'PULSE_BUFFER_SIZE = SPEED_BUFFER_SIZE
      CYCLES_PER_ENCODER_CHECK = 1600 '800
      'ENCODER_LOOPS_PER_WRITE = 126 '512
      DEFAULT_PWM_FREQUENCY = 10000        'CHANGED FROM 200   to 10k
      DEFALUT_PWM_RESOLUTION = 50 'higher = slower rpm
    
      FIRST_RECEIVER_PIN = 20
    
    
      TITLE_X = 3                   ' location for title
      TITLE_Y = 3
      DISPLAY_X = 3                 ' location for pulse info
      DISPLAY_Y = 5
      READING_X = DISPLAY_X + 13    ' pulse value printed here
    
    
      
    VAR
    
      'long speedBuffer[SPEED_BUFFER_SIZE * TOTAL_ENCODERS]
      'long debugTime
      'long pulseBuffer[PULSE_BUFFER_SIZE * TOTAL_ENCODERS]
      long pwmOnTime[TOTAL_ENCODERS], pwmTime
      long pwmFrequency, pwmResolution
      long targetPtr, negativePinPtr, positivePinPtr
    
    ' parent object variables
    
      long targetSpeed[TOTAL_ENCODERS]
      long  pulseLength[Rc#POSSIBLE_CHANNELS], previousPulseLength[Rc#POSSIBLE_CHANNELS]
    
    
    
           
    OBJ ' parent object
    
      Pst : "Parallax Serial Terminal"
      Rc : "RcReceiver121116c"
    
    
    
    DAT ' parent object 
    
    redPins                 long 02, 05, 08, 11  'Left, Right. Steer Motor Driver Direction Pins    4,3,2
    blackPins               long 01, 04, 07, 10  'Left, Right, Steer Motor Driver Direction Pins
    enablePins              long 00, 03, 06, 09  'Left, Right, Steer Motor Driver PWM Pins 
    
    
    PUB Main | speed ' parent object
    
    
    
      StartEncoders(@enablePins, @redPins, @blackPins, @targetSpeed)
      
      waitcnt(clkfreq * 1 + cnt)
    
      speed := 0
         
      repeat
      
       
        repeat until speed =< -30
       
            targetspeed[0] := speed 
            targetspeed[1] := speed 
            targetspeed[2] := speed *10 'actuator multiplier
            RefreshSpeed
    
            speed := speed - 1
    
            waitcnt(clkfreq / 10 + cnt)
    
        waitcnt(clkfreq * 5 + cnt) 'observation period
        
        repeat until speed => 30
       
            targetspeed[0] := speed  
            targetspeed[1] := speed  
            targetspeed[2] := speed  *10 'actuator multiplier
            RefreshSpeed
    
            speed := speed + 1
    
            waitcnt(clkfreq / 10 + cnt)
            
        waitcnt(clkfreq * 5 + cnt) 'observation period   
            
    
  • I switched to PWM32 Object and all is well. The only difference is I have to manually set the enable pins.

    I can now drive the rover with my RC controller.
  • Awesome progress, from concept to field testing in a very short time. I'm kind of wondering how well you will do in the sand, is it light and fluffy stuff, or heavy and compacted?
    Nice work!
  • xanaduxanadu Posts: 3,347
    edited 2017-04-09 16:49
    MikeDYur wrote: »
    Awesome progress, from concept to field testing in a very short time. I'm kind of wondering how well you will do in the sand, is it light and fluffy stuff, or heavy and compacted?
    Nice work!

    Thanks. It will be a mix of all kinds of stuff from silt to rocks. You can usually see the bad spots. They look like a snow drift, except it's sand. We will most likely stay in a wash area, which is hard on the surface.

    Although there won't be much sand where we're going today, I hope it will be a good test.

    Here's the Rover RC Code, since the Rover won't be RC long, this is final. Also we'll be using Prop C anyway.
    {{
    
    Rover RC Controller
    
    }}
    CON
      _CLKMODE = XTAL1 + PLL16X
      _XINFREQ = 5_000_000
      
      FIRST_RECEIVER_PIN = 16       'first RC Pin, don't forget 4.7K resistors                        
    
    OBJ
    
      PWM  : "PWM_32_v4.spin"       'used for motor controllers
      Rc   : "RcReceiver121116c"    'used to decode PWM signals from RC RX
      Pst  : "Parallax Serial Terminal" 'not used ATM
      
    
    VAR
    
      long  pulseLength[Rc#POSSIBLE_CHANNELS], previousPulseLength[Rc#POSSIBLE_CHANNELS] 'ser
    
    PUB main | throttle_ch, steer_ch, dutycycle
    
      PWM.Start                     'initialize PWM cog
    
      waitcnt(clkfreq * 1 + cnt)    'not sure if needed
    
    '  pst.start(9600)              'disabled debug
    
      result := Rc.BuildMask(FIRST_RECEIVER_PIN, FIRST_RECEIVER_PIN + 1, FIRST_RECEIVER_PIN + 2, {
              } FIRST_RECEIVER_PIN + 3, FIRST_RECEIVER_PIN + 4, FIRST_RECEIVER_PIN + 5)
    
      Rc.Start(result)              'use pins specified above to start RC object
      
      waitcnt(clkfreq * 1 + cnt)    'not sure if needed
    
        dira[7] := 1 ' steering enable pin 4 'set up enable pins on all motor controllers
        dira[8] := 1 ' steering enable pin 3
        dira[1] := 1 ' steering enable pin 4
        dira[2] := 1 ' steering enable pin 3
        dira[4] := 1 ' steering enable pin 4
        dira[5] := 1 ' steering enable pin 3
        
      repeat
        
          throttle_ch := Rc.GetRc(0)    '-512 back + 512 forward
          steer_ch := Rc.GetRc(1)       '-512 left + 512 right
    
          if steer_ch < 0                    'turn left
            outa[7] := 0                     'swap enable pins
            outa[8] := 1
            PWM.Duty(6,-steer_ch/6,5000)     'scaled PWM value 
    
          if steer_ch => 0                   'turn right
            outa[7] := 1                     
            outa[8] := 0
            PWM.Duty(6,steer_ch/6,5000)        
    
          if throttle_ch < 0                  'go back
            outa[1] := 1                 
            outa[2] := 0
            outa[4] := 1                 
            outa[5] := 0
            PWM.Duty(0,-throttle_ch/7,2000)      
            PWM.Duty(3,-throttle_ch/7,2000)
    
          if throttle_ch => 0                  'go forward
            outa[1] := 0                
            outa[2] := 1
            outa[4] := 0                 
            outa[5] := 1
            PWM.Duty(0,throttle_ch/7,2000)      
            PWM.Duty(3,throttle_ch/7,2000)
    
    

  • I'm bored waiting for batteries to charge, so here's a pic of the first Rover mission. There's some rough terrain down a hill, then along a "dirt like" trail. Then into some concrete ruins. Then back, I hope.

    I blew 5 fuses last night, so I've replaced them with higher ratings, and auto-reset breakers. AutoZone has a lot of cool stuff. I had no idea that fuses have LEDs in them to show they're blown. Pretty neat.
    1977 x 1343 - 920K
  • ercoerco Posts: 20,244
    xanadu wrote: »
    I had no idea that fuses have LEDs in them to show they're blown. Pretty neat.

    That is cool. Sounds just like my old-school light-up doorbell pushbutton, which is obviously a momentary SPST switch in parallel with a small internal lamp (neon?). The lamp draws a miniscule amount of current, allowing that to flow though the AC(?) doorbell solenoid constantly (power vampire). Of course the lamp goes out when you press the doorbell, which is just like your fuse before it blows.
  • xanadu, It's pretty impressive how quickly you got from concept to field test.
  • @lardom Thank you.

    Kids, don't drive something 20 minutes away for a first test. I could have figured this out in my backyard lol... I didn't make the concrete ruins! I haven't been to this field in a couple years, a lot of trees fell. I must be used to flying copters and not dealing with ground clutter. It's a nice change from drones, and the first time I've drove anything like it FPV.

    The steering fell apart making it difficult. The part I built, and the vehicle itself. Duct tape would have been awesome... Besides not being able to steer, the traction was bad, I got stuck a lot, and killed a lot of battery getting unstuck. 55 Ah AGM toasted in less than an hour. It was dropping down to 12 V at full speed.

    I will beef up the steering until it's over-beefed. The drive motors are geared a little too high. Traction would help it move, but it will consume a lot more power, and I feel it will still get stuck. When it's in the desert I can stick to flat ground. We can set moving 10' /day as a realistic goal, it's not a race. If it gets stuck, plan on 1-2 days of charging to get unstuck.

    Next, I'm going to fix the steering and take it to the beach.

    Here's some video, enjoy!

  • ercoerco Posts: 20,244
    Awesome video, were you driving the vehicle while flying your chase camera drone all by yourself?
  • Thanks, that was my friend flying his drone, recording with a RunCam 2.

    What do you think about a motor swap, for something lower RPM?

    When I look up the numbers (00968-9015) I found this and it says 12,610 RPM.

    First Robotics made an awesome chart here. According to them my motors are 15,600 RPM.

    Apparently these things are < $5 ea. If I could find a drop in replacement with half the RPM it would probably be a worthwhile thing.



    1412 x 1059 - 373K
  • MikeDYurMikeDYur Posts: 2,176
    edited 2017-04-10 17:14
    Your shakedown cruise was pretty cool, and I really like your video overlay. I see you have a couple of problems to address. As far as the wheels, I'm thinking they are thick plastic. Could you fasten some metal strips to them to act like paddles, I'm wondering if the trade off for getting through the sand, is a bumpy ride on hard ground.


    Also could you just need a little more weight in the back?

    BTW: you may have to look into four wheel drive if that sand is too loose.

    All in all a very productive first test, you have found the weaknesses, and are formulating a plan to fix them. 100 percent successful IMHO.
  • Thanks. Yes the wheels are hard plastic, but they aren't thick. Whatever we attach should be mainly friction fit, with a couple screws to hold it in place. I guess I need to find some mountain bike tires.

    I will add some dead weight in the back. I picked up some empty sandbags.

    The loaner battery was 42 lbs, and only on one side. You can't put the battery in the middle, there's too much plastic there. It's the center console with cupholders, etc. The two batteries I have on order are half the weight each, and can go on either side to distribute the weight a little better. I will also gain 15 Ah.

    Steering fix, setup of dual batteries, and add rubber to tires will happen this week. I'll test it on sand this weekend. If that goes well we should be mounting solar panels the week after, if that goes well it should be in the desert by the end of the month.

  • ercoerco Posts: 20,244
    edited 2017-04-10 21:03
    Can you just PWM the motors for lower RPM?
    xanadu wrote: »
    I will add some dead weight in the back. I picked up some empty sandbags.

    <<Insert any old "ex-wife/dead weight/old bag" joke here>>

  • Adding dead weight seems counter intuitive to me. Better add more or bigger batteries.

    Since you want to put solar cells on top, having the center of gravity as low as possible is a goal to go for.

    Instead of putting rubber around the tires (or in addition) I would look for the spikes used in motocross-bikes. Cant be so expensive, they are using lots of them on a bike tire.

    One side is a thorn the other one a screw. Just drill holes in your tire and screw them in.

    Not nice to wood floors in the inside of a house, but in a desert spikes can not damage much, but provide excellent traction.

    Enjoy!

    Mike
  • Dead weight point taken, and I forgot about the weight of the solar panels. So no dead weight needed in the desert, the panels are 24 lbs without framework. For testing I'll use dead weight instead of the solar panels, to keep the panels safe. I've been testing the panels off the rover, and no issues there.

    I wanted to do spikes. I plan to stay away from rocks so they would be great. The tire is very thin plastic. It will be in really hot temps, on hot sand. I feel the spikes will work their way out. The other part is you can't get inside of the tire, it's sealed all around.

    There's a place called Performance Cycle a couple miles from here. I can get anything out of their recycle bin for free. They said people ask all the time. It's not costing me anything so I'm going to test it.

    The reality is, without any suspension we're going to have to stick to flat ground. I feel like the traction we have is enough. Everything revolves around not getting stuck.
  • ercoerco Posts: 20,244
    As you mentioned previously, I think getting some wide knobby mountain bike tires, and cutting and screwing or pop-riveting those in several places around the slick plastic tire would be a great improvement in traction.
  • Yes, I'm going to skip the scrap. I ordered 4x 14" mountain bike tires, should be here tomorrow. At $9 ea it was hard not to. I like the idea of the whole tire around the tire. I feel it will help keep it in place.

    Most glue would make it stiff. I have some flexible white glue, aka canopy glue, and 4 screws evenly distributed. Maybe some epoxy on the edges?

    I hope that works. Batteries will be here Thursday. Things are looking good for this weekend's beach test.
  • ercoerco Posts: 20,244
    I just saw some MTB tires on clearance at Walmart for $6 IIRC. Be advised that they are WHITE, however, so as a fashionista forumista, you really can't use them after Labor Day.
  • MikeDYurMikeDYur Posts: 2,176
    edited 2017-04-12 13:02
    xanadu wrote: »
    Yes, I'm going to skip the scrap. I ordered 4x 14" mountain bike tires, should be here tomorrow. At $9 ea it was hard not to. I like the idea of the whole tire around the tire. I feel it will help keep it in place.

    Most glue would make it stiff. I have some flexible white glue, aka canopy glue, and 4 screws evenly distributed. Maybe some epoxy on the edges?

    I hope that works. Batteries will be here Thursday. Things are looking good for this weekend's beach test.




    Don't forget the other choices: contact cement, Liquid Nails, Gorilla Glue, silicone. The canopy cement sounds like a contact cement.

    The two different materials may be difficult to join without some high tech adhesive. Plenty rivets?
Sign In or Register to comment.