Hey guys,
I've been working on a rover that navigates using SLAM instead of GPS for indoor applications. The system basically tricks Pixhawk into thinking it's connected to a GPS. I'm using ROS on an Ubuntu mini PC and converting position information from the SLAM process into GPS messages which I'm sending to the Pixhawk serial GPS port.
After finding a big enough space to test (which I haven't got a lot of access to) I've gotten some alright results but I'm finding that tuning the navigation controller is a trade off between having sharp enough turning and having a smooth predictable path.
I exprimented a little with the number and the size of waypoints and found that fewer waypoints (4 in a rectangle), set to about 20cm radius, mean the rover took wide arching paths to the next WP (a bad thing) but went exactly where I wanted it (a good thing).
Next I tried dropping WPs every 40cm or so ending up with 19 Wps following the same rectangular path. With the same size WPs (20cm radius) I ended up with the horrible snaking path follow shown below.
After setting the WPs to about 1 meter radius the path smoothed out again but obviously now the rover was only getting to within 2m of the way points meaning that the path was less predictable and it was running into walls (sometimes). I made it a little better by lowering NAVL1_PERIOD a little but was still getting unpredictable behavior and late turning.
Doe anyone have a magic number and size of waypoint? Or any advice on how I can get this beast to 1 go exactly where I want it to and 2 not take weird snaky paths or arching turns. Keeping in mind that it takes me about half a day to get in around 2 hours of testing.
Replies