ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Other APIs for ROS

asked 2019-10-24 12:57:31 -0600

pitosalas gravatar image

We're looking into ways to make "training-wheels" for ROS. Before you get mad, hear me out. We have active ROS projects on TurtleBots and more in our Robotics Lab. We have computer science grad students working and being effective.

However I am interested in making those robots available to other disciplines or departments. Psychology, anthropology, theatre arts, cognitive science all have ideas on how they could incorporate Robotics into their research or curriculum. But these are not engineers or computer scientists.

I believe that we're not the first to see this need: to allow beginning or non-programmers to write simple programs for the robots. It could be a "blocks" programming interface, a different language, or just a simplified python binding with higher level abstractions, simplified concepts, probably more limited flexibility, but a simpler "hello world" experience.

Possible responses and my comment: 1) "Why don't they just use simple arduino robots for that?" Because we happen to have a fully equipped and growing robotics lab that is ROS based. 2) "Programming robots is hard. You can't dumb it down." I beg to differ. If you're willing to forgo some power and flexibility you should be able to get a simpler experience 3) "Just google" I googled quite a bit and wasn't able to find something that seemed to match.


edit retag flag offensive close merge delete


Is this connected to #q325733? Can you tell us what happened after you asked that question?

gvdhoorn gravatar image gvdhoorn  ( 2019-10-24 13:22:22 -0600 )edit

3 Answers

Sort by ยป oldest newest most voted

answered 2019-10-24 13:24:19 -0600

I'm always a fan of: if you cant find it, make it. It sounds like you just want to write some simple ROS-wrapped libraries for your users. For example, instead of making them know about pub/sub/ros, you can create a simple python library that will create a ROS node in the background (without their knowledge) and give them simple primitives like my_lib.stop() my_lib.go_forward() my_lib.go_to_pose()

Its on you to write that wrapper but there's nothing conceptually challenging about wrapping ROS-like concepts for a non-ROS user. Instead of roslaunch, you can just make a bash script and as long as they don't need to know what's happening, I'd expect you to be able to teach an introduction to programming student about bash.

I'm surprised there isn't a lego-mindstorm-like ROS wrapper for certain projects in the ROS community, but also doesn't surprise me there might not be something to meet your specific needs since everyone's needs are different.

edit flag offensive delete link more


I'm surprised there isn't a lego-mindstorm-like ROS wrapper for certain projects in the ROS community

there are various Blockly or Blockly-like 'wrappers' with ROS compatibility. Those would perhaps cover the OP's needs. But it's slightly unclear whether any programming would be ok.

gvdhoorn gravatar image gvdhoorn  ( 2019-10-24 13:28:10 -0600 )edit

Absolutely -- some programming is fine. In fact using some language that is better at conceptualizing concurrency is fine too. It just has to have a much shallower learning curve.

pitosalas gravatar image pitosalas  ( 2019-10-24 13:39:52 -0600 )edit

And yes @stevemacenski certainly I could write it myself. But I am an even bigger fan of: look hard because almost everything has been done by someone before :)

pitosalas gravatar image pitosalas  ( 2019-10-24 13:40:54 -0600 )edit

(well those things are done by others because someone had to do them ;-) )

stevemacenski gravatar image stevemacenski  ( 2019-10-24 15:14:04 -0600 )edit

answered 2019-10-24 20:12:27 -0600

fergs gravatar image

One possible option is to use SMACH - the state machine library which has some visualization of the state machine and which states are active. You could basically build out a library of states that do various primitives, and then end users could tie those states together using some simple python.

edit flag offensive delete link more


If SMACH would be acceptable, then perhaps FlexBE or even py_trees_ros or BehaviorTree.CPP (with its graphical editor) could be options.

gvdhoorn gravatar image gvdhoorn  ( 2019-10-25 03:25:51 -0600 )edit

answered 2019-10-25 14:47:01 -0600

Hello !

I just add my 2 cents to the other answers :

I work a lot on affordance for robotics, making robots as accessible as possible, and I totally agree that we should take them to fields to gather more use case.

The Poppy Project use Snap! (BYOB or Blockly V2) to program robot, so you could use it / Connect it with ROS. I didn't dived into the documentation a lot, but since many forks exist for different application, I'm sure someone can / did / will do a ROS fork.

I use Blockly at work as a way to program robot for non programming people (including 13 year old highschool student, they do pretty impressive things since they learn Scratch in french highschool), I cannot share code, but Blockly allow you to generate Python code with custom blocks, so you can generate ROS nodes ! (and fun friday afternoon applications)

edit flag offensive delete link more

Question Tools



Asked: 2019-10-24 12:57:31 -0600

Seen: 288 times

Last updated: Oct 25 '19