-
SSC-32U Raspberry PI 2 or 3 mount
05/28/2016 at 14:05 • 0 commentsTo allow for more room for components on the robot, I designed a mount for the PI 3 so it sits directly above the SSC-32U. It mounts with stand offs, then the "head" or sensor/component platform mounts on top of that with 1in stand offs. It works pretty well, and looks much cleaner.
Mount
https://tinkercad.com/things/9NUqQ0Bz2cN
Head
https://tinkercad.com/things/kz4KcjPqyLH
-
Femur/Foot redesign to allow for a switch in the foot
05/28/2016 at 13:59 • 0 commentsThe redesign of the femur to accommodate a foot switch is in a working state:
https://tinkercad.com/things/lKMM8y2zH88
The idea behind this, is to allow terrain adaptation as well as automatically calibrating the legs on startup.
The switch is not yet wired up, not really visible, but it is just under the cap head screw near the foot.
The redesign also allows using a threaded rubber foot typically used on furniture or a small appliance.
-
C# Inverse kinematics -
05/28/2016 at 13:51 • 0 commentsAfter much tweaking and re-writing the IK and SerialPort code, the gait is much improved. I still need to figure out why the _bodyPosY or height has odd results the closer it is to the ground. However, the code is in a very usable state.
I was also able to figure out a reliable way to query the SSC-32U for the movement status, and base the gait timing on that status. Makes for a much smoother gait.
SerialPort.ReplyCallback = b =>
{
Task.Factory.StartNew(async () =>
{
if (b == 0x2e) //0x2e = .
{
InverseKinematics.SscCommandCompleteEvent.Set();
return;
}await SerialPort.Write(_querySsc);
});
};Then:
SscCommandCompleteEvent.Wait((int)(_gaitSpeedInMs + 75)); //Timeout
SscCommandCompleteEvent.Reset();There may be a better way than using the manual reset event, but I have yet to find it.
-
Raspberry PI 2, RTK GPS, RTCM base station, C#
05/28/2016 at 13:43 • 0 commentsC# Code for NS-HP RTK GPS base station working. Allows for a client on the local network to connect to a REST endpoint on a PI 2 and receive RTCM 3 messages for corrections. So far I have only been able to achieve a FloatRTK fix. However the accuracy is still much improved over conventional GPS. I used a NS-HP-10 with a 5Hz update rate. The message age maxed out around 500ms.
https://navspark.mybigcommerce.com/ns-hp-rtk-capable-gnss-receiver/
https://navspark.mybigcommerce.com/content/NS-HP-User-Guide.pdf
I am pretty happy to achieve the accuracy I do with about $125 worth of GPS equipment, a Raspberry PI 2 for the base station.
Code
-
RTK GPS
03/29/2016 at 14:50 • 0 commentsFinally have the RTK GPS working properly using the NTRIP client I wrote in C#. I was able to draw a rectangle that was about 12 or so inches on a side by moving the antenna. See the image below, bottom right corner, red circles.
I am using a CORS station about 25 miles away. The recommended maximum distance is about 10 miles. So I will be purchasing another RTK GPS module from NavSpark and setting up my own base station. However the TCP serial NTRIP client using the Fona does work as well as the TCP client over WiFi/Ethernet.
Hopefully the snow will melt enough and the roads will dry enough to be able to do some outside tests of route finding/way point finding.
-
C# code - IK, GPS, MPU, SSC-32U
03/17/2016 at 22:10 • 0 commentsThe C# code for this project has the following features:
- General NMEA sentence parser (GPS)
- Adafruit Ultimate GPS support (now using the NavSpark GPS)
- NavSpark RTK GPS support
- NTRIP client for RTK GPS corrections - allows for CM accuracy
- (beta) Adafruit Fona support (Cellular modem/phone/SMS)
- (beta) MPU 9150 support
- Lynxmotion SSC-32U support
- XBox 360 Controller and wireless receiver support
- Windows remote Arduino / RemoteWiring / Firmata - this is used with a SparkFun RedBoard that controls the HC-SR04 sensors.
- HC-SR04 sensor via remote Arduino functionality
The Inverse Kinematics code mostly uses standard .net math libraries. The basics for way point following and navigation is also there. Recently added some obstacle avoidance code to be used in conjunction with the way-point following or the XBox 360 remote.