osrf / ros2_serial_example

61 stars 13 forks source link

Communications channel for design collaboration is needed #67

Closed chrisalbertson closed 3 years ago

chrisalbertson commented 5 years ago

This is something I could use yesterday. I'd like to work on it.

Possibly the readme.md file needs to say where discussions about the design take place.

I might be able to implement,

On the uP side, I think there need to be functions like "publish()", "advertise()", "spin-once()" and so on. How to do this without duplicating code for each uP platform?

ROS_Serial does all this today but it uses 20K of ROM and 70% of an Arduino's RAM for "Hello World".

clalancette commented 5 years ago

This is something I could use yesterday. I'd like to work on it.

Fantastic! Glad you are interested.

Possibly the readme.md file needs to say where discussions about the design take place.

True. This has been a small project so far (as you'll notice, I have 99% of the commits), so we've just been doing things informally. Using GitHub issues seems to be fine for design for now until this gets larger.

I might be able to implement,

* the micro-controller side and

I actually have a prototype to run on a microcontroller. It is definitely not yet done or fulling working, but it has most of the major pieces (STM32F3, FreeRTOS, serialization/deserialization). It still needs a bit of cleanup before I can release it, but I can get that done and release what I have later this week.

* a way to use this also with ROS 1.

From a serial comms perspective, this will be pretty straightforward. https://github.com/osrf/ros2_serial_example/blob/master/ros2_serial_example/src/transporter.cpp and https://github.com/osrf/ros2_serial_example/blob/master/ros2_serial_example/src/uart_transporter.cpp are completely divorced from the ROS 2 network side of things and should be reusable. That being said, the rest of the stack is heavily ROS 2 dependent, so if you really want to go that route, we may want to split the serial comms into a different package that both sides can depend on.

On the uP side, I think there need to be functions like "publish()", "advertise()", "spin-once()" and so on. How to do this without duplicating code for each uP platform?

Yeah, agreed, this would be nice. We should probably look at evolving my micro-controller code to be more of an API like this so we can keep it separated from both the low-lying drivers and from the high-level application.

ROS_Serial does all this today but it uses 20K of ROM and 70% of an Arduino's RAM for "Hello World".

Just to be clear, my example code is already 25K of flash. I haven't pared it down completely, but I don't expect to get it too small. It uses a lot of RAM currently, but that's mostly because I've been trying to go fast, not smart. We can probably pare that down quite a bit.

clalancette commented 3 years ago

There's been no activity here in a long time, so I'm going to close this out. Feel free to open specific issues if you still are interested in using this.