Rosserial interface based on USB VCP for STM32F103C8, ported from from stm32F4 rosserial UART repo - https://github.com/johnsonzzd/rosserial_stm32_NucleoF411
Works with ROS kinetic distro.
-
0.3 - Upgrade HAL to v1.6.1
Update to custom VID/PID from pid.codes open-source USB PID program -
0.2 - Fixed ROS error on topic id..,
python node processed only the second topic due to fast data transmission, that's why it only worked with one publisher/subscriber,
added HAL_Delay on the first handshake between rosnode and MCU(node_handle.h) -
0.1 - JTAG Debug on board works, only works with one publisher / subscriber
ERROR - "Tried to publish before configured, topic id 105" on publisher and subscriber together, will be fixed on next version.
The USB VID/PID - 1209/FEFE is allocated through the pid.codes open-source USB PID program.
- Remove R10, and solder 1.5K pull-up resistor between PA12 and 3.3v.
- Connect JTAG pins on the STM32F103C8 to Nucleo board or st-link
- Burn the firmware using systemworkbench AC6, Cubemx version - 4.25.1 HAL Version - F1 v1.6.1
- Debug works thanks to currect .cfg file, publish to topic from ROS side, and check the results on the MCU debugger side
- run the following commands (from the original git by johnsonzzd) -
1st terminal. roscore
2nd terminal. rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0
3rd terminal. rostopic list 、 rostopic echo /version
Notice: Baudrate on VCP protocol is determine by the host(MCU), no need to set it as parameter on rosrun...
It is better to generate you own ros_lib on your system to get all your messeages, do the following -
cd <sketchbook>/libraries
rm -rf ros_lib
rosrun rosserial_arduino make_libraries.py .
and copy ros_lib to the systemworkbench project folder.
Itamar Eliakim
M.Sc Robotics Engineer, Tel Aviv, Israel
Email - Itamare@gmail.com