-
-
Notifications
You must be signed in to change notification settings - Fork 93
Closed
Description
Hello, and thanks for an awesome project!
I am a beginner in PlatformIO, trying to compile the base_controller. My compilation fails due to:
lib/base_controller/base_controller.h:438:17: error: no matching function for call to 'ros::NodeHandle_<ArduinoHardware>::getParam(const char [28], long unsigned int*)'
I am running on Ubuntu 22.04 on top of WSL2, but am also facing the same issue on pure Ubuntu 22.04 on my laptop. I have a freshly cloned repository on both computers, and have only attempted to open and build the project in PlatformIO as advised here: https://ros-mobile-robots.com/processing_units/teensy-mcu/
Would you be able to provide any guidance on how I should proceed?
Full log from the console:
* Executing task: platformio run --environment teensy31
Processing teensy31 (platform: teensy; board: teensy31; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/teensy/teensy31.html
PLATFORM: Teensy (4.18.0) > Teensy 3.1 / 3.2
HARDWARE: MK20DX256 72MHz, 64KB RAM, 256KB Flash
DEBUG: Current (jlink) External (jlink)
PACKAGES:
- framework-arduinoteensy @ 1.158.0 (1.58)
- toolchain-gccarmnoneeabi-teensy @ 1.110301.0 (11.3.1)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 109 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Rosserial Arduino Library @ 0.9.1
|-- lib @ 0.0.0+20240131183356
|-- Adafruit Motor Shield V2 Library @ 1.1.3
|-- Wire @ 1.0
|-- motor_controllers
|-- base_controller
|-- config
Building in release mode
Compiling .pio/build/teensy31/src/main.cpp.o
Archiving .pio/build/teensy31/lib2fb/libSPI.a
Indexing .pio/build/teensy31/lib2fb/libSPI.a
Archiving .pio/build/teensy31/liba29/libEthernet.a
Indexing .pio/build/teensy31/liba29/libEthernet.a
Archiving .pio/build/teensy31/lib5fe/libWire.a
Archiving .pio/build/teensy31/lib880/libAdafruit BusIO.a
Indexing .pio/build/teensy31/lib5fe/libWire.a
Indexing .pio/build/teensy31/lib880/libAdafruit BusIO.a
Archiving .pio/build/teensy31/lib189/libAdafruit Motor Shield V2 Library.a
Indexing .pio/build/teensy31/lib189/libAdafruit Motor Shield V2 Library.a
Archiving .pio/build/teensy31/lib625/libmotor_controllers.a
Archiving .pio/build/teensy31/libf57/libEncoder.a
Indexing .pio/build/teensy31/lib625/libmotor_controllers.a
Indexing .pio/build/teensy31/libf57/libEncoder.a
Archiving .pio/build/teensy31/libb01/libencoder.a
Archiving .pio/build/teensy31/lib211/libpid.a
Indexing .pio/build/teensy31/libb01/libencoder.a
Indexing .pio/build/teensy31/lib211/libpid.a
Compiling .pio/build/teensy31/FrameworkArduino/HardwareSerial.cpp.o
Compiling .pio/build/teensy31/FrameworkArduino/HardwareSerial1.cpp.o
Compiling .pio/build/teensy31/FrameworkArduino/HardwareSerial2.cpp.o
Compiling .pio/build/teensy31/FrameworkArduino/HardwareSerial3.cpp.o
Compiling .pio/build/teensy31/FrameworkArduino/HardwareSerial4.cpp.o
Compiling .pio/build/teensy31/FrameworkArduino/HardwareSerial5.cpp.o
In file included from src/main.cpp:4:
lib/base_controller/base_controller.h: In member function 'void diffbot::BaseController<TMotorController, TMotorDriver>::init()':
lib/base_controller/base_controller.h:438:17: error: no matching function for call to 'ros::NodeHandle_<ArduinoHardware>::getParam(const char [28], long unsigned int*)'
438 | nh_.getParam("/diffbot/encoder_resolution", &this->encoder_resolution_);
| ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~Compiling .pio/build/teensy31/FrameworkArduino/HardwareSerial6.cpp.o
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from .pio/libdeps/teensy31/Rosserial Arduino Library/src/ros.h:38,
from src/main.cpp:1:
.pio/libdeps/teensy31/Rosserial Arduino Library/src/ros/node_handle.h:568:8: note: candidate: 'bool ros::NodeHandle_<Hardware, MAX_SUBSCRIBERS, MAX_PUBLISHERS, INPUT_SIZE, OUTPUT_SIZE>::getParam(const char*, int*, int, int) [with Hardware = ArduinoHardware; int MAX_SUBSCRIBERS = 25; int MAX_PUBLISHERS = 25; int INPUT_SIZE = 512; int OUTPUT_SIZE = 512]' (near match)
568 | bool getParam(const char* name, int* param, int length = 1, int timeout = 1000)
| ^~~~~~~~
.pio/libdeps/teensy31/Rosserial Arduino Library/src/ros/node_handle.h:568:8: note: conversion of argument 2 would be ill-formed:
.pio/libdeps/teensy31/Rosserial Arduino Library/src/ros/node_handle.h:586:8: note: candidate: 'bool ros::NodeHandle_<Hardware, MAX_SUBSCRIBERS, MAX_PUBLISHERS, INPUT_SIZE, OUTPUT_SIZE>::getParam(const char*, float*, int, int) [with Hardware = ArduinoHardware; int MAX_SUBSCRIBERS = 25; int MAX_PUBLISHERS = 25; int INPUT_SIZE = 512; int OUTPUT_SIZE = 512]'
586 | bool getParam(const char* name, float* param, int length = 1, int timeout = 1000)
| ^~~~~~~~
.pio/libdeps/teensy31/Rosserial Arduino Library/src/ros/node_handle.h:586:42: note: no known conversion for argument 2 from 'long unsigned int*' to 'float*'
586 | bool getParam(const char* name, float* param, int length = 1, int timeout = 1000)
| ~~~~~~~^~~~~
.pio/libdeps/teensy31/Rosserial Arduino Library/src/ros/node_handle.h:604:8: note: candidate: 'bool ros::NodeHandle_<Hardware, MAX_SUBSCRIBERS, MAX_PUBLISHERS, INPUT_SIZE, OUTPUT_SIZE>::getParam(const char*, char**, int, int) [with Hardware = ArduinoHardware; int MAX_SUBSCRIBERS = 25; int MAX_PUBLISHERS = 25; int INPUT_SIZE = 512; int OUTPUT_SIZE = 512]'
604 | bool getParam(const char* name, char** param, int length = 1, int timeout = 1000)
| ^~~~~~~~
.pio/libdeps/teensy31/Rosserial Arduino Library/src/ros/node_handle.h:604:42: note: no known conversion for argument 2 from 'long unsigned int*' to 'char**'
604 | bool getParam(const char* name, char** param, int length = 1, int timeout = 1000)
| ~~~~~~~^~~~~
.pio/libdeps/teensy31/Rosserial Arduino Library/src/ros/node_handle.h:622:8: note: candidate: 'bool ros::NodeHandle_<Hardware, MAX_SUBSCRIBERS, MAX_PUBLISHERS, INPUT_SIZE, OUTPUT_SIZE>::getParam(const char*, bool*, int, int) [with Hardware = ArduinoHardware; int MAX_SUBSCRIBERS = 25; int MAX_PUBLISHERS = 25; int INPUT_SIZE = 512; int OUTPUT_SIZE = 512]'
622 | bool getParam(const char* name, bool* param, int length = 1, int timeout = 1000)
| ^~~~~~~~
.pio/libdeps/teensy31/Rosserial Arduino Library/src/ros/node_handle.h:622:41: note: no known conversion for argument 2 from 'long unsigned int*' to 'bool*'
622 | bool getParam(const char* name, bool* param, int length = 1, int timeout = 1000)
| ~~~~~~^~~~~
In file included from src/main.cpp:4:
lib/base_controller/base_controller.h: In instantiation of 'diffbot::BaseController<TMotorController, TMotorDriver>::BaseController(ros::NodeHandle&, TMotorController*, TMotorController*) [with TMotorController = diffbot::AdafruitMotorController; TMotorDriver = Adafruit_MotorShield; ros::NodeHandle = ros::NodeHandle_<ArduinoHardware>]':
src/main.cpp:15:130: required from here
lib/base_controller/base_controller.h:360:105: warning: 'diffbot::BaseController<diffbot::AdafruitMotorController, Adafruit_MotorShield>::sub_wheel_cmd_velocities_' will be initialized after [-Wreorder]
360 | ros::Subscriber<diffbot_msgs::WheelsCmdStamped, BaseController<TMotorController, TMotorDriver>> sub_wheel_cmd_velocities_;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
lib/base_controller/base_controller.h:191:11: warning: 'diffbot::BaseController<diffbot::AdafruitMotorController, Adafruit_MotorShield>::LastUpdateTime diffbot::BaseController<diffbot::AdafruitMotorController, Adafruit_MotorShield>::last_update_time_' [-Wreorder]
191 | } last_update_time_;
| ^~~~~~~~~~~~~~~~~
lib/base_controller/base_controller.h:384:1: warning: when initialized here [-Wreorder]
384 | diffbot::BaseController<TMotorController, TMotorDriver>
| ^~~~~~~
lib/base_controller/base_controller.h:191:11: warning: 'diffbot::BaseController<diffbot::AdafruitMotorController, Adafruit_MotorShield>::last_update_time_' will be initialized after [-Wreorder]
Compiling .pio/build/teensy31/FrameworkArduino/IPAddress.cpp.o
191 | } last_update_time_;
| ^~~~~~~~~~~~~~~~~
lib/base_controller/base_controller.h:146:11: warning: 'diffbot::BaseController<diffbot::AdafruitMotorController, Adafruit_MotorShield>::UpdateRate diffbot::BaseController<diffbot::AdafruitMotorController, Adafruit_MotorShield>::update_rate_' [-Wreorder]
146 | } update_rate_;
| ^~~~~~~~~~~~
lib/base_controller/base_controller.h:384:1: warning: when initialized here [-Wreorder]
384 | diffbot::BaseController<TMotorController, TMotorDriver>
| ^~~~~~~
Compiling .pio/build/teensy31/FrameworkArduino/IntervalTimer.cpp.o
Compiling .pio/build/teensy31/FrameworkArduino/Print.cpp.o
In file included from .pio/libdeps/teensy31/Rosserial Arduino Library/src/ros.h:38,
from src/main.cpp:1:
.pio/libdeps/teensy31/Rosserial Arduino Library/src/ros/node_handle.h: In instantiation of 'bool ros::NodeHandle_<Hardware, MAX_SUBSCRIBERS, MAX_PUBLISHERS, INPUT_SIZE, OUTPUT_SIZE>::getParam(const char*, float*, int, int) [with Hardware = ArduinoHardware; int MAX_SUBSCRIBERS = 25; int MAX_PUBLISHERS = 25; int INPUT_SIZE = 512; int OUTPUT_SIZE = 512]':
lib/base_controller/base_controller.h:441:17: required from 'void diffbot::BaseController<TMotorController, TMotorDriver>::init() [with TMotorController = diffbot::AdafruitMotorController; TMotorDriver = Adafruit_MotorShield]'
src/main.cpp:21:25: required from here
.pio/libdeps/teensy31/Rosserial Arduino Library/src/ros/node_handle.h:590:18: warning: comparison of integer expressions of different signedness: 'int' and 'uint32_t' {aka 'long unsigned int'} [-Wsign-compare]
590 | if (length == req_param_resp.floats_length)
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.pio/libdeps/teensy31/Rosserial Arduino Library/src/ros/node_handle.h: In instantiation of 'bool ros::NodeHandle_<Hardware, MAX_SUBSCRIBERS, MAX_PUBLISHERS, INPUT_SIZE, OUTPUT_SIZE>::getParam(const char*, bool*, int, int) [with Hardware = ArduinoHardware; int MAX_SUBSCRIBERS = 25; int MAX_PUBLISHERS = 25; int INPUT_SIZE = 512; int OUTPUT_SIZE = 512]':
lib/base_controller/base_controller.h:447:17: required from 'void diffbot::BaseController<TMotorController, TMotorDriver>::init() [with TMotorController = diffbot::AdafruitMotorController; TMotorDriver = Adafruit_MotorShield]'
src/main.cpp:21:25: required from here
.pio/libdeps/teensy31/Rosserial Arduino Library/src/ros/node_handle.h:626:18: warning: comparison of integer expressions of different signedness: 'int' and 'uint32_t' {aka 'long unsigned int'} [-Wsign-compare]
626 | if (length == req_param_resp.ints_length)
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Compiling .pio/build/teensy31/FrameworkArduino/Stream.cpp.o
Compiling .pio/build/teensy31/FrameworkArduino/Time.cpp.o
Compiling .pio/build/teensy31/FrameworkArduino/Tone.cpp.o
Compiling .pio/build/teensy31/FrameworkArduino/WMath.cpp.o
*** [.pio/build/teensy31/src/main.cpp.o] Error 1```
Metadata
Metadata
Assignees
Labels
No labels