I exchanged a couple of messages on this in the discord, and have decided to start a new thread here.
I had the idea of seeing if I could get a legged robot teaming with a multirotor drone. The legged robot could be dropped by the drone in an area that is difficult or dangerous to access for people. The drone can act as a forwarder back to the operator, as well as working in concert with the scout to path plan using a photo map taken at the time. There are tons of activities this system could be useful for.
As pointed out to me on discord, ardupilot can not natively control a 6 legged robot due to the limit in servo outputs of 16 (3dof leg - there are 4dof legs too). There is some work done on a quadruped 3DOF leg as part of google summer of code.
I did some research and found the Freenove 6 legged robot for a reasonable price. Freenove have done a good job of documenting their robot and the associated code - even down to including the .dwg files for the laser cut parts.
This robot is controlled by a board that incorporates an arduino mega, drivers that cover the 18 leg servos required and an ESP-01 wifi and another wireless comms module. There are also some extra exposed pins for expansion, and a USB-C port. It’s powered by two 18650s. I can control it from an android app or a processing developed app running on another pc either on windows, mac or linux/pi as provided by Freenove.
So far, that has mostly worked fine (problems controlling over wifi on a pi).
Obviously, the next step is to give it some intelligence. I have a 3DR pixhawk 1 and GPS autopilot that I had been using in a rover project.
My plan is to combine the RPi 3 (or the PicoW thats in the post) with the pixhwk 1 onboard the scout robot.
Autopilot connected to remote pc using radio over telem 1
Connect the rpi to the autopilot over serial on telem 2
Connect the scout to the rpi over usb
Problem is, how to use ardupilot to command the robot…
I was thinking that the 6 legged robot isn’t that much different to a skid steer tank. It can translate forwards and backwards, rotate on the spot as well as mixed in with forward and aft motion.
The legged robot can also translate left and right, as well as twist left and right, tilt fwd/back left/right and change its body height. Which the tank can’t do. As a proof of concept, it would be OK if these other manoeuvres weren’t a part of the available controls.
My thought was to use a lua script to translate skid steer servo commands in to commands that could be understood by the legged robot controller and send them from the autopilot, to the pi and then from the pi to the robot controller. The controller has the freenove arduino program to control the robot leg servos. The pi can then also interject with obstacle avoidance from a camera sensor.
My skill weakness is software so, at this point I have no idea quite how to make these leaps, at the minute I’m trying to find a good way to link everything together. I’m thinking that mavlink is going to tie all of this together in an as yet to be discovered way. My comms layout looks like this at the moment…
Any help, advice, comments etc are gratefully received.