Lynxmotion SES V2 Hexapod Robot

I was wondering as mine arrived in town yesterday, but picked up early from PMB (~6AM) and did the first pass at quarantining the parts… And wondered why yesterday there was another logical order…

Looks like time to assemble one of the Teensy boards.

1 Like

I’ve got my package yesterday! Love the premium boxes for the servos!

After receiving I started spreading out the components and wondered what happened with the body and controller board. Seems that I missed out on some messages here… :sweat_smile:

By what I could inspect now is that I like the improvements done on the servos and brackets. The ball bearing on the servo, a huge amount of mounting holes, bus communication: Love it! And the cable clips are a brilliant idea! Sorry for my excitement. I was not able to do anything robotic related so I’m pretty excited! Can’t wait to start :smiley:

Anyway, @zenta, @kurte, Did you decide on what board to use? I think it will be beneficial if we can share code so I will go with whatever you have.

5 Likes

Hi @xan and @zenta (and others) - I will hopefully have a chance to play some with the servos in the next day or two… Giving them some time to air out… Sorry I know I am being paranoid, but…

I am planning on over time hopefully work with the hexapod a couple of different ways electronically.

For the first round, I am probably going to use a Teensy. Probably first round I will do with a Teensy 4.1… Which is in beta now, but by the beta rules, I can not show any pictures… More details about it up on PJRC forum thread (https://forum.pjrc.com/threads/60532-Teensy-4-1-Beta-Test)

I have two boards sitting here that I did a quick and dirty design for, that I need to get going on soldering them up… Although at first I could simply use any T4.x and use the adapter board, to do the conversion to 5v for Serial ports.

The simpler version looks sort of like:


I believe almost all Teensy boards would work with this one, I would need to double check, but would probably use either T3.6 or T4.1 (or T4 with a castellated solder on board FRDM4236 which gives the T4 the same footprint as T3.6 or T4.1…
But with T4.1 or 3.6 the 5 pins can be hooked up for USB Host code… Where I probably will use a PS3 controller to start off with. I like PS4s better but mine appears to have a dead battery. Can use several different ones by plugging BT into USB…
Edit: If I remember correctly the yellow pins are setup with Arduino shield spacing so one could plug in something like an XBee shield.


Again is like the previous one mentioned, but was adapted from a board that supports Robotis Dynamixel Servos. A sort of nice feature of this one is that I have IO pins in place to allow me to plug in an Adafruit ST7735 or ST7789 display right below the speaker and would probably use the small ST7789 display (I have a couple of them)…

Longer term, will probably want to try moving to ROS (probably ROS2). Probably use RPI4. Maybe use UP board or Odroid ?
Or we could all have some fun and try one of the NVIDIA boards like:


Although I don’t know if they are supported by ROS, but might be great for any image processing one might want to do.

But first I should work on walking before trying to run!

1 Like

Can you detail a bit about using the PS3 or PS4 controller? Thanks.

1 Like

I’ll take a wild guess and say it has something to do with either:

  1. Using the PS3 controller as a wired USB device to the Teensy (acting as a USB host)
  2. Using the PS3/PS4 controller through Bluetooth by connecting a Bluetooth dongle by USB to the Teensy (again a USB host)

The Teensy 3.6 as well as the T4 and soon to be T4.1 processors have two USB controllers built into them. The first one does like the other T3x boards and communicates with the host. Note: The T4.x can communicate over USB at much higher USB 2 High speed than other Teensy boards up to 480Mbits instead of Full Speed (12Mbs).

Now the 2nd USB port
The T3.6 and T4.1 have a 5 pin connection setup, that can use a PC USB expansion connector to hook up a USB Host port. The T4 only has two bottom SMT pads where you can build your own. But it lacks a USB Current limiter chip that the others have, so if your wanting to support dynamic insertions of devices could be issues or your board should have one of these limiting chips (TPS055A)… Note: some of my boards I have experimented with are setup to be able to add in this chip and supporting stuff, or not…

Now assuming you have the hardware setup, like both of my boards above have USB Host connector. We have a library for the Teensy called USBHost_t36 which adds in USB Host support to your sketch. This library is installed with the Teensyduino install.

We don’t have support for every USB object, but we have support for a lot of HID based devices like (keyboards, Mice, Joy sticks. Likewise support of several of the USB to serial devices, Hubs, … One the later things we added was some support for Bluetooth. This included the support for a few BT keyboards, Mice and Joysticks including PS3 and PS4. So this is what I was going to maybe start from. There is an example sketch that is part of this library which you can find up at:

Note: I have a version of this library that when I was playing with it, I had the ability for more than one Bluetooth device. One of these days I will get back to it and get it integrated into the Paul’s master branch. One of the last things I was trying back then to get working was Two PS3 like controllers at same time. In particular a PS3 Move controller with a PS3 Motion controller. So you can have one in each hand. Don’t remember if I was able to get both to work or not.

1 Like

Forgot to mention a few links to the USB Host support on T3.6/T4.x
https://forum.pjrc.com/threads/49358-T3-6-USB-Host-Bluetooth

1 Like

Hi,

Is it recommended to update the firmware on all servos? I noticed they shipped with v367 and v368 are the recommended one. I assume it doesn’t matter much. But I thought it was ok to do when performing centering and id settings.

If I recall correct the pins are not compatible with the old beta servos. I have one of kurts old breakoutboards with Teensy 3.1 that worked with the beta. Now I might just connect the Teensy to the LSS adapter board. I’ve not had time to assemble the legs yet. I’m sure a bit rusty on everything here. I believe both Teensy 3.6 and 4.0 (the boards I have) are 3.3v only. And I assume D8 and D9 on the LSS adapter board is 5v only?

@kurte your Teensy board look nice, let us know how it goes after you’ve managed to solder one :slight_smile:

Good to hear from you @Xan , yeah, the hardware sure looks nice. I also love the built in nuts and also the possibility to add external gears directly on the servo. I’m also a bit curious about the tiny cable holders with magnets. I assume the magnets are for holding body covers/shields, or?

1 Like

Morning @zenta,

Some reason it did an OK while I was typing… Probably some glitch with my keyboard.

Until one has a T3.x or T4.x board to communicate with the LSS servos, you should be able to use one of the Sparkfun or Adafruit or similar TTL level converter boards. I started soldering one of my boards yesterday. May have a few missing pieces I need to order to do correctly but should be able to get enough of it in one piece to try to talk to the servos. The board simply has the same BSS… TTL level converter hook up like the Sparkfun board.

Still more soldering to go, and soon hopefully test some stuff out! :smiley:

1 Like

Indeed, we recommend to update all the servos to v368. We have also updated the Wiki page of the LSS Communication Protocol to add new commands. This new command in particular might be useful when the trapezoidal motion profile is disabled (in EM0 mode). It allows to change a filter position count value to obtain better motion when the motion profile is OFF.

Correct, the LSS Beta pinout is different and are not compatible with the current LSS pinout, therefore, attention should be given to avoid mixing LSS Beta servos/boards with the current.

Yes, D8 and D9 pins on the LSS Adapter are 5V only. As @kurte has suggested, a TTL level converter board can be used or you can connect your Teensy Tx/Rx/GND pins to the XBee Tx/Rx/GND headers on the LSS Adapter to use the level converter circuit that converts the XBee 3.3V serial lines.

Thanks @bdaouas and @kurte , I might have to get a TTL level converter. I was sure I had one laying around but couldn’t find it. I might just use the level converter on the XBee section of the LSS adapter board in XBee mode.
A Q about SW1 on the LSS adapter board. If set to Arduino mode the D0 and D1 are connected to the LSS TX/RX, but where are D8 and D9 connected in this mode? To the XBee RX/TX or just floating?

@zenta @bdaouas @cbenson and others… Looks like I screwed up my board slightly. That is when I did my component for the LSS servos looks like I swapped RX and TX, which I believe I confirmed by ringing the signals through your adapter board.

Soon I will update the board and order new ones. But first will try more of it to see how many other things I screwed up.

The Good news is I started with the simpler board (both are screwed up). and this one is setup to have Arduino headers. And with this I put in Level converters for pins 0, 1, so can simply plug your board into it and use its hardware to connect up the servos.

The one part I know I am missing is the DC/DC converters from Pololu. I thought I ordered but went to their website today and did not complete the order. So did that and they have shipped. I can still test without them as I will use Wallwart for power and +5v from USB.

@zenta - One thing I did with this setup was to also have two additional level converters that go out to pins 8 and 9, Which I believe are the XBee connections and I have solder jumpers to two different sets of pins to go to these. For this setup will use the ones that map to a T4 Hardware Serial port…

Hopefully will work. Then you have option to use XBEE to talk to it.

More later.

The D8 pin on the LSS Adapter is hard wired to the level converter’s 5V side of XBee Rx and D9 to the level converter’s 5V side of XBee Tx. It is intended to provide the possibility to use the Arduino software serial thus allowing an Arduino Board to communicate with both LSS and a Bee module if needed when the Switch is on Arduino position.

2 Likes

Looks like I have a few more days of delay before I can play with the servos. Although I probably can hack up a board to make it work. I don’t have any power source setup for the XT60 connectors. My Lipos all have different connectors and my Wall warts have barrel connectors. So ordered some adapters. One should arrive Monday the other maybe a week from Monday. Not sure if the diode you have setup between the expansion connector VIN would work if I tried to power the servos through this connection? Probably not. Probably can and will try jumpering from my board to the extension by using a cable wire…

Should be interesting.

Update: found I had old XT60 Lipo batteries. However they are puffy, so don’t trust, but cut off the leads of one of them, and then screwed them into a Trossen Robotics Power hub (for Robotis servos), then plugged in 12v 10 amp power to the other side and with the connector from the battery plugged into your board, I was able to talk to a servo :smiley:

Updated firmware. Question will be what IDs to give each of the servos. For now I will probably follow the old Phoenix numbers

Sounds like a good idea, I’ll be using the same setup myself. They are still called pins… :laughing:

#define cRRCoxaPin      8   //Rear Right leg Hip Horizontal
#define cRRFemurPin     10   //Rear Right leg Hip Vertical
#define cRRTibiaPin     12   //Rear Right leg Knee

#define cRMCoxaPin      14  //Middle Right leg Hip Horizontal
#define cRMFemurPin     16  //Middle Right leg Hip Vertical
#define cRMTibiaPin     18  //Middle Right leg Knee

#define cRFCoxaPin      2  //Front Right leg Hip Horizontal
#define cRFFemurPin     4  //Front Right leg Hip Vertical
#define cRFTibiaPin     6   //Front Right leg Knee

#define cLRCoxaPin      7   //Rear Left leg Hip Horizontal
#define cLRFemurPin     9   //Rear Left leg Hip Vertical
#define cLRTibiaPin     11   //Rear Left leg Knee

#define cLMCoxaPin      13   //Middle Left leg Hip Horizontal
#define cLMFemurPin     15   //Middle Left leg Hip Vertical
#define cLMTibiaPin     17  //Middle Left leg Knee

#define cLFCoxaPin      1   //Front Left leg Hip Horizontal
#define cLFFemurPin     3   //Front Left leg Hip Vertical
#define cLFTibiaPin     5   //Front Left leg Knee
1 Like

Hi @zenta,

Sounds better. I was thinking the “Old” SSC-32 pin numbering

But the ones you posted make more logical sense now days, like we used to skip 4 pin sections as to get the left and right hand pins be for the left hand and right hand servos :wink:

Looks like you are going with the PhantomX numbers which work for me.

Yes. That’s true I’m using the PhantomX ids on my MXPhoenix, I didn’t think about what you mentioned regarding the complex wirings on the SSC-32. Much easier today. Unless Robotshop/Lynxmotion have already defined the servo ids for a hexapod. @dialfonzo ?

@zenta @dialfonzo, - Sorry if some of this is obvious, assume I a am a newbie when it comes to these servos and preferred methods of doing things. So I see an image like:

https://community.robotshop.com/forum/uploads/default/original/3X/0/e/0eeae75c1cb0f1eed92f400a5b0f8ba313ac269e.png

Note: I assembled some of the sub-parts (bracket pairs) that go between servos. Note I did not see any Servo horns so used 4 screws/nuts for each.

Now How do I position the servos into these brackets and get proper alignments/Offsets.
a) I am assuming that I don’t remove Servo horns and move them N splines in some direction.
b) But do I use your Servo app and make sure they are at 0, then try to guess which servo horn holes to align the bracket to? WIll probably try this.
c) Does not matter - as once assembled you run some alignment sketch or the like, and get everything aligned properly and then tell system to save the offsets or set new zero point? To Actual Servo or to code?

Again this is probably covered somewhere in some tutorial or wiki…

Likewise, need to have better understanding of LSS Servo protocol. Some stuff obvious, like: in the WIKI
example output: #5D1800T1500
Move servo 5 to 180 degrees in 1.5 seconds…

But what is unclear so far is do we still have the ability for group moves? Something like:

#5D1800#6D90T1500

And Move two servos to their positions in 1500ms?

My older SSC32 code would output all 18 servos (or more if TARS or turret) as one command. And when is the command executed? Again with SSC-32 to get as close of a timing as possible, we would output the whole command (except the CR) while waiting for the proper time and then we would output the CR to get it to execute? Does this work with these servos?

Do we have the ability to tell servos, that when you finish your current move, here is your next move to execute? I added something like this to a simple servo controller I played with awhile ago (a version of USB2AX). Which was sort of nice as you could decouple your timings of starting moves…

But first need to walk :wink:

Quick question, There are 12 ST1 servos and 6 HS1 servos, Which joints do you see using HS for?
I noticed in some of the build pictures it showed HT1, but I am guessing Coxa (horizontal) is HS…

1 Like

Hi @kurte

Yes, that’s the correct and logic assumption. We need more torque for the femur and tibia, higher speed is convenient for the coxa.

I think its a bit up to you how to do it. I prefer making sure the servo is centered, they seem to be centered by default after production and testing though. I then realign the servo horn and finally adjust the “0” position from the LSS config app.

EDIT: I’m just about to assemble a leg. I don’t think I’ll realign the servo horn. They are pretty hard to remove…

1 Like