… a collection of random robotic and other DIY work I have been working on over the years. Most of the site is dedicated to two of my larger projects which are explained below, a custom quadruped robot ‘dog’ type robot, and a humanoid robot with ROS integration.
The projects are covered in a series of blog articles, which aim to cover as much technical information as possible and at the same time inspire others to make robots too!
Click on the main menu above, the title links below, or the links on the right to see what’s been going on.
The quadruped robot was born out of a learning exercise in Autodesk Fusion 360.
The novel aspects of this quadruped are its articulated legs, which have higher DoF (five per leg) than usually found on small quadrupeds, and its articulated “spine”, which will help it in navigating uneven terrain.
After writing the inverse kinematics software and building a hardware test rig for one leg, I moved to building all legs and a temporary chassis, and then a custom 3D-printed chassis strengthened with aluminium plates. The current test leg kinematics software is written in Python, and communicates motor position commands from PC via serial to a micro-controller. A few walking gaits have also been implemented and the robot has taken its first real steps.
This robot shares many ideas and knowledge gained from my other Dynamixel-based robot, the ROSoloid. Whether or not it gets integrated with ROS and the custom GUI remains to be seen. At the very least, the Raspberry Pi will run the kinematics and walking gait code.
One main thing I felt the ROSoloid humanoid robot was missing was an advanced sensory system. The advantage of the quadruped is its capability to carry heavier loads and provide a stable platform for sensors, hence the idea to add a 3D scanner!
This quadruped robot uses AX-12A Dynamixel servos. The legs currently have 20 DOF and there are an additional 2 DOF for the body. Servos and brackets are from the Robotis range, with some replaced by their metal counterparts available from Trossen Robotics. They are painted to match the colour theme. The rest of the parts are mostly 3D printed. The main framework of printed parts forming the body will be sandwiched between 1.5 mm thick custom aluminium plates.
Current test leg kinematics software is written in Python, and communicates motor position commands via serial to an OpenCM controller.
In addition to trying to provide this robot build with autonomous behaviour (e.g. SLAM navigation), another objective is to explore various innovative ways of controlling its moving and walking behaviour, and its interaction with the user. The walking and steering motion of the robot can already be controlled via the GUI, keyboard or XBox One game controller.
So I am currently working on the improvement of the current user-controlled functions, as well as the implementation of some interesting new ones:
- Fine-tune input for controlling the walking and steering motion of the robot.
- Exploring interesting ways that a robot ‘tail’ can interact with the user.
- Adding a 3D sensor head to the robot, such as an Intel RealSense depth camera, and visualising the environment.
- Updating the user’s graphical interface, based on previous work done using a Qt-based GUI written in C++ and integrated with the USB motor controller as well as the ROS ecosystem.
Meet ROSoloid (a better name is to be decided!). The idea behind this robot is to extend the base Bioloid platform with various sensors, control it via a Raspberry Pi 2 and integrate it with the ROS platform and MoveIt! The project is ongoing, so watch this space.
Many moons ago, I purchased my first humanoid robot, an 18-servo Bioloid Comprehensive Kit. At the time, humanoid robotics for hobbyists was at its early stages, and I chose the Bioloid after much deliberation and comparison with its then main competitors, the Hitec Robonova and Kondo KHR-2HV. I went for the Bioloid mainly because of the generous parts list, which doesn’t limit the design to just a humanoid robot, as well as the powerful AX-12+ Dynamixel servos. These have a number of advantages over the more traditional simple servos, such as multiple feedback options (position, temperature, load voltage, input voltage), powerful torque, upgradeable firmware, internal PID control, continuous rotation option, a comms bus that enables the servos to be daisy-chained … and the list goes on!
After building some of the standard variants trying out the demos, attempting a custom walker, and playing around with Embedded C on its CM-5 controller board, I never got around to actually doing the kit any real justice. I have finally decided to explore the potential of this impressive robot, and make all that money worthwhile!
The current feature list of this project is as follows:
- Fully-set up node infrastructure for ROS and MoveIt! integration (both vanilla and customised Bioloids)
- Complete robot URDF and SRDF files that describe how the robot needs to be set up in ROS
- Robot visual and collision geometry fully modelled and articulated in RViz/MoveIt!
- Basic robot model able to be imported into Gazebo
Hardware and low-level software:
- Quaternion-based IMU complementary filter
- Python and Conky-based GUIs for live sensor data feedback on Rapsberry Pi
- Force-sensing foot sensors
- Custom battery backpack
- LED lighting and mode feedback
- Rapsberry Pi ‘dead’
Custom-skinned Qt GUI:
- Interface with USB2AX servos controller
- Read and write to AX-12 servos
- Set up and run PID controllers, change gains during runtime
- Rudimentary ankle balancing PID test
- Time-series sensor data graphs