Rosanswers logo

Please share some insights on the implementation of the same .

https://github.com/smd-ros-devel/kangaroo_x2_driver , i am trying to use this .

I tried to go through the raised issues on Github , but all of them were in complete .

I hope to find someone who has had experience in the above hardware configuration .

I have put the sabertooth in USB serial mode (on off on on off on 1-6) , kangaroo ,(0ff on on on 4-1). I then connected s2-a1 s1-a2 ,

https://pypi.python.org/pypi/sabertooth/0.3.2 , i am using this to talk to the sabertooth vai USB port (baud 9600 , port 128)

I can control sabertooth vai ROS , but i am not able to get the kangaroo to talk to sabertooth .

Please help , i have been skimming the Internet to find help , most are incomplete articles .

Sabertooth + Kangaroo x2 is a great combination , dimensional engineering also doesnt have much tutorials for the same .(often their original manual seem to be very confusing )

Originally posted by chrissunny94 on ROS Answers with karma: 142 on 2018-01-09

Post score: 0


1 Answer 1


Rosanswers logo

Connect an Arduino as per the code

// Mixed Mode Sample for Kangaroo
// Copyright (c) 2013 Dimension Engineering LLC
// See license.txt for license details.

#include <SoftwareSerial.h>
#include <Kangaroo.h>

// Arduino TX (pin 11) goes to Kangaroo S1
// Arduino RX (pin 10) goes to Kangaroo S2
// Arduino GND         goes to Kangaroo 0V
 // Arduino 5V          goes to Kangaroo 5V (OPTIONAL, if you want Kangaroo to power the Arduino)
 #define TX_PIN 2 //s1
 #define RX_PIN 3 //s2

 // Mixed mode channels on Kangaroo are, by default, 'D' and 'T'.
 SoftwareSerial  SerialPort(RX_PIN, TX_PIN);
 KangarooSerial  K(SerialPort);
 KangarooChannel Drive(K, 'D');
 KangarooChannel Turn(K, 'T');

 void setup()


  SerialPort.println("D, units 100 thou = 256 lines");
  SerialPort.println("T, units 100 thou = 256 lines");


  void loop()
   //  Drive 500 ticks (relative to where we are right now), then wait 1 second.

   // Turn 500 ticks (relative to where we are right now), then wait 1 second.
   if (SerialPort.available()) {

   if (Serial.available()) {

This is the Python Script which will talk to the Arduino

  from time import sleep
  import serial
  ser = serial.Serial('/dev/ttyUSB1', 9600) # Establish the connection on a speci$
  counter = 32 # Below 32 everything in ASCII is gibberish
  while True:
     counter +=10
     ser.write("T,p"+str(counter)) # Convert the decimal number to ASCII then s$
     print ser.readline() # Read the newest output from the Arduino
     sleep(.1) # Delay for one tenth of a second
     if counter == 255:
        counter = 32

Originally posted by chrissunny94 with karma: 142 on 2018-01-23

This answer was ACCEPTED on the original site

Post score: 0


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.