06 Apr 2020
arbotix
blast-from-the-past
national-robotics-week
robots
This is day 2 of my 2020 National
Robotics Week blog marathon! I've added a new label for
Blast From The Past posts, of which
this pretty much qualifies.
I've recently been sorting through some older electronics and came across this:
The original ArbotiX (2009)
This is the original ArbotiX prototype. Back in 2009, I was a fairly active member of
the Trossen Robotics forums. Andrew Alter had this new little event he called Mech
Warfare that they were putting on at RoboGames.
I seem to recall having my first ever phone call with Andrew Alter, and by time it
was over having a) signed up to build a scoring system and b) bought a Bioloid kit.
I did not promise to show up with a Mech because there was really pretty limited time
to work on that during the semester.
Then I showed up with a Mech. And won.
You can read all about how I build IssyDunnYet in the thread over at
Trossen Robotics.
But this post is about the evolution of the ArbotiX.
IssyDunnYet in a not-done status, sporting the ArbotiX prototype.
The original ArbotiX is really pretty simple, it is an Arduino-based board with hardware
support for Dynamixel control and XBEE communications, but the Python-based pose engine,
and open source nature, really opened up what you could do with Dynamixel Servos. ArbotiX
boards have been used in so many places over the past decade+, everything from
Giant Hexapods to
Kinematic Sculptures.
The original boards were all through hole parts because I was literally assembling these
by hand while working my way through grad school. When the order quantities got high enough,
I actually had the board fab guys assemble the parts in China and then I would insert the
expensive DIP chips stateside. Eventually, I finished grad school and took a job at Willow
Garage - at that point we handed all manufacturing over to Trossen Robotics and wound down
Vanadium Labs. Trossen is still selling lots of these little boards today, although they've
gone surface mount with the newer ArbotiX-M.
The original ArbotiX and the newer, smaller ArbotiX-M
Also found in my pile of random old boards was the original hand-build prototype of the
ArbotiX Commander. It looks quite a bit different from the
current generation.
The original production versions of the ArbotiX Commander (left)
and the hand-built prototype (right).
I also came across the spiritual predecessor to the whole ArbotiX lineup, the AVRRA board
(AVR Robotics API). This was used in
XR-B3
(pretty much my last non-ROS bot).
AVRRA Board (2008)
05 Apr 2020
ros
national-robotics-week
maxwell
robots
It's National Robotics Week! But you should definitely #StayAtHome, so there are
no in-person events this week. I already had this (and several other posts) nearly
done, so I'm aiming to post something every day this week.
Recently I updated Maxwell to use the PS4 controller. It is not the easiest thing to
setup, and I found lots of misinformation out there that either never worked, or no
longer works. So here is how I now setup PS4 controllers on Ubuntu Bionic (18.04).
These instructions require no special packages to be installed, we're using the default
bluetooth built into the Linux kernel, which should also mean that other bluetooth
stuff continues to work (unlike the older ps3_joy ROS package).
To pair the PS4 controller with the robot computer we need to start the controller in
"pairing mode". Hold down the SHARE button while pushing the POWER button. Continue
to hold both buttons until the LED starts flashing very quickly.
On the computer we will use
bluetoothctl to do three things:
- Turn on the scan - so we can find new devices. This is how we find the MAC address
of the wireless controller.
- Tell the bluetooth controller to trust the wireless controller
- Tell the bluetooth controller to pair with the wireless controller
Open a terminal on the robot computer and run the following commands that are in
RED. Replace the MAC address with the actual device found
(I've highlighted in green what the line should look like):
$ sudo bluetoothctl [NEW] Controller A0:A4:C5:CC:D1:92 velocityXYZ [default] Agent registered [bluetooth]# scan on Discovery started [CHG] Controller A0:A4:C5:CC:D1:92 Discovering: yes [NEW] Device A4:AE:11:02:78:BC Wireless Controller [bluetooth]# trust A4:AE:11:02:78:BC Changing A4:AE:11:02:78:BC trust succeeded [bluetooth]# pair A4:AE:11:02:78:BC Attempting to pair with A4:AE:11:02:78:BC [CHG] Device A4:AE:11:02:78:BC Connected: yes [CHG] Device A4:AE:11:02:78:BC UUIDs: 00001124-0000-1000-8000-00805f9b34fb [CHG] Device A4:AE:11:02:78:BC UUIDs: 00001200-0000-1000-8000-00805f9b34fb [CHG] Device A4:AE:11:02:78:BC ServicesResolved: yes [CHG] Device A4:AE:11:02:78:BC Paired: yes Pairing successful [bluetooth]# exit |
When complete, the PS4 LED should go solid and turn a deeper blue color. You should only have to
do this once, and the controller will remain paired until you pair it with another computer.
Once you've got the PS4 controller paired, you'll find out the button mapping is just a little different
form the PS3:
- The common "deadman" button on the upper corner of the joystick (labeled "L1") is index 4
instead of 10.
- The joystick axis have changed a bit, I had to change axis_linear from 4 to 3.
- It is probably a good idea to set the autorepeat_rate on the joy node. This prevents
stuttering publishing (and movement).
Here's the
changes
I made to Maxwell to update from the PS3 to the PS4 controller. I use a custom node for converting
Joy messages into Twist messages. If you're using the popular
teleop_twist_joy package,
you'll be using
enable_button parameter instead of
axis_deadman.
01 Apr 2020
maxwell
robots
ros
It has been over 5 years since I last posted on this blog - but now seems like a great time
to start posting things again!
We will start with an update on Maxwell, my longest running robot, which originally started
as my Masters project at SUNY Albany. He's 9 years old now, although the only original parts
are the laser cut base, the drive motors, drive wheels, and the the neck:
I don't expect there are many hobby robots out there with such a long lifespan. Here is a
summary of Maxwell's evolution:
- January 2011 - Maxwell is created
with an Arbotix, a series of EX-106 and RX-64 servos, Hokuyo URG-04LX-UG01 laser, a Kinect, and a massive Dell laptop.
- March 2011 - Maxwell gets an
Emergency Stop.
- August 2011 - Maxwell wins the AAAI Small Scale Manipulation Challenge.
- December 2011 - Maxwell
gets a vertical lift so he can reach the ground and the table. Around the same time, the camera got upgraded to an
Asus Xtion.
- Summer 2012 - Maxwell gets upgraded to a MX series servos. I also wrote a
three part article about this in SERVO
magazine.
- Summer 2013 - Maxwell gets upgraded to use MoveIt.
- Fall 2014 - Maxwell gets upgraded to and
Intel NUC and the Etherbotix controller,
an ARM-based, Ethernet-connected replacement for the ArbotiX I was originally using. I also created lots of
documentation so that Alan
Downing from HBRC could build a Maxwell clone (ROSwell)
- Spring 2018 - Maxwell gets a parallel-jaw gripper (more on this below).
- Spring 2020 - lots of updates.
The first of the new updates is migrating Maxwell to ROS Melodic. The drivers are all updated, and all the warnings
have been fixed. I've built a map of the house here in NH (and
fixed a major bug in slam_karto in the process):
I've also updated Maxwell to the PS4 controller, since the PS3 doesn't work so great in newer versions of Linux
(this will be the subject of a later post).
While the parallel-jaw gripper was physically installed on Maxwell some time ago, and the URDF had been updated,
I never actually finished the software to control the gripper -- that's the project for later this week. In the
meantime, here are some close up shots of the gripper: