Tell me about it. Check this link out- Lynxmotion - SES Leg Kits probably should have said kits
Oh - have another question just to confirm- the v1 board uses vertical qwic connectors correct?
Tell me about it. Check this link out- Lynxmotion - SES Leg Kits probably should have said kits
Oh - have another question just to confirm- the v1 board uses vertical qwic connectors correct?
Good morning, maybe a better question for @dialfonzo or @cbenson - I believe those leg kits are for SES V1 robots. And I personally have not tried these new servos out on the older SES stuff. Maybe they (Robotshop) have leg kit closer to what we are playing with.
The namings of the Qwiic stuff sometimes confusing. I origionally used the Right angle pattern. Question is what does Right angle mean and in relationship to what…
But for the V1, it should be:
So V2 I switched the pattern to use:
I was hoping that they were interchangeable but found out with the boards that @dialfonzo soldered they are not… So on mine I unsoldered and put in the other one. Not sure if one could try to solder in the vertical one in backwards. You would not have pads to solder in the support.
Maybe they (Robotshop) have leg kit closer to what we are playing with.
@cyberpalin For this SES V2 Hexapod beta, the goal is really to use the Lynxmotion Smart Servos as opposed to RC servos. Although the focus is a little on the Teensy breakout at the moment because people had a stong preference for starting with a Teensy 4 as “brain”, the goal is to get the SES V2 hexapod up and walking There is currently no commercial kit, so take a look at the following:
Each leg uses:
2x https://www.robotshop.com/en/lynxmotion-smart-servo-lss-standard-st1.html
1x https://www.robotshop.com/en/lynxmotion-smart-servo-lss-high-speed-hs1.html
1x https://www.robotshop.com/en/lynxmotion-ses-aluminum-angled-c-bracket-v2.html
1x https://www.robotshop.com/en/lynxmotion-ses-aluminum-long-c-bracket-v2.html
1x https://www.robotshop.com/en/lynxmotion-ses-aluminum-double-wide-bracket.html
1x https://www.robotshop.com/en/lynxmotion-ses-aluminum-single-wide-bracket.html
1x https://www.robotshop.com/en/lynxmotion-ses-aluminum-short-c-bracket-v2.html
1x https://www.robotshop.com/en/lynxmotion-ses-aluminum-clamp-cf-tubes.html
1x https://www.robotshop.com/en/lynxmotion-ses-50mm-carbon-fiber-tubes-2pk.html
1x https://www.robotshop.com/en/phillips-pan-screws-025x2-56.html
To hold some screws in place, either idlers horns or 2-56 nuts:
2x https://www.robotshop.com/en/lynxmotion-lss-aluminum-idler-horn-set.html
1x https://www.robotshop.com/en/lynxmotion-steel-2-56-nuts-nylon-insert-lock-25.html
1x 3D printed foot
1x Rubber cover
If you plan to be an active participant in the beta, we can look into providing a bit of a discount.
Was afraid you were going to say that - think I will just leave them off. Too afraid if I pull the connector off it will just rip it off the board.
Made a wrong assumption. All the leg kits I saw showed HiTec Servo’s so assumed they would be interchangeable with the LSS Servos. Kurt’s comment that they are SESv1 explained it. Consider this a little light bulb coming on.
So would need to order the parts for the leg. Hey any discount will help so I will take you up on that offer. I am planning on helping out once I get everything set up and running, hopefully this weekend with start playing with the servos if I didn’t mess up the kitchen sink board assembly:)
Kurt’s comment that they are SESv1 explained it. Consider this a little light bulb coming on.
The approach taken when designing the Lynxmotion Smart servos was the following:
The goal for this BETA is to get the SES V2 Hexapod up and walking, ideally with terrain adaptation. If there are changes which are needed to the mechanics, deisgn, electronics or even the firmware loaded on the servos, this would be the time. BETA testers from the SES V2 humanoid and SES V2 quadruped are also following this thread. For example cmackenzie is banging down the door to participate so he can integrate it with ROS 2
Would you opt to start with one leg, or an entire hexapod?
Have very little experience with Hexapods. Most of my experience has been with autonomous rovers using all kinds of sensors for obstacle avoidance, navigation, RC/Bluetooth control for manual mode, etc. Some of my stuff is up on the PJRC forum and the OpenMV forum since I used a camera once to do the obstacle detection. Hey even did a 6-dof robotic arm, kinematics was fun (when it worked). Check my youtube channel (CyberMerln) for most of the videos :).
A whole hexapod at this time is probably a bit rich for my blood if I get all the servos needed - just the frame isn’t too bad. You do ask a very loaded question for someone like me. Could always get a frame and just load up one leg for testing and add servos as I go. Guess depends on final cost
CyberMerln - YouTube - Nice! Definitely sense a leaning towards Teensy and microcontroller performance. I’ll reach out to you directly via PM regarding how you want to get equipped for this BETA.
@cbenson and @cyberpalin - would be great to have you playing as well!
Hopefully today hoping to make some more progress on the USBHost code with PS4 and clones. They all work when connected directly by cable, but need to do some have some more debugging and potentially more work on the Bluetooth code to get them all to work.
If others are wanting to play some with BT and joysticks. We have tested more on the PS3 and several of their clones.
@kurte
Getting back into the swing of things.
You are right something strange going on with USBHost_t36 with 1.8.15beta9. Axes were messed up and reading correctly. So I went back to 1.8.14beta8 and PS4BT is working as it should. Something happened between beta8 and beta9 that broke it. Guess we should continue this on the Teensy forum:
Thought you all would like to see what @kurte LSS Kitchen Sink looks like when its all soldered up:
Looks good! My parts arrived in town today… Next few days hopefully I will be able to assemble as well.
Now the fun begins. Only 2 things I tested was that USBHost worked and the usb/5v switch worked. Think I may have a problem with my RX LED though - its on dimly when I plug the T4.1 in
Too late to ring the board out now.
Sorry, that may be semi-normal. Been a long time since I did a complete kitchen sink board that was setup for XBees.
Especially with all of the LEDS… Their usage sort of depends on if you are using an XBee or not (one plugged in) and Serial port…
Sort of a pain when not… (It is also possible I screwed that up).
But if they are working properly… They can come in handy… Sort of the last time I used a setup like this is with the DIY remote controls, that I have sort of like the one @zenta uses. Had one we adapted to XBee that was made by Jim Frye for us (old Lynxmotion days) and I also made another one…
So the LEDS came in handy.
The RSSI one let me know that the two XBees are properly paired and talking to each other.
The RX let me know that I was receiving something from the Remote (or Commander)… The TX showed when I was sending something out. With commander this did not normally ever happen. But with Remote, we would send messages back to display on screen…
Sorry in advance if I screwed up
Not a problem with the RX light. I kind of like them that’s why I went to the bother of soldering them on. Besides I like XBEE’s have several of them that I use besides the 3dr radio.
Anyway I rang out the board this morning and one major things screwed up, and not even in regards to all the small components. I messed up the soldering of the GND on the connector for ext power of all things believe it or not. But all seems to work now.
According to UPS should have the leg parts on Tuesday and then will start to play in earnest. A little too tired today from all the soldering and troubleshooting. Need my nap.
Ok this is a real newbie question (which I am). In the library there is a setServoID command but it seems that it is only applicable to the session.
So the question is how do I permanently change the ServoID from with in the library or do I have to use the configuration tool?
I keep meaning to implement it in my test programs…
One of these days
What I did, was to use their configuration software: which is talked about at:
I used their shield, configured as USB (slide switch), which I think connects up using something like an FTDI chip
Which they then connect up to PC using USB. In that program they allow you to do things like update Firmware in the servos. Mine is running the latest beta and you can do things like set the ids and baud rate of the servos.
What I keep meaning to do (and I maybe have… memory foggy), is to try running simple:
USB to Serial forwarding sketch on Teensy: examples->Teensy->USB_Serial->USBToSerial or some such name and see if the Lynxmotion app is happy enough with it.
I should just go ahead and do it, in test sketches in similar way I do setting baud rates.
My test sketches are up at: https://github.com/KurtE/LSS_Test_sketches
Yeah probably a good idea. Reason I was asking was beginning to play with your test sketch and wanted to start configuring the servos.
The only thing I have is one of their power hubs: Lynxmotion (LSS) - Power Hub - RobotShop
So I attached a FTDI adapter but didn’t seem to work - maybe I had wiring crossed or something. Maybe should try again.
EDIT: Take that back. It works with an FTDI adapter - changed jumpers and redid connections and it works.
Did try just using USB2Serial sketch without mods but that hangs LSS Config.
Looks like maybe I should try to setup a second setup, so we can experiment trying this… It may turn out that their code is FTDI specific. Would be interesting to see if someone tried this before?
Edit: I went ahead and ordered 2 more servos (a standard and a high speed)… So will help debug things like this without having to change things in the hexapod.
Besides maybe will want the extra two later when maybe @zenta announces what he may be adding onto his
@cyberpalin
I was playing round with the test sketch that I mentioned. I think it had an issue that sometime the LSS program would say it wanted baud rate of 0… which we did not like:
I made a debug version of that sketch, where I check for that. Also if you compile for Dual or Triple Serial it prints out to SerialUSB1 what baud rate is being asked for. Also it prints out the first 5 bytes of each thing it receives…
Can be improved on. But if you want to try it out:
/* USB to Serial - Teensy becomes a USB to Serial converter
http://dorkbotpdx.org/blog/paul/teensy_as_benito_at_57600_baud
You must select Serial from the "Tools > USB Type" menu
This example code is in the public domain.
*/
// set this to the hardware serial port you wish to use
#define HWSERIAL Serial1
unsigned long baud = 19200;
const int reset_pin = 4;
const int led_pin = 13; // 13 = Teensy 3.X & LC
// 11 = Teensy 2.0
// 6 = Teensy++ 2.0
void setup()
{
pinMode(led_pin, OUTPUT);
digitalWrite(led_pin, LOW);
digitalWrite(reset_pin, HIGH);
pinMode(reset_pin, OUTPUT);
Serial.begin(baud); // USB, communication to PC or Mac
#if defined(USB_DUAL_SERIAL) || defined(USB_TRIPLE_SERIAL)
SerialUSB1.begin(baud);
#endif
HWSERIAL.begin(baud); // communication to hardware serial
}
long led_on_time = 0;
byte buffer[80];
unsigned char prev_dtr = 0;
void loop()
{
unsigned char dtr;
int rd, wr, n;
// check if any data has arrived on the USB virtual serial port
rd = Serial.available();
if (rd > 0) {
// check if the hardware serial port is ready to transmit
wr = HWSERIAL.availableForWrite();
if (wr > 0) {
// compute how much data to move, the smallest
// of rd, wr and the buffer size
if (rd > wr) rd = wr;
if (rd > 80) rd = 80;
// read data from the USB port
n = Serial.readBytes((char *)buffer, rd);
// write it to the hardware serial port
HWSERIAL.write(buffer, n);
// turn on the LED to indicate activity
digitalWrite(led_pin, HIGH);
led_on_time = millis();
}
}
// check if any data has arrived on the hardware serial port
rd = HWSERIAL.available();
if (rd > 0) {
// check if the USB virtual serial port is ready to transmit
wr = Serial.availableForWrite();
if (wr > 0) {
// compute how much data to move, the smallest
// of rd, wr and the buffer size
if (rd > wr) rd = wr;
if (rd > 80) rd = 80;
// read data from the hardware serial port
n = HWSERIAL.readBytes((char *)buffer, rd);
// write it to the USB port
Serial.write(buffer, n);
// turn on the LED to indicate activity
digitalWrite(led_pin, HIGH);
led_on_time = millis();
#if defined(USB_DUAL_SERIAL) || defined(USB_TRIPLE_SERIAL)
SerialUSB1.printf("Recv(%u) %x %x %x %x %x(%c%c%c%c%c)\n",
n, buffer[0], buffer[1], buffer[2], buffer[3], buffer[4],
buffer[0], buffer[1], buffer[2], buffer[3], buffer[4]
);
#endif
}
}
// check if the USB virtual serial port has raised DTR
dtr = Serial.dtr();
if (dtr && !prev_dtr) {
digitalWrite(reset_pin, LOW);
delayMicroseconds(250);
digitalWrite(reset_pin, HIGH);
}
prev_dtr = dtr;
// if the LED has been left on without more activity, turn it off
if (millis() - led_on_time > 3) {
digitalWrite(led_pin, LOW);
}
// check if the USB virtual serial wants a new baud rate
if (Serial.baud() != baud) {
baud = Serial.baud();
if (baud == 0) {
#if defined(USB_DUAL_SERIAL) || defined(USB_TRIPLE_SERIAL)
Serial.println("Baud passed in 0... swith to 250000");
#endif
HWSERIAL.begin(250000);
}
else if (baud == 57600) {
// This ugly hack is necessary for talking
// to the arduino bootloader, which actually
// communicates at 58824 baud (+2.1% error).
// Teensyduino will configure the UART for
// the closest baud rate, which is 57143
// baud (-0.8% error). Serial communication
// can tolerate about 2.5% error, so the
// combined error is too large. Simply
// setting the baud rate to the same as
// arduino's actual baud rate works.
HWSERIAL.begin(58824);
} else {
HWSERIAL.begin(baud);
#if defined(USB_DUAL_SERIAL) || defined(USB_TRIPLE_SERIAL)
SerialUSB1.printf("Baud Change %u\n", baud);
#endif
}
}
}