The Year of the Robot (2025)

No comments:
Its been a minute, hasn't it? Recently I noticed the sunlight streaming in through a cellar window, perfectly gleamed off the collections of spiderwebs that have accumulated around Salvius. It's been about eight years since I've really focused heavily on anything robotics related. School, work, and just life in general took me in more directions than I can reasonably enumerate in a casual blog post like this one. Within the last few months my main projects have been a photo booth (complete with its own app, and hosting its own wireless hotspot complete with local DNS), as well as a separate photo sharing app for events (check it out at nimbusqr.com if you're interested). Both of the aforementioned projects are going to have their debut at my wife and I's upcoming wedding.

As of late, I've been think that it's about time I dust off some of my old projects and start to revisit them in complement to some of the newer technologies that have emerged in the last few years. LLMs and the AI space in general are undergoing a technological renaissance the might utterly unblock some of the challenges I had left these projects to rest with. For bipedal locomotion for example, could we create a cluster of AI agents (I imagine maybe each one running on a dedicated Raspberry Pi) where each agent knows that it is a "knee joint", "ankle", "hip", etc. With instructions from a primary node it would be interesting to see how efficiently the cluster could coordinate and perform actions like taking a step.

At this point I'm aiming to kick off the next generation of my work in the open source and robotics space probably starting early in 2025.

Designing a new robot neck joint

No comments:

This weekend I finished up the new neck joint for Salvius. After traveling around last summer with the robot it quickly became apparent that a few modifications needed to be made. The main problem that I was facing was that the neck was too unstable to support the robot's head. As a result the head wobbled around quite a bit during transport and this led to some of the joints and connectors becoming damaged.

The new neck design I needed to create had two main requirements. First, it needed to fully support the weight of the robot's head. Second, I the new neck should allow the head to be easily detachable. I added the second design parameter for the purpose of making it easier for my self to disassemble the robot for transport and development when needed.

To accomplish this, I moved the universal joint in the robot's neck, which allows for left, right, forward and backwards tilting of the head, closer to the back of the robot. By increasing the distance between the universal joint and the linear supports that move the head I was able to improve its stability. The second major change I made was that I moved the neck rotation servo from the base of the neck, up into the head itself. This alteration was to help ensure a more modular design of the head and neck. Last, a metal axle with new bearings was added to the top of the universal joint to ensure a smooth movement as the neck servo rotates the head from side to side.


The new neck was finished just in time for Salvius to appear for a visit to the Tech Foundry for a talk about robotics.

Installing PIP on the Intel Edison

The Intel Edison comes ready to work with Python, but most Python developers would prefer to have access to PIP for managing their installed python packages. I've recently gone through the process of installing PIP on the Intel Edison and wanted to post the instructions for anyone who wants to do the same.

Connect to the Edison

Start by connecting to the Edison through the serial port. I'm running Ubuntu, hence the sudo screen.

sudo screen /dev/ttyUSB0 115200

Then you will want to make sure that your Edison is connected to the internet.

configure_edison --wifi

You will have to wait a few seconds, then select your network and enter your password.

Add Third Party Libraries

Intel Edison is powered by Yocto but pip is not in the official repositories, therefore we need to add the unofficial repositories. We began getting the latest Intel IoT Developer Kit libraries.

echo "src intel-iotdk http://iotdk.intel.com/repos/1.1/intelgalactic" > /etc/opkg/intel-iotdk.conf

Begin by adding the repositories using vi.

vi /etc/opkg/base-feeds.conf

Add the following three lines:

src/gz all http://repo.opkg.net/edison/repo/all
src/gz edison http://repo.opkg.net/edison/repo/edison
src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32

Save and close the file. Then update the package list.

opkg update

PIP is now installed, however it requires setuptools to be installed before PIP can install any Python packages. The setuptools package is now included with the latest version of pip. To upgrade pip to the latest version you can now run

pip install --upgrade pip


Salvius gives a thumbs up to students at Tech Foundry

Students from the Tech Foundry worked to build a pair of robotic hands for Salvius at this weekends workshop. While working, students learned that the length of each digit in a finger follows the pattern of a Fibonacci sequence. The Fibonacci sequence occurs quite commonly in nature, however the significance of this pattern in the human hand is that it allow the fingers to curl into a fist shape which is why human hands are good at using a wide variety of tools. In addition, it was shown that the sum of the length of the distal, intermediate and proximal phalanges in the little finger equal the length of those in the thumb. This creates symmetry between these two fingers and improves the hand's ability to pick up small objects. By design, each finger has four degrees of freedom, except for the thumb which has five due to the added complexity of its saddle joint. Normally each finger has an additional three degrees of freedom, two for extension and flexion and one for abduction and adduction.

Salvius has been built using readily available materials and the design for the hands is no exception. Pens donated from +Western New England University were repurposed to construct the structural components of each finger. The hands are designed to compliantly grip objects by changing shape to match a surface instead of requiring each finger digit to be positioned individually. As a result, the hands use fewer servos and less processing power to control.

Grinspoon Entrepreneurship Conference

Salvius traveled to the MassMutual Center today as a part of the Grinspoon Entrepreneurship Initiative. This is an annual event designed to provide networking opportunities to local businesses and startups. This year was the 10th annual event with approximately 700 attendees and over 60 different organizations exhibiting.

The event, funded by the Harold Grinspoon Foundation, helps to support entrepreneurs and small businesses by allowing participants to showcase and even sell their products. In addition, students who attend have the opportunity to meet and hear from people who have already started various business endeavors.
Salvius's exhibit was set up to show attendees the new linear actuator that was developed to support the weight of the robot at its ankles. A video of the actuator working is available on Salvius's YouTube channel. There was also a sample of the construction guide available, which showed all of the instructions required to create the same linear actuator out of recycled materials. The future release of the finished construction guide will provide a complete set of instructions on how to build robots like Salvius. For students interested in learning how to fund their own projects, the poster at the exhibit also had several panels showing how Salvius has been funded through crowdsourcing so far. In the past, Salvius has been featured in newspapers and also on the Make Magazine blog. It is extremely important for anyone who wants to get funding for their ideas to put that idea out there so that others can learn about it and contribute.
Later on in the day, Salvius met Harold Grinspoon himself. Grinspoon is responsible for founding the Entrepreneurship Initiative and helping many individuals in their various entrepreneurial pursuits. As a part of this conference, a panel of speakers was invited to talk about their own experiences creating projects and startups. As a part of this panel, I focused on some of the strategies that I have used to fund and develop Salvius. One of the biggest successes was when Salvius made the front page of the Wilbraham Times during a fundraiser to help build him legs.

Part of the reason that I started building Salvius was because I wanted to be able to get up on stage like this to try to inspire people to learn about new technologies and to show them how they can make their own ideas a reality. For anyone looking to launch their own projects, robot-related or otherwise, I felt that there was two, really important items to know. The first is that technology is the most effective tool you have to scale your ideas. You can reach far more people online than you can through any other form of communication. It doesn't matter if you have created the most amazing new gadget, if nobody knows about it then it can not succeed. The second item is that your community is the energy supply for whatever project or startup you are creating. Your friends, family, teachers and co-workers, will be the first place you will turn to get the what you need to kickstart your idea.

Learning from chatterbot

Last week I started writing code for an open-source chat-bot program. My goal was to create something that was basically an open-source version of Cleverbot. There isn't a lot out there to choose from if someone were looking for a program like this so I thought it would be a cool idea to create.

I wrote a program that could respond to user input by finding the closest match based on past conversations. This worked well when a match existed, however when presented with a completely new conversation the program failed to reply with coherent responses. The simplest solution seemed to be to provide the program with more "conversation experience" so that it had a greater selection to choose a response from. In order to improve the program's database of conversations, I hooked it up to CleverBot's api and set it loose chatting away with CleverBot.

The communication between my program and CleverBot was really interesting to observe. The conversation started out awful and was totally incoherent. However, after about ten iterations of the two talking back and forward, my program started replying with some of the new replies it had "learned" from talking with CleverBot. This progressed to the point where they could have an almost completely coherent conversation with each other. The only problem is that my program was still only able to provide replies from the selection of statements that CleverBot had said to it.

I decided to extend the range of where my program could attain conversation data from. This is where I made the mistake. I decided that Twitter would be the optimal source to have the program pull data from. Tweets are short an sentence-like and there is plenty of people on Twitter constantly creating new messages and conversations that are all publicly available. Naturally this seemed like the perfect source of conversation data.

salvius: "hey mc, doing well. Thanks for sharing nmirz new video."
cleverbot: "Are you a dog?"
salvius: "lmao are you a dog person?"
cleverbot: "Who was the who?"
salvius: "Who? Who is but a form following the function of what and what I am is a man in a mask."
cleverbot: "It's not your powers of observation I doubt, but merely the paradoxical nature of asking a masked man who is. But tell me, do you like music?"
salvius: "I like seeing movies."
cleverbot: "I wish I was The Mad Hatter."
salvius: "You're entirely bonkers. But I'll tell you a secret. All the best people are."

The conversations that resulted from pulling conversation data from Twitter's api was not what I had expected. On the positive side, my chat bot was now amazingly up to date with popular culture, even being converse about recent television events that had just premiered (such as the latest Dr. Who episode). Talking with Cleverbot, the two stopped speaking English at one point, preferring to address each other in French. While the responses that the program returned were relevant and coherent, they also were extremely prone to reflect what is probably best described as the chatter of the internet's most profound trolls. A plethora of profanity ensued regularly whenever the subject of a conversation began to have anything to do with sports, various actors, or politics.

For anyone who is interested, I have published the code for my chat bot program in a repository on GitHub, https://github.com/gunthercox/ChatterBot.