Giter Site home page Giter Site logo

rosserial_esp32's Introduction

rosserial_esp32

This package is based on rosserial to enable communication between ROS and ESP32 using ESP-IDF.

Supports rosserial communication over UART and WiFi

Generate ROS libraries

Follow the steps below in order to generate and include ROS libraries (This will create a component in IDF_PATH and need to generate it only once)

$ cd path/to/catkin_ws/src/
$ git clone https:/www.github.com/sachin0x18/rosserial_esp32.git
$ rosrun rosserial_esp32 make_libraries.py $IDF_PATH/components/

After execution of above commands, all the necessary ROS files would have been generated in $IDF_PATH/components/rosserial_esp32/

Examples

rosserial_esp32's People

Contributors

sachin0x18 avatar vedantparanjape avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

rosserial_esp32's Issues

Can not compile when using std_msgs/Int8MultiArray

Hi,
I'm trying to use an array topic but I get the following error when compiling :

In file included from /home/xavieragx/esp/esp-idf/components/rosserial_esp32/include/std_msgs/Float32MultiArray.h:8,
                 from ../main/rover_esp32.cpp:4:
/home/xavieragx/esp/esp-idf/components/rosserial_esp32/include/std_msgs/MultiArrayLayout.h: In member function 'virtual int std_msgs::MultiArrayLayout::deserialize(unsigned char*)':
/home/xavieragx/esp/esp-idf/components/rosserial_esp32/include/std_msgs/MultiArrayLayout.h:60:123: error: 'void* realloc(void*, size_t)' moving an object of non-trivially copyable type 'std_msgs::MultiArrayLayout::_dim_type' {aka 'class std_msgs::MultiArrayDimension'}; use 'new' and 'delete' instead [-Werror=class-memaccess]
         this->dim = (std_msgs::MultiArrayDimension*)realloc(this->dim, dim_lengthT * sizeof(std_msgs::MultiArrayDimension));
                                                                                                                           ^
In file included from /home/xavieragx/esp/esp-idf/components/rosserial_esp32/include/std_msgs/MultiArrayLayout.h:8,
                 from /home/xavieragx/esp/esp-idf/components/rosserial_esp32/include/std_msgs/Float32MultiArray.h:8,
                 from ../main/rover_esp32.cpp:4:
/home/xavieragx/esp/esp-idf/components/rosserial_esp32/include/std_msgs/MultiArrayDimension.h:12:9: note: 'std_msgs::MultiArrayLayout::_dim_type' {aka 'class std_msgs::MultiArrayDimension'} declared here
   class MultiArrayDimension : public ros::Msg
         ^~~~~~~~~~~~~~~~~~~
In file included from /home/xavieragx/esp/esp-idf/components/rosserial_esp32/include/std_msgs/Float32MultiArray.h:8,
                 from ../main/rover_esp32.cpp:4:
/home/xavieragx/esp/esp-idf/components/rosserial_esp32/include/std_msgs/MultiArrayLayout.h:65:88: error: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'std_msgs::MultiArrayLayout::_dim_type' {aka 'class std_msgs::MultiArrayDimension'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Werror=class-memaccess]
         memcpy( &(this->dim[i]), &(this->st_dim), sizeof(std_msgs::MultiArrayDimension));
                                                                                        ^
In file included from /home/xavieragx/esp/esp-idf/components/rosserial_esp32/include/std_msgs/MultiArrayLayout.h:8,
                 from /home/xavieragx/esp/esp-idf/components/rosserial_esp32/include/std_msgs/Float32MultiArray.h:8,
                 from ../main/rover_esp32.cpp:4:
/home/xavieragx/esp/esp-idf/components/rosserial_esp32/include/std_msgs/MultiArrayDimension.h:12:9: note: 'std_msgs::MultiArrayLayout::_dim_type' {aka 'class std_msgs::MultiArrayDimension'} declared here
   class MultiArrayDimension : public ros::Msg

There seems to be a problem with MultiArrayLayout.h causing the compilation of all arrays topics to fail. I've tried to modifiy it but I wasn't able to find the fix. Maybe it's a cpp compiler version issue.
I'm going to use another solution for now but it would be great if anyone knows how to fix this.

installation of esp-idf alongside ROS Noetic

Hi @sachin0x18,

I've been trying to install esp-idf while having ROS Noetic installed but I can't seem to get it working. ROS Noetic uses pyparsing 2.4.6 (installed via apt install python3-pyparsing) and cannot be uninstalled via pip. When I create a python virtual environment, it is still able to find the version 2.4.6.

Have you had the same problems? And if so, how did you solve them?

unable to compile after porting rosserial to idf v4.x

I added a CMakeLists.txt to rossserial_esp32 component to make it compatible with idf.py

My CMakeLists.txt content:

idf_component_register(SRCS "duration.cpp"
                            "time.cpp"
                            "esp_ros_wifi.c"
                    INCLUDE_DIRS "include"
                    REQUIRES vfs nvs_flash)

my code: https://github.com/VedantParanjape/ROS-Workshop-ESP32-Codes

Error:

[910/911] Linking CXX executable ROS_with_servo_control.elf
FAILED: : && /home/vedant/.espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++   -mlongcalls -Wno-frame-address   CMakeFiles/ROS_with_servo_control.elf.dir/project_elf_src.c.obj  -o ROS_with_servo_control.elf  esp-idf/xtensa/libxtensa.a esp-idf/esp_ringbuf/libesp_ringbuf.a esp-idf/bootloader_support/libbootloader_support.a esp-idf/efuse/libefuse.a esp-idf/driver/libdriver.a esp-idf/app_update/libapp_update.a esp-idf/nvs_flash/libnvs_flash.a esp-idf/pthread/libpthread.a esp-idf/espcoredump/libespcoredump.a esp-idf/perfmon/libperfmon.a esp-idf/esp32/libesp32.a esp-idf/esp_common/libesp_common.a esp-idf/soc/libsoc.a esp-idf/esp_eth/libesp_eth.a esp-idf/tcpip_adapter/libtcpip_adapter.a esp-idf/esp_netif/libesp_netif.a esp-idf/esp_event/libesp_event.a esp-idf/wpa_supplicant/libwpa_supplicant.a esp-idf/esp_wifi/libesp_wifi.a esp-idf/lwip/liblwip.a esp-idf/log/liblog.a esp-idf/heap/libheap.a esp-idf/app_trace/libapp_trace.a esp-idf/freertos/libfreertos.a esp-idf/vfs/libvfs.a esp-idf/newlib/libnewlib.a esp-idf/cxx/libcxx.a esp-idf/spi_flash/libspi_flash.a esp-idf/spiffs/libspiffs.a esp-idf/nghttp/libnghttp.a esp-idf/esp-tls/libesp-tls.a esp-idf/tcp_transport/libtcp_transport.a esp-idf/mqtt/libmqtt.a esp-idf/sdmmc/libsdmmc.a esp-idf/esp_serial_slave_link/libesp_serial_slave_link.a esp-idf/openssl/libopenssl.a esp-idf/wear_levelling/libwear_levelling.a esp-idf/esp_http_server/libesp_http_server.a esp-idf/cbor/libcbor.a esp-idf/protobuf-c/libprotobuf-c.a esp-idf/console/libconsole.a esp-idf/protocomm/libprotocomm.a esp-idf/mdns/libmdns.a esp-idf/json/libjson.a esp-idf/wifi_provisioning/libwifi_provisioning.a esp-idf/esp_http_client/libesp_http_client.a esp-idf/esp_websocket_client/libesp_websocket_client.a esp-idf/expat/libexpat.a esp-idf/rosserial_esp32/librosserial_esp32.a esp-idf/coap/libcoap.a esp-idf/jsmn/libjsmn.a esp-idf/fatfs/libfatfs.a esp-idf/esp_gdbstub/libesp_gdbstub.a esp-idf/asio/libasio.a esp-idf/esp_adc_cal/libesp_adc_cal.a esp-idf/ROS_SRA19/libROS_SRA19.a esp-idf/esp_https_ota/libesp_https_ota.a esp-idf/libsodium/liblibsodium.a esp-idf/freemodbus/libfreemodbus.a esp-idf/esp_local_ctrl/libesp_local_ctrl.a esp-idf/unity/libunity.a esp-idf/ulp/libulp.a -Wl,--cref -Wl,--Map=/home/vedant/ROS-Workshop-ESP32-Codes/codes/ROS_with_servo_control/build/ROS_with_servo_control.map -fno-rtti -fno-lto esp-idf/json/libjson.a esp-idf/sdmmc/libsdmmc.a esp-idf/wear_levelling/libwear_levelling.a esp-idf/protocomm/libprotocomm.a esp-idf/protobuf-c/libprotobuf-c.a esp-idf/mdns/libmdns.a esp-idf/console/libconsole.a esp-idf/cxx/libcxx.a esp-idf/newlib/libnewlib.a esp-idf/freertos/libfreertos.a esp-idf/heap/libheap.a esp-idf/log/liblog.a esp-idf/lwip/liblwip.a esp-idf/soc/libsoc.a esp-idf/esp_common/libesp_common.a esp-idf/esp32/libesp32.a esp-idf/xtensa/libxtensa.a esp-idf/mbedtls/mbedtls/library/libmbedtls.a esp-idf/mbedtls/mbedtls/library/libmbedcrypto.a esp-idf/mbedtls/mbedtls/library/libmbedx509.a esp-idf/spi_flash/libspi_flash.a esp-idf/efuse/libefuse.a esp-idf/bootloader_support/libbootloader_support.a esp-idf/esp_ringbuf/libesp_ringbuf.a esp-idf/app_update/libapp_update.a esp-idf/driver/libdriver.a esp-idf/app_trace/libapp_trace.a esp-idf/nvs_flash/libnvs_flash.a esp-idf/pthread/libpthread.a esp-idf/vfs/libvfs.a esp-idf/espcoredump/libespcoredump.a esp-idf/perfmon/libperfmon.a esp-idf/ulp/libulp.a esp-idf/esp_http_client/libesp_http_client.a esp-idf/esp_http_server/libesp_http_server.a esp-idf/esp_wifi/libesp_wifi.a esp-idf/wpa_supplicant/libwpa_supplicant.a esp-idf/tcpip_adapter/libtcpip_adapter.a esp-idf/esp_event/libesp_event.a esp-idf/esp_netif/libesp_netif.a esp-idf/esp_eth/libesp_eth.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libcoexist.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libcore.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libespnow.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libmesh.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libnet80211.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libpp.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/librtc.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libsmartconfig.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libphy.a esp-idf/nghttp/libnghttp.a esp-idf/esp-tls/libesp-tls.a esp-idf/tcp_transport/libtcp_transport.a esp-idf/cxx/libcxx.a esp-idf/newlib/libnewlib.a esp-idf/freertos/libfreertos.a esp-idf/heap/libheap.a esp-idf/log/liblog.a esp-idf/lwip/liblwip.a esp-idf/soc/libsoc.a esp-idf/esp_common/libesp_common.a esp-idf/esp32/libesp32.a esp-idf/xtensa/libxtensa.a esp-idf/mbedtls/mbedtls/library/libmbedtls.a esp-idf/mbedtls/mbedtls/library/libmbedcrypto.a esp-idf/mbedtls/mbedtls/library/libmbedx509.a esp-idf/spi_flash/libspi_flash.a esp-idf/efuse/libefuse.a esp-idf/bootloader_support/libbootloader_support.a esp-idf/esp_ringbuf/libesp_ringbuf.a esp-idf/app_update/libapp_update.a esp-idf/driver/libdriver.a esp-idf/app_trace/libapp_trace.a esp-idf/nvs_flash/libnvs_flash.a esp-idf/pthread/libpthread.a esp-idf/vfs/libvfs.a esp-idf/espcoredump/libespcoredump.a esp-idf/perfmon/libperfmon.a esp-idf/ulp/libulp.a esp-idf/esp_http_client/libesp_http_client.a esp-idf/esp_http_server/libesp_http_server.a esp-idf/esp_wifi/libesp_wifi.a esp-idf/wpa_supplicant/libwpa_supplicant.a esp-idf/tcpip_adapter/libtcpip_adapter.a esp-idf/esp_event/libesp_event.a esp-idf/esp_netif/libesp_netif.a esp-idf/esp_eth/libesp_eth.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libcoexist.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libcore.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libespnow.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libmesh.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libnet80211.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libpp.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/librtc.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libsmartconfig.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libphy.a esp-idf/nghttp/libnghttp.a esp-idf/esp-tls/libesp-tls.a esp-idf/tcp_transport/libtcp_transport.a esp-idf/cxx/libcxx.a esp-idf/newlib/libnewlib.a esp-idf/freertos/libfreertos.a esp-idf/heap/libheap.a esp-idf/log/liblog.a esp-idf/lwip/liblwip.a esp-idf/soc/libsoc.a esp-idf/esp_common/libesp_common.a esp-idf/esp32/libesp32.a esp-idf/xtensa/libxtensa.a esp-idf/mbedtls/mbedtls/library/libmbedtls.a esp-idf/mbedtls/mbedtls/library/libmbedcrypto.a esp-idf/mbedtls/mbedtls/library/libmbedx509.a esp-idf/spi_flash/libspi_flash.a esp-idf/efuse/libefuse.a esp-idf/bootloader_support/libbootloader_support.a esp-idf/esp_ringbuf/libesp_ringbuf.a esp-idf/app_update/libapp_update.a esp-idf/driver/libdriver.a esp-idf/app_trace/libapp_trace.a esp-idf/nvs_flash/libnvs_flash.a esp-idf/pthread/libpthread.a esp-idf/vfs/libvfs.a esp-idf/espcoredump/libespcoredump.a esp-idf/perfmon/libperfmon.a esp-idf/ulp/libulp.a esp-idf/esp_http_client/libesp_http_client.a esp-idf/esp_http_server/libesp_http_server.a esp-idf/esp_wifi/libesp_wifi.a esp-idf/wpa_supplicant/libwpa_supplicant.a esp-idf/tcpip_adapter/libtcpip_adapter.a esp-idf/esp_event/libesp_event.a esp-idf/esp_netif/libesp_netif.a esp-idf/esp_eth/libesp_eth.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libcoexist.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libcore.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libespnow.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libmesh.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libnet80211.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libpp.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/librtc.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libsmartconfig.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libphy.a esp-idf/nghttp/libnghttp.a esp-idf/esp-tls/libesp-tls.a esp-idf/tcp_transport/libtcp_transport.a esp-idf/cxx/libcxx.a esp-idf/newlib/libnewlib.a esp-idf/freertos/libfreertos.a esp-idf/heap/libheap.a esp-idf/log/liblog.a esp-idf/lwip/liblwip.a esp-idf/soc/libsoc.a esp-idf/esp_common/libesp_common.a esp-idf/esp32/libesp32.a esp-idf/xtensa/libxtensa.a esp-idf/mbedtls/mbedtls/library/libmbedtls.a esp-idf/mbedtls/mbedtls/library/libmbedcrypto.a esp-idf/mbedtls/mbedtls/library/libmbedx509.a esp-idf/spi_flash/libspi_flash.a esp-idf/efuse/libefuse.a esp-idf/bootloader_support/libbootloader_support.a esp-idf/esp_ringbuf/libesp_ringbuf.a esp-idf/app_update/libapp_update.a esp-idf/driver/libdriver.a esp-idf/app_trace/libapp_trace.a esp-idf/nvs_flash/libnvs_flash.a esp-idf/pthread/libpthread.a esp-idf/vfs/libvfs.a esp-idf/espcoredump/libespcoredump.a esp-idf/perfmon/libperfmon.a esp-idf/ulp/libulp.a esp-idf/esp_http_client/libesp_http_client.a esp-idf/esp_http_server/libesp_http_server.a esp-idf/esp_wifi/libesp_wifi.a esp-idf/wpa_supplicant/libwpa_supplicant.a esp-idf/tcpip_adapter/libtcpip_adapter.a esp-idf/esp_event/libesp_event.a esp-idf/esp_netif/libesp_netif.a esp-idf/esp_eth/libesp_eth.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libcoexist.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libcore.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libespnow.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libmesh.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libnet80211.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libpp.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/librtc.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libsmartconfig.a /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32/libphy.a esp-idf/nghttp/libnghttp.a esp-idf/esp-tls/libesp-tls.a esp-idf/tcp_transport/libtcp_transport.a -u __cxa_guard_dummy -lstdc++ esp-idf/pthread/libpthread.a -u __cxx_fatal_exception -lm esp-idf/newlib/libnewlib.a -u newlib_include_locks_impl -u newlib_include_heap_impl -u newlib_include_syscalls_impl -u newlib_include_pthread_impl -Wl,--undefined=uxTopUsedPriority -L /home/vedant/esp/esp-idf/components/esp_rom/esp32/ld -T esp32.rom.newlib-funcs-time.ld -T esp32.rom.ld -T esp32.rom.libgcc.ld -T esp32.rom.newlib-data.ld -T esp32.rom.syscalls.ld -T esp32.rom.newlib-funcs.ld -Wl,--gc-sections -L /home/vedant/ROS-Workshop-ESP32-Codes/codes/ROS_with_servo_control/build/esp-idf/esp32 -T esp32_out.ld -u app_main -L /home/vedant/ROS-Workshop-ESP32-Codes/codes/ROS_with_servo_control/build/esp-idf/esp32/ld -T esp32.project.ld -L /home/vedant/esp/esp-idf/components/esp32/ld -T esp32.peripherals.ld -lgcc -u call_user_start_cpu0 -u ld_include_panic_highint_hdl /home/vedant/esp/esp-idf/components/xtensa/esp32/libhal.a -u esp_app_desc esp-idf/app_trace/libapp_trace.a -lgcov esp-idf/app_trace/libapp_trace.a -lgcov -lc -u pthread_include_pthread_impl -u pthread_include_pthread_cond_impl -u pthread_include_pthread_local_storage_impl -u vfs_include_syscalls_impl -L /home/vedant/esp/esp-idf/components/esp_wifi/lib/esp32 && :
/home/vedant/.espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/esp32/libesp32.a(cpu_start.c.obj):(.literal.main_task+0x18): undefined reference to `app_main'
/home/vedant/.espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/esp32/libesp32.a(cpu_start.c.obj): in function `main_task':
/home/vedant/esp/esp-idf/components/esp32/cpu_start.c:550: undefined reference to `app_main'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
ninja failed with exit code 1

rosserial_esp32 not found

Hi,
When I try to run your command
"rosrun rosserial_esp32 make_libraries.py $IDF_PATH/components/"
I get an error saying that "rosserial_esp32 not found".
Any clue on how to fix this issue?
Thanks
PS: I have tried to do "Rospack profile" no luck. I have also done catkin_make before doing anything.

"Lost sync with device" problem

I found your question about "ESP32 + rosserial_python over WiFi: Lost sync with device", I wonder how did you fix this problem? I am now using STM32 and rosserial package and facing the same problem. Thank you!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.