Home - shalomcrown/doggy GitHub Wiki

Welcome to the doggy wiki!

This is a project for playing with robotic dogs. Eventually it might turn into a useful product

This page is a discussion of tools and ideas

Current goals

  • Straight line motion with different gaits
  • Building some sort of model of the surroundings
  • Navigating through the environment to reach some target point

Hardware

The old FreeNove Pidog is on order. The new one costs $175 as opposed to 215 Shekels for the old one!! The content is less important. The main thing is the frame and servos, since I don't currently have any manufacturing capability.

Electronics

This is going to be a RPi 4 with whatever hats are provided in the kit and anything else needed

Code

  • I really want to get out of the Java honey trap, and develop in C++, especially when we're using reduced hardware (Rpi).
  • Some of the libraries will support Python too (DART), so some work can be done in that.
  • Model: I used protobuf for the soccer simulator that is in progress. But then I used MQTT for the message queues. That is a little like re-inventing ROS. We also need to consider the MAVLINK world, which has its own extremely good models. I don't want to use Ardupilot on the Pi, I don't think it's appropriate, but that's a consideration.

Libraries and tools:

  • Gazebo - Simulator visualization could use for soccer simulator as well)
  • DART - Robotics library

Status 2025-07-18

  • Dog is built, with RPi 4.
  • C++ project started (this project)
  • Code to work with servos, doesn't do much yet
  • Need to get IMU to work, then we can do auto-calibration
  • But before that, select a C++ matrix library.
Library Thoughts
dlib Looks realky nice, lots of algorithms, geometric ones too, live, need to compile for machine (use Cmake) also available as package (libdlib-dev)
Blaze Basics only, has addons for other things, but has less things. Little progress since 2020
Eigen Basics only, little progress since 2021
Armadillo
xtensor
Boost.ublas Using Boost alway has its advantages, probably available as package, the data structures tend to be incompatible between different boost libraries (from experience)

Going to try dlib. Installing the DEB package, I see it pulls in eigen, openCV (core) and others, which it probably uses for those functions.