SIGHTS by S.A.R.T.

122 views
Skip to first unread message

Jack Williams

unread,
Feb 10, 2020, 3:39:34 PM2/10/20
to The Open Academic Robot Kit
Good morning everyone!

Just a quick post today to share a suite of open-source software that the Semi Autonomous Rescue Team has been working on for the past few years. We're now at a stage where we believe it is ready for the long-awaited 1.0 release.

This is our complete robot teleoperation service and web-based interface we've dubbed "SIGHTS", or "S.A.R.T. Integrated GUI and Host Teleoperation Service".


We have some tutorials and blogs coming up in the next few days that will help you install SIGHTS on your own robot and show you how to use the extensive configuration file to make everything run perfectly.


We're excited to share this project with you and are looking forward to working on further open source projects with the wider community - so if you have anything you'd like to contribute to SIGHTS (from simple bug reports or ideas to coding features of your own), don't hesitate to open a new issue or pull request! We'd love to work with you to make SIGHTS even better.

Jack Williams

unread,
Feb 11, 2020, 5:34:34 PM2/11/20
to The Open Academic Robot Kit
We've just posted the first tutorial blog - Make It Yours: Configuring SIGHTS Part 1 (Basic Configuration). This series of posts will help you do figure SIGHTS to your exacting standards on whatever hardware you're using.

https://www.sfxrescue.com/tutorials/make-it-yours-configuring-sights-part-1-basic-configuration/

The second part is being written up and will be posted in a couple of days.

Jack Williams

unread,
Feb 13, 2020, 6:01:41 PM2/13/20
to The Open Academic Robot Kit
We've just finished writing the second part of our configuration tutorial. This part is likely more relevant to you since it shows you how to configure sensors and graphs on your installation of SIGHTS.

https://www.sfxrescue.com/tutorials/make-it-yours-configuring-sights-part-2-advanced-configuration/

As always, if you have any questions, just leave a comment (here or on the relevant blog at sfxrescue.com) and a member of the team will reply as soon as possible

Felix King

unread,
Feb 17, 2020, 3:34:46 AM2/17/20
to The Open Academic Robot Kit
Dear Jack, 

This is amazing, we are amazed. Please send my regards to your media team. 

I think it's great that you've shared this with a reasonable time before the competition. Well done. 

Jack Williams

unread,
Feb 17, 2020, 6:43:06 AM2/17/20
to The Open Academic Robot Kit
Thanks Felix! I'll send that on to everyone involved.

We were aiming to release version 1.0 as soon as possible for that very reason - so teams would have time to test it, extend it for their needs and propose contributions and pull requests in the spirit of open source.

Jack Williams

unread,
Feb 17, 2020, 8:05:54 AM2/17/20
to The Open Academic Robot Kit
Speaking of extending SIGHTS, we've got another two-part tutorial coming up on the website that anyone testing SIGHTS with their own sensors and hardware might find useful.

This first part is all about creating your own "sensor wrappers", which allow you to use any custom sensor with SIGHTS.


Sensor wrappers are a great first contribution anyone can make to SIGHTS. Just take a look at any of the sensors you're using on your robot - if SIGHTS doesn't have full support for it yet, try this guide to create your own sensor wrapper for your sensor.
Then, make a pull request to have your new wrapper included with SIGHTS! :-)

Jack Williams

unread,
Feb 18, 2020, 8:57:19 PM2/18/20
to The Open Academic Robot Kit
Just finished writing up the second part of the extending tutorials.

This part covers the creation of "graphs". Graphs JavaScript classes you can use to display any data sent by the robot however you choose.


In some ways, graphs are easier to develop since you don't need access to sensor hardware to test them. You can use SIGHTS' built-in random data generators or host resource monitors (CPU temp/utilisation, RAM usage and disk usage) for testing. So, if you have an idea for a cool new way to display sensor data, you use this tutorial to create a new graph.
Then, make a pull request to have your new graph included with SIGHTS! :-)

Jack Williams

unread,
Feb 19, 2020, 12:25:04 AM2/19/20
to The Open Academic Robot Kit
One more thing about extensibility:

A lot of people are using Dynamixel servos in their robots, which SIGHTS supports out of the box.
SIGHTS also supports Sabertooth motor controllers.
If you're using something different, you're not out of luck: You can still use SIGHTS with your robot if you create a new motor handler class to add support for your motors.

All you need to implement is a few basic functions.
For more on adding new types of motors, check out the extending docs at https://www.sfxrescue.com/tutorials/unwrapping-sensor-wrappers-part-2-graphs/

Please let us know if you'd like a more complete tutorial about this on the website. :-)

Jack Williams

unread,
Feb 19, 2020, 12:35:01 AM2/19/20
to The Open Academic Robot Kit
Sorry, the link above is incorrect. If you need to create a motor handler class for your motors, check out https://github.com/SFXRescue/SIGHTSRobot/blob/master/docs/extending.md#adding-new-motors.

Marcus Jaiclin

unread,
Feb 19, 2020, 12:21:59 PM2/19/20
to Jack Williams, The Open Academic Robot Kit
Jack,

Congratulations on an impressive project!  Your work on the interface has been top-notch for many years, kudos to you for making it not only available but also accessible for everyone to use.  This is a huge leap.

Quick question that I couldn't see the answer to: Are you supporting both Dynamixel communication 1.0 and 2.0 or just 1.0?  Your bot uses the AX series, which is 1.0, the newer X series motors all use 2.0.  I know Blue Storm is using those, I'm not sure if anyone else is.

Thanks,
Marcus
(formerly of Blue Storm, now at The Bishop's School, La Jolla CA)


On Tue, Feb 18, 2020 at 9:35 PM Jack Williams <ja...@sfxrescue.com> wrote:
Sorry, the link above is incorrect. If you need to create a motor handler class for your motors, check out https://github.com/SFXRescue/SIGHTSRobot/blob/master/docs/extending.md#adding-new-motors.

--
You received this message because you are subscribed to the Google Groups "The Open Academic Robot Kit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to oarkit+un...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/oarkit/9b5f828d-aad7-42fb-9c7d-083c55440fbb%40googlegroups.com.

Jack Williams

unread,
Feb 19, 2020, 6:22:45 PM2/19/20
to The Open Academic Robot Kit
Thanks Marcus! Of course, this wouldn't be possible without the work of Connor Kneebone who has really defined the direction of the SIGHTS project since I left, so all due credit to him as well. :-)

The Dynamixel motor handler in SIGHTS is using the library "pyax12" with support for the entire AX series (including the AX-18s). Since I've never used other Dynamixels I can't be sure if it will support anything else, but it may be able to do all protocol 1.0 servos with some tweaking.

As for servos on protocol 2.0, SIGHTS wouldn't support those at the moment. If someone already has code supporting the new protocol, adding support should be as simple as creating a new class in motors.py* and implementing the functions:
`__init__` to create the connection
`move_raw` to set the speed of each servo
`stop` to stop all servos
`close` to close the connection

Connor is planning to update the `SerialConnection` class (for Sabertooth motor controller support) and will write a tutorial blog for adding motor support then.


*As described in the extending docs, a plugin system for motor classes is a possible future addition that we're looking into to make adding support for new motors even easier. This would work just like the existing sensor plugin system.

Angus Finch

unread,
Feb 21, 2020, 12:10:52 AM2/21/20
to The Open Academic Robot Kit

Hello everyone,

 

Congratulations to S.A.R.T. on this massive achievement - I've been enjoying the constant stream of updates regarding SIGHTS. In response to Marcus' question, I think we have some software that teams may be able to use to communicate to any Dynamixel servo (protocol version 1 or 2).

 

Since RoboCup 2019 I have been redesigning our codebase from the ground up to be modular and extensible, similar to S.A.R.T.'s approach but with a few differences. Part of that redesign includes a Dynamixel server that supports any servo running protocol versions 1 or 2. This means that it can be run on both our legacy robots and the new one we intend to take to the competition later this year.

 

This server is designed to rely on the servo's "Control Table" rather than some hard-coded values from the pyax12 library. The Robotis Dynamixel SDK is used to interact with the individual values on the servo, so in order to move forward you:

  • Enable torque on the motor
  • Set the goal position
  • Set the moving speed

 

This server is currently available on the CCGSRobotics/RoboHUD repository on GitHub, and I would be more than happy to convert it into a Python package this weekend & submit a pull request for SIGHTSRobot. The only problem would be that the code requires a dictionary that contains the control table. For us, there is a CSV stored on the robot that contains the control table.

 

Would that be something other teams are interested in using? I would really love to see more inter-team collaboration going forward! I'm on the RMRC Discord server if anyone wants any help testing this software. I'd love to know if anyone has had any success using this software.

 

Some relevant links:

RoboHUD:

https://github.com/CCGSRobotics/RoboHUD

An example control table:

https://gist.github.com/Finchiedev/178822fc754f140f15105f76c3100949

The modular Dynamixel server on master:

https://github.com/CCGSRobotics/RoboHUD/blob/master/Server/Driving/dynamixels.py

RoboHUD Python development guide (for an explanation on how the code works):

https://ccgsrobotics.gitbook.io/robohud/python/the-dynamixel-class

 

Many Thanks,

Angus Finch

King's Legacy - Christ Church Grammar School, Western Australia

Jack Williams

unread,
Feb 21, 2020, 6:29:20 AM2/21/20
to The Open Academic Robot Kit
Hey Angus, that's awesome!
I've been watching RoboHUD and you've been doing some amazing work. I do love how you're supporting both protocols.

Just since my last post, Connor has implemented the planned plugin system for motor connections, so one can now add support for new motors in a similar way one can add support for sensors. The extending docs have been updated to reflect all the changes. https://sfxrescue.github.io/SIGHTSRobot/#/extending?id=adding-new-motors

Since there aren't any further changes planned at the moment, it should be pretty stable if you want to create a motor support plugin using your solution. I completely agree with you on inter-team collaboration and we're always welcoming pull requests! :-)

Jack Williams

unread,
Feb 21, 2020, 6:35:18 AM2/21/20
to The Open Academic Robot Kit
PS: The motor connection plugin system hasn't been tagged as released yet. If you're using the SIGHTS installer, you'll need to pass the `--dev` flag to install (or update to) development versions.

wget https://raw.githubusercontent.com/SFXRescue/SIGHTSRobot/master/install.sh
chmod
+x install.sh
sudo ./install.sh --dev


Jack Williams

unread,
Feb 28, 2020, 6:11:37 AM2/28/20
to The Open Academic Robot Kit
SIGHTS 1.1 is released! We've pushed this out to release the motor wrapper plugin system we discussed in the previous few posts.

We've also merged the three repositories into one to, among other things, make contributing easier. Now everything's in one place rather than having to check out different repositories to work on the host and interface side of the code.

All documentation and blogs (referenced above) have been updated to reflect these changes, meaning they are still current and can be used as guides to create your own sensor wrappers, motor wrappers and graphs.



There are changes to the installer, so you should grab it again before running:

wget https://raw.githubusercontent.com/SFXRescue/sights/master/install.sh

chmod
+x install.sh
sudo ./install.sh

If you have already installed SIGHTS, you can then select option 9 to run an update. Alternatively, run the installer with the --update flag to skip the menu:
sudo ./install.sh --update


Jack Williams

unread,
Mar 25, 2020, 3:04:25 AM3/25/20
to The Open Academic Robot Kit
If anyone is interested in learning how SIGHTS works and contributing your own sensor graph, we have a new good first issue that should be relatively simple to implement. If you're interested, we can work with you if you have any questions, comments or concerns! :-)

https://github.com/SFXRescue/sights/issues/74

Connor Kneebone

unread,
Apr 17, 2020, 11:18:21 PM4/17/20
to The Open Academic Robot Kit

Good morning everyone!


While the lockdown sure makes it difficult to do much on the physical robot, it has been a great opportunity to get some software stuff done!


For starters, SIGHTS v1.2 has been released! Some new features and changes include:

  • Added support for GPIO switch devices (including hall effect switches, ready for Bordeaux next year!)
  • Accent colour theming (make it yours!)
  • Input improvements (merged speed indicators, better keyboard controls)
  • Behind the scenes clean-up of JS libraries
  • Huge improvements to the built-in updater

Our next milestone is improved motor support, including proper arm and paddle support. This is going to require a substantial rewrite to the motor code, and I am keen to hear from you guys for what you would want in terms of features and capabilities.


Some key features that we are looking to add:

  • Allow for different types of motors, including:
    • Dynamixel servos (all versions)
    • Sabertooth motor controllers
    • Pololu motor controllers
    • Anything else that you guys might want
  • Allow for a mix of different types of motors (e.g. DC motors for wheels and Dynamixels for the arm)
  • multiple connections of the same type (eg. multiple Sabertooth motor controllers)
  • flexible and easily reconfigurable groups (e.g. drive_left or arm_shoulder group)
  • mix of motor types within groups
  • easy support for a new type of motor connection (through plugin system)
  • mix of different 'classes' of motors (i.e. Dynamixel AX and XL series are both supported together)
  • easy support for per-motor configuration (useful for setting rotation limits, etc.)

We’re definitely looking to support both protocol’s as Marcus and Angus were talking about above, and we’d love to work with you guys to make it happen.


If you’re interested, definitely have a read through the relevant GitHub issue. This details the current plan for implementing the above, especially regarding the configuration of the motors.
I've also done some preliminary work on it in the motor-rewrite branch of the repository.


Feel free to join the discussion on GitHub and ask questions, suggest ideas, or contribute code!


Cheers,
Connor Kneebone
Semi-Autonomous Rescue Team

Raymond Sheh

unread,
Apr 18, 2020, 9:35:18 AM4/18/20
to Connor Kneebone, The Open Academic Robot Kit, raymo...@gmail.com
Great work folks!
--
You received this message because you are subscribed to the Google Groups "The Open Academic Robot Kit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to oarkit+un...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages