Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Oct 22 2019 18:05
    dependabot[bot] labeled #181
  • Oct 22 2019 18:05
    dependabot[bot] opened #181
  • Oct 22 2019 18:05

    dependabot[bot] on pip

    Bump flask from 0.10.1 to 1.0 i… (compare)

  • Jun 24 2019 10:37
    goodahn commented #177
  • Jun 19 2019 13:18
    asmodehn commented #144
  • Jun 19 2019 13:17
    asmodehn commented #177
  • Jun 19 2019 13:16
    asmodehn commented #163
  • Jun 19 2019 13:09
    asmodehn labeled #82
  • Jun 19 2019 13:09
    asmodehn labeled #82
  • Jun 19 2019 13:08
    asmodehn commented #82
  • May 20 2019 19:07

    asmodehn on scheduled-update-2019-05-13

    (compare)

  • May 20 2019 19:07
    pyup-bot closed #179
  • May 20 2019 19:07
    pyup-bot commented #179
  • May 20 2019 19:07
    pyup-bot opened #180
  • May 20 2019 19:07

    asmodehn on scheduled-update-2019-05-20

    Update numpy from 1.14.2 to 1.1… (compare)

  • May 20 2019 19:07

    asmodehn on scheduled-update-2019-05-20

    Update hypothesis from 3.56.3 t… (compare)

  • May 20 2019 19:07

    asmodehn on scheduled-update-2019-05-20

    Update pytest-xdist from 1.22.2… (compare)

  • May 20 2019 19:07

    asmodehn on scheduled-update-2019-05-20

    Update pytest from 3.5.0 to 4.5… (compare)

  • May 20 2019 19:07

    asmodehn on scheduled-update-2019-05-20

    (compare)

  • May 13 2019 19:05

    asmodehn on scheduled-update-2019-05-06

    (compare)

Ben Kehoe
@benkehoe
Hello!
Ben Kehoe
@benkehoe
I am not actively developing ROStful, but I would be glad to help facilitate work on it! I also have a complementary, non-ROS-specific framework for turning algorithms into web services, called Brass.
AlexV
@asmodehn
Hi !.
I have only little experience with python and webservices, so I am currently playing around with rostful and see how I can improve it. I am in touch with a few people from the ROS community, so I hope this will go smoothly.
I am still evaluating rostful, but I think it would be beneficial to have some webpage, with js code to be able to send messages easily - without having to type the whole json -. Ideally it would be nice to be able to "autogenerate" a webapp to command a robot, based only on ROS data... Not sure how much of this is feasible or how yet, so I m just messign around.
AlexV
@asmodehn
The plan is to use/integrate it in a complex setup where humans can control robots. human control would be done via web request.
So for rostful, we ll need to modify/extend it a bit, and release it as a package, and keep maintaining it.
So if I ask more specific questions :
  • are you okay with the idea of having client pages generated in rostful ? generation might be a long term goal, but we need the structure / software design in place asap IMHO...
  • how would you advise I do that ( I started using werkzeug, and making 1 more WSGI App that I ll access via a DispatcherMiddleware )
  • do you want to remain the official maintainer of rostful ? I am asking because there is no rostful package for indigo and we ll need to make one...
Ben Kehoe
@benkehoe
I'm fine if you want to become the maintainer of ROStful; I'm just happy if it is useful to someone :smile: Having procedurally-generated web pages for client input was part of the roadmap. I think it would be relatively straightforward to do. However, I would suggest more or less rebuilding it using an actual web framework. When I made ROStful, I just wanted a prototype people could try with no dependencies. I would use something like Tornado or Flask.
AlexV
@asmodehn
Cool thanks for that. I made a quick rewrite of the server using flask. I haven't touched or even checked the client part at all...
If you want to have a look, it s there : https://github.com/asmodehn/rostful/tree/flask
I am still modifying it and testing everything, for the server part.
To be honest I don't know enough of rostful (or even flask) yet to be able to decide on a nice code design, so I ll do that later. So it s not really clean yet.
But anyway, if you have any feedback, let me know !
Ben Kehoe
@benkehoe
I don't really have the time at the moment to dig into the code, or even really to test it out. Let me know if you need advice on architecture decisions, that'd be the easiest thing for me to help out with. Keep me posted, though!
AlexV
@asmodehn
Hi everyone, quick news update : I have added some login feature into Rostful( not integrated yet). I also implemented a quick prototype about how to detect and launch rocon interaction or rapps from rostful ( we can improve it later to run interaction from a webapp ). Rocon : http://wiki.ros.org/rocon.
I currently have 3 views :
  • ros as REST
  • rocon frontend
  • ros frontend
    If you want to get it for a spin, let me know and I ll guide you through the setup.
    @benkehoe I would like somehow to keep the rostful4ros and rostful4rocon separated, although have them in the same package. Any advice on how to do this properly from within the python code ? Like enable the rostful4rocon part only if rocon is detected on the system... I was thinking about detecting exception during import...
AlexV
@asmodehn
Hi everyone,
In the next few days I plan to reorganize my rostful repository.
  • I will separate the code/files required for examples out to another repository.
  • I will switch to the de facto ROS standard to name branches based on distro names.
  • I will make a rocon branch specific for rocon concepts implementations. I ll merge it back when the design will allow everything to work even without rocon.
    Any concerns/questions please let me know :)
Ben Kehoe
@benkehoe
wow, you've made a lot of progess!

The usual Pythonic way of doing it is something like this:

_ROCON = False
try:
  import rocon
  _ROCON = True
except: pass

if _ROCON:
  def func_that_uses_rocon():
    pass
  class RoconWrapper(object):
    pass

class SomeClass(object):
  def always_want_this(self):
    pass
  if _ROCON:
    def this_method_only_with_rocon(self):
      pass

Does that make sense?

You can see a more complicated example in my tfx package (which gives much more convenient transform classes than tf; let me know if you want to know more about it) https://bitbucket.org/benkehoe/tfx/src/19d68953da5bc84804ca91ad85d980fc4146cae6/src/tfx/canonical.py?at=default
AlexV
@asmodehn
Thanks. I started to change the code to follow this pattern where needed. Still needs a lot more testing...
AlexV
@asmodehn
Hi everyone,
I recently realized that I needed another interface from outside (celery task scheduler) to ROS. So I started splitting rostful's rosinterface into another package, that I can unittest and reuse even without rostful. It s there https://github.com/asmodehn/rostful-node, feel free to have a look and let me know if you have any comment. I m currently writing basic tests for it and fixing things along the way.
AlexV
@asmodehn

@benkehoe I am wondering about some design detail inside rostful. When adding or removing Topic, Service, and Action, a lot of method have a

        if ws_name is None:
            ws_name = topic_name
        if ws_name.startswith('/'):
            ws_name = ws_name[1:]

I couldn't figure out so far what was the use of it... I am always using only the first case... Could you please explain it to me ?

AlexV
@asmodehn
Quick update : after adding celery into rostful ( following examples to integrate celery into webservers ), I am now separating it into another repository to simplify rostful itself.
Let me know if you experience any trouble during this transition.
Pito Salas
@pitosalas
Hey, from the way past. Are you still using this? From the high level it looks like just what I am using but this looks like it might be abandoned.
AlexV
@asmodehn
Hey hey ! Actually I m still using it, but company had other priorities to move me on since this "works", and whenever I get time I m doing low level changes to pyros to prepare for HTTP2 support ( and push communication ).
I ll be happy to get some help to maintain the whole pyros suite if you re interested, let me know !
Pito Salas
@pitosalas
I would be , except I'm more of a ruby guy :) Learning Python now. Designing a course in robotics. I will have students who are python experts so maybe I can get some of them to help!
http2 and push are both advanced things in a way. I am setting up a turtlebot3 -- what kind of robot do you have?
AlexV
@asmodehn
working in a company with a huge (proprietary) thing :) http://gocart.yujinrobot.com/
ROS integrate pretty bad with python, so I had to rebuild a lot of things before being able to integrate with web and stuff...
and things that are already "working good enough" are not the focus of most companies, so maintenance is lacking, sadly...
Pito Salas
@pitosalas
cool!
yeah I understand. well we're earlier and in a teaching environment so my needs are probably a subset of yours :)
and you can look around the site if you're curious about the course :)
AlexV
@asmodehn
yeah... Just a few words though : teach python without ROS first... to get the basics right.
Pito Salas
@pitosalas
gotcha.
thanks for the tip
AlexV
@asmodehn
no pb ;)
wow outdoors ?
Pito Salas
@pitosalas
its a good point actually... The students will know java really well and some will know ruby really well too, and I was assuming I could just assume they could pick up python. maybe a bad assumption...
Well look - that's the long term vision, I know now that we will not get that done in even multiple semesters but we will learn and teach a lot as we strive for it :)
(see the caveats below the vision)
AlexV
@asmodehn
python language is easy to pick up. the trick is the environment... complex tools, different packages, standards always changing... and ROS is a very old framework using deprecated python features on top of that.
Pito Salas
@pitosalas
yeah I totally agree with that.
AlexV
@asmodehn
FYI : we are already doing elevators, but not outdoors.