diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..401e99d --- /dev/null +++ b/flake.lock @@ -0,0 +1,84 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nix-ros-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1761810010, + "narHash": "sha256-o0wJKW603SiOO373BTgeZaF6nDxegMA/cRrzSC2Cscg=", + "owner": "lopsided98", + "repo": "nix-ros-overlay", + "rev": "e277df39e3bc6b372a5138c0bcf10198857c55ab", + "type": "github" + }, + "original": { + "owner": "lopsided98", + "ref": "master", + "repo": "nix-ros-overlay", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1744849697, + "narHash": "sha256-S9hqvanPSeRu6R4cw0OhvH1rJ+4/s9xIban9C4ocM/0=", + "owner": "lopsided98", + "repo": "nixpkgs", + "rev": "6318f538166fef9f5118d8d78b9b43a04bb049e4", + "type": "github" + }, + "original": { + "owner": "lopsided98", + "ref": "nix-ros", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nix-ros-overlay": "nix-ros-overlay", + "nixpkgs": [ + "nix-ros-overlay", + "nixpkgs" + ] + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..6b921fe --- /dev/null +++ b/flake.nix @@ -0,0 +1,76 @@ +{ + inputs = { + nix-ros-overlay.url = "github:lopsided98/nix-ros-overlay/master"; + nixpkgs.follows = "nix-ros-overlay/nixpkgs"; + }; + outputs = + { + self, + nix-ros-overlay, + nixpkgs, + }: + nix-ros-overlay.inputs.flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ nix-ros-overlay.overlays.default ]; + }; + in + { + devShells.default = pkgs.mkShell { + name = "Project Robotoid"; + packages = [ + pkgs.colcon + pkgs.llvmPackages_20.clang-tools + + ( + with pkgs.rosPackages.jazzy; + buildEnv { + paths = [ + # Dependencies from package.xml files + desktop + ament-cmake-core + python-cmake-module + ament-lint-auto + ament-lint-common + behaviortree-cpp + controller-manager + diff-drive-controller + geometry-msgs + hardware-interface + joint-state-broadcaster + launch + launch-ros + pkgs.glm + pkgs.jsoncpp.dev + pkgs.i2c-tools + pluginlib + rclcpp + rclcpp-action + rclcpp-components + rclcpp-lifecycle + robot-state-publisher + ros2-control + ros2launch + rosidl-default-generators + rosidl-default-runtime + sensor-msgs + std-msgs + std-srvs + tf2 + tf2-geometry-msgs + tf2-ros + visualization-msgs + ]; + } + ) + ]; + }; + } + ); + nixConfig = { + extra-substituters = [ "https://attic.iid.ciirc.cvut.cz/ros" ]; + extra-trusted-public-keys = [ "ros.cachix.org-1:dSyZxI8geDCJrwgvCOHDoAfOm5sV1wCPjBkKL+38Rvo=" ]; + }; +} diff --git a/mg_bringup/CMakeLists.txt b/mg_bringup/CMakeLists.txt index d19920b..dfed831 100644 --- a/mg_bringup/CMakeLists.txt +++ b/mg_bringup/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.8) +cmake_minimum_required(VERSION 3.24) set(CMAKE_EXPORT_COMPILE_COMMANDS OFF) project(mg_bringup) diff --git a/mg_bringup/package.nix b/mg_bringup/package.nix new file mode 100644 index 0000000..ef26a8f --- /dev/null +++ b/mg_bringup/package.nix @@ -0,0 +1,18 @@ +# Automatically generated by: ros2nix --distro jazzy +{ lib, buildRosPackage, ament-cmake, launch, launch-ros, mg-control, mg-navigation, mg-odometry }: +buildRosPackage rec { + pname = "ros-jazzy-mg-bringup"; + version = "0.0.0"; + + src = ./.; + + buildType = "ament_cmake"; + buildInputs = [ ament-cmake ]; + propagatedBuildInputs = [ launch launch-ros mg-control mg-navigation mg-odometry ]; + nativeBuildInputs = [ ament-cmake ]; + + meta = { + description = "TODO: Package description"; + license = with lib.licenses; [ asl20 ]; + }; +} diff --git a/mg_bt/CMakeLists.txt b/mg_bt/CMakeLists.txt index 9a9932d..49fcabd 100644 --- a/mg_bt/CMakeLists.txt +++ b/mg_bt/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.24) project(mg_bt) set(CMAKE_CXX_STANDARD 17) diff --git a/mg_bt/i2cmodule/i2cnode.cpp b/mg_bt/i2cmodule/i2cnode.cpp index 3cf0d52..5f7b520 100644 --- a/mg_bt/i2cmodule/i2cnode.cpp +++ b/mg_bt/i2cmodule/i2cnode.cpp @@ -1,6 +1,5 @@ #include "rclcpp/rclcpp.hpp" #include "mg_msgs/srv/i2c.hpp" - extern "C" { #include @@ -8,6 +7,7 @@ extern "C" { #include #include } + class MgI2c : public rclcpp::Node { using I2cSrv = mg_msgs::srv::I2c; diff --git a/mg_bt/package.nix b/mg_bt/package.nix new file mode 100644 index 0000000..1ac76c4 --- /dev/null +++ b/mg_bt/package.nix @@ -0,0 +1,19 @@ +# Automatically generated by: ros2nix --distro jazzy +{ lib, buildRosPackage, ament-cmake, ament-lint-auto, ament-lint-common, behaviortree-cpp, behaviortree-ros2, btcpp-ros2-interfaces, i2c-tools, mg-msgs, rclcpp }: +buildRosPackage rec { + pname = "ros-jazzy-mg-bt"; + version = "0.0.0"; + + src = ./.; + + buildType = "ament_cmake"; + buildInputs = [ ament-cmake ]; + checkInputs = [ ament-lint-auto ament-lint-common ]; + propagatedBuildInputs = [ behaviortree-cpp behaviortree-ros2 btcpp-ros2-interfaces i2c-tools mg-msgs rclcpp ]; + nativeBuildInputs = [ ament-cmake ]; + + meta = { + description = "Behavior for MagRob"; + license = with lib.licenses; [ asl20 ]; + }; +} diff --git a/mg_control/CMakeLists.txt b/mg_control/CMakeLists.txt index 6c9267b..70176e6 100644 --- a/mg_control/CMakeLists.txt +++ b/mg_control/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.8) +cmake_minimum_required(VERSION 3.24) project(mg_control) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") @@ -13,7 +13,6 @@ find_package(hardware_interface REQUIRED) find_package(rclcpp_lifecycle REQUIRED) find_package(rclcpp_components REQUIRED) include(FindPkgConfig) -pkg_search_module(LIBSERIAL REQUIRED libserial) add_library( mg_control @@ -24,13 +23,11 @@ add_library( target_include_directories( mg_control PRIVATE - ${LIBSERIAL_INCLUDE_DIRS} include ) target_link_libraries( mg_control - ${LIBSERIAL_LIBRARIES} ) ament_target_dependencies( diff --git a/mg_control/assets/mg_base.urdf b/mg_control/assets/mg_base.urdf index 362d87d..c2b9faa 100644 --- a/mg_control/assets/mg_base.urdf +++ b/mg_control/assets/mg_base.urdf @@ -55,7 +55,7 @@ - + mg_control/MgStepperInterface diff --git a/mg_control/assets/mg_base_local.urdf b/mg_control/assets/mg_base_local.urdf index 95f38a5..baaec04 100644 --- a/mg_control/assets/mg_base_local.urdf +++ b/mg_control/assets/mg_base_local.urdf @@ -55,7 +55,7 @@ - + mock_components/GenericSystem true diff --git a/mg_control/include/mg_control/mg_control.hpp b/mg_control/include/mg_control/mg_control.hpp index 56ed496..0e5744b 100644 --- a/mg_control/include/mg_control/mg_control.hpp +++ b/mg_control/include/mg_control/mg_control.hpp @@ -3,7 +3,7 @@ #include #include -#include "libserial/SerialPort.h" +//#include "libserial/SerialPort.h" #include "hardware_interface/handle.hpp" #include "hardware_interface/system_interface.hpp" using CallbackReturn = rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn; @@ -26,7 +26,7 @@ namespace mg { private: std::string serial_port_name; - LibSerial::SerialPort odrive_serial_interface; +// LibSerial::SerialPort odrive_serial_interface; double left_wheel_vel_cmd = 0; double left_wheel_pos_state = 0; diff --git a/mg_control/package.nix b/mg_control/package.nix new file mode 100644 index 0000000..a5ed5f4 --- /dev/null +++ b/mg_control/package.nix @@ -0,0 +1,19 @@ +# Automatically generated by: ros2nix --distro jazzy +{ lib, buildRosPackage, ament-cmake, ament-lint-auto, ament-lint-common, controller-manager, diff-drive-controller, hardware-interface, joint-state-broadcaster, libserial-dev, pluginlib, rclcpp, rclcpp-components, rclcpp-lifecycle, robot-state-publisher, ros2-control, ros2launch }: +buildRosPackage rec { + pname = "ros-jazzy-mg-control"; + version = "0.0.1"; + + src = ./.; + + buildType = "ament_cmake"; + buildInputs = [ ament-cmake ]; + checkInputs = [ ament-lint-auto ament-lint-common ]; + propagatedBuildInputs = [ controller-manager diff-drive-controller hardware-interface joint-state-broadcaster libserial-dev pluginlib rclcpp rclcpp-components rclcpp-lifecycle robot-state-publisher ros2-control ros2launch ]; + nativeBuildInputs = [ ament-cmake ]; + + meta = { + description = "Ros2 control compatible drivers for magrob"; + license = with lib.licenses; [ asl20 ]; + }; +} diff --git a/mg_control/src/mg_control.cpp b/mg_control/src/mg_control.cpp index e9612ac..4847b0c 100644 --- a/mg_control/src/mg_control.cpp +++ b/mg_control/src/mg_control.cpp @@ -8,11 +8,13 @@ CallbackReturn mg::MgStepperInterface::on_init(const hardware_interface::Hardwar return CallbackReturn::ERROR; } + /* if (info_.hardware_parameters.find("device_path") != info.hardware_parameters.end()) { serial_port_name = info_.hardware_parameters["device_path"]; } else { serial_port_name = "/dev/ttyACM1"; } + */ left_wheel_pos_state = 0; right_wheel_pos_state = 0; @@ -22,6 +24,7 @@ CallbackReturn mg::MgStepperInterface::on_init(const hardware_interface::Hardwar } CallbackReturn mg::MgStepperInterface::on_configure(const rclcpp_lifecycle::State&) { + /* try { if (!odrive_serial_interface.IsOpen()) { odrive_serial_interface.Open(serial_port_name); @@ -31,13 +34,16 @@ CallbackReturn mg::MgStepperInterface::on_configure(const rclcpp_lifecycle::Stat "Failed to open serial port (Is the stepper driver plugged in)"); return CallbackReturn::ERROR; } + */ return CallbackReturn::SUCCESS; } CallbackReturn mg::MgStepperInterface::on_shutdown(const rclcpp_lifecycle::State&) { + /* if (odrive_serial_interface.IsOpen()) { odrive_serial_interface.Close(); } + */ return CallbackReturn::SUCCESS; } @@ -66,6 +72,7 @@ hardware_interface::return_type mg::MgStepperInterface::read(const rclcpp::Time& } hardware_interface::return_type mg::MgStepperInterface::write(const rclcpp::Time&, const rclcpp::Duration&) { + /* union { std::array bytes; double data; @@ -79,5 +86,6 @@ hardware_interface::return_type mg::MgStepperInterface::write(const rclcpp::Time for (const auto& bt : value.bytes) { odrive_serial_interface.WriteByte(bt); } } catch (const std::runtime_error& e) { return hardware_interface::return_type::ERROR; } + */ return hardware_interface::return_type::OK; } diff --git a/mg_lidar/CMakeLists.txt b/mg_lidar/CMakeLists.txt index 919b8ed..5306e52 100644 --- a/mg_lidar/CMakeLists.txt +++ b/mg_lidar/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.24) project(mg_lidar) set(CMAKE_CXX_STANDARD 17) diff --git a/mg_lidar/package.nix b/mg_lidar/package.nix new file mode 100644 index 0000000..ae20b85 --- /dev/null +++ b/mg_lidar/package.nix @@ -0,0 +1,19 @@ +# Automatically generated by: ros2nix --distro jazzy +{ lib, buildRosPackage, ament-cmake, ament-lint-auto, ament-lint-common, mg-msgs, rclcpp, sensor-msgs, std-msgs, tf2, tf2-geometry-msgs, tf2-ros, visualization-msgs }: +buildRosPackage rec { + pname = "ros-jazzy-mg-lidar"; + version = "0.0.0"; + + src = ./.; + + buildType = "ament_cmake"; + buildInputs = [ ament-cmake ]; + checkInputs = [ ament-lint-auto ament-lint-common ]; + propagatedBuildInputs = [ mg-msgs rclcpp sensor-msgs std-msgs tf2 tf2-geometry-msgs tf2-ros visualization-msgs ]; + nativeBuildInputs = [ ament-cmake ]; + + meta = { + description = "Lidar based opponent tracking"; + license = with lib.licenses; [ asl20 ]; + }; +} diff --git a/mg_lidar/src/scanner.cpp b/mg_lidar/src/scanner.cpp index 5c8d3a5..d710b43 100644 --- a/mg_lidar/src/scanner.cpp +++ b/mg_lidar/src/scanner.cpp @@ -8,6 +8,7 @@ #include "tf2_ros/transform_listener.h" #include "tf2/convert.hpp" #include "tf2_geometry_msgs/tf2_geometry_msgs.hpp" +#define GLM_ENABLE_EXPERIMENTAL #include class MgScanner : public rclcpp::Node { diff --git a/mg_msgs/CMakeLists.txt b/mg_msgs/CMakeLists.txt index baf9be1..b7e420f 100644 --- a/mg_msgs/CMakeLists.txt +++ b/mg_msgs/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.8) +cmake_minimum_required(VERSION 3.24) project(mg_msgs) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") diff --git a/mg_msgs/package.nix b/mg_msgs/package.nix new file mode 100644 index 0000000..b711cbd --- /dev/null +++ b/mg_msgs/package.nix @@ -0,0 +1,18 @@ +# Automatically generated by: ros2nix --distro jazzy +{ lib, buildRosPackage, ament-cmake, rosidl-default-generators, rosidl-default-runtime }: +buildRosPackage rec { + pname = "ros-jazzy-mg-msgs"; + version = "0.0.0"; + + src = ./.; + + buildType = "ament_cmake"; + buildInputs = [ ament-cmake rosidl-default-generators ]; + propagatedBuildInputs = [ rosidl-default-runtime ]; + nativeBuildInputs = [ ament-cmake rosidl-default-generators ]; + + meta = { + description = "This contains various msg/action used within the project"; + license = with lib.licenses; [ mit ]; + }; +} diff --git a/mg_navigation/CMakeLists.txt b/mg_navigation/CMakeLists.txt index 45555cd..46c0ee0 100644 --- a/mg_navigation/CMakeLists.txt +++ b/mg_navigation/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.8) +cmake_minimum_required(VERSION 3.24) project(mg_navigation) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") diff --git a/mg_navigation/package.nix b/mg_navigation/package.nix new file mode 100644 index 0000000..789ee90 --- /dev/null +++ b/mg_navigation/package.nix @@ -0,0 +1,18 @@ +# Automatically generated by: ros2nix --distro jazzy +{ lib, buildRosPackage, ament-cmake, geometry-msgs, glm, mg-msgs, mg-obstacles, rclcpp, rclcpp-action, rclcpp-components, tf2, tf2-geometry-msgs, tf2-ros }: +buildRosPackage rec { + pname = "ros-jazzy-mg-navigation"; + version = "0.0.0"; + + src = ./.; + + buildType = "ament_cmake"; + buildInputs = [ ament-cmake glm ]; + propagatedBuildInputs = [ geometry-msgs mg-msgs mg-obstacles rclcpp rclcpp-action rclcpp-components tf2 tf2-geometry-msgs tf2-ros ]; + nativeBuildInputs = [ ament-cmake ]; + + meta = { + description = "TODO: Package description"; + license = with lib.licenses; [ asl20 ]; + }; +} diff --git a/mg_navigation/src/mg_navigation.cpp b/mg_navigation/src/mg_navigation.cpp index beaaa3f..0d72bb9 100644 --- a/mg_navigation/src/mg_navigation.cpp +++ b/mg_navigation/src/mg_navigation.cpp @@ -2,6 +2,7 @@ #include #include +#define GLM_ENABLE_EXPERIMENTAL #include "rclcpp/rclcpp.hpp" #include "mg_navigation.hpp" #include "handlers/dwa.hpp" diff --git a/mg_navigation/src/path_buffer.cpp b/mg_navigation/src/path_buffer.cpp index 41ab424..f2352cc 100644 --- a/mg_navigation/src/path_buffer.cpp +++ b/mg_navigation/src/path_buffer.cpp @@ -1,5 +1,6 @@ #include "path_buffer.hpp" +#define GLM_ENABLE_EXPERIMENTAL #include #include diff --git a/mg_obstacles/include/mg_obstacles/permanent_obstacle.hpp b/mg_obstacles/include/mg_obstacles/permanent_obstacle.hpp index 9b9aef3..941d338 100644 --- a/mg_obstacles/include/mg_obstacles/permanent_obstacle.hpp +++ b/mg_obstacles/include/mg_obstacles/permanent_obstacle.hpp @@ -1,7 +1,7 @@ #pragma once #include -#include +#include namespace mg { class PermanentObstacle { diff --git a/mg_obstacles/include/mg_obstacles/static_obstacle.hpp b/mg_obstacles/include/mg_obstacles/static_obstacle.hpp index fd27052..9815ac4 100644 --- a/mg_obstacles/include/mg_obstacles/static_obstacle.hpp +++ b/mg_obstacles/include/mg_obstacles/static_obstacle.hpp @@ -1,7 +1,7 @@ #pragma once #include -#include +#include namespace mg { class StaticObstacle { diff --git a/mg_obstacles/package.nix b/mg_obstacles/package.nix new file mode 100644 index 0000000..1656c5b --- /dev/null +++ b/mg_obstacles/package.nix @@ -0,0 +1,18 @@ +# Automatically generated by: ros2nix --distro jazzy +{ lib, buildRosPackage, ament-cmake, geometry-msgs, glm, jsoncpp, mg-msgs, rclcpp, rclcpp-action, rclcpp-components, tf2, tf2-geometry-msgs, tf2-ros }: +buildRosPackage rec { + pname = "ros-jazzy-mg-obstacles"; + version = "0.0.0"; + + src = ./.; + + buildType = "ament_cmake"; + buildInputs = [ ament-cmake glm ]; + propagatedBuildInputs = [ geometry-msgs jsoncpp mg-msgs rclcpp rclcpp-action rclcpp-components tf2 tf2-geometry-msgs tf2-ros ]; + nativeBuildInputs = [ ament-cmake ]; + + meta = { + description = "Library for collision detection"; + license = with lib.licenses; [ asl20 ]; + }; +} diff --git a/mg_obstacles/src/mg_obstacles.cpp b/mg_obstacles/src/mg_obstacles.cpp index 9bce3f1..7936ccc 100644 --- a/mg_obstacles/src/mg_obstacles.cpp +++ b/mg_obstacles/src/mg_obstacles.cpp @@ -5,6 +5,7 @@ #include "geometry_msgs/msg/point_stamped.hpp" #include "rclcpp/rclcpp.hpp" +#define GLM_ENABLE_EXPERIMENTAL #include "glm/glm.hpp" #include "glm/gtx/matrix_transform_2d.hpp" diff --git a/mg_obstacles/src/sdf.cpp b/mg_obstacles/src/sdf.cpp index 209f13e..a93fcfb 100644 --- a/mg_obstacles/src/sdf.cpp +++ b/mg_obstacles/src/sdf.cpp @@ -1,4 +1,5 @@ #include "mg_obstacles/sdf.hpp" +#define GLM_ENABLE_EXPERIMENTAL #include namespace mg { diff --git a/mg_odometry/CMakeLists.txt b/mg_odometry/CMakeLists.txt index fdf9446..d8e757f 100644 --- a/mg_odometry/CMakeLists.txt +++ b/mg_odometry/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.8) +cmake_minimum_required(VERSION 3.24) project(mg_odometry) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") @@ -14,7 +14,6 @@ find_package(tf2_geometry_msgs REQUIRED) find_package(std_srvs REQUIRED) find_package(mg_msgs REQUIRED) include(FindPkgConfig) -pkg_search_module(LIBSERIAL REQUIRED libserial) # uncomment the following section in order to fill in # further dependencies manually. @@ -36,11 +35,10 @@ ament_target_dependencies( target_include_directories(mg_odom_publisher PUBLIC $ $ - ${LIBSERIAL_INCLUDE_DIRS}) +) target_link_libraries( mg_odom_publisher - ${LIBSERIAL_LIBRARIES} ) target_compile_features(mg_odom_publisher PUBLIC c_std_99 cxx_std_17) # Require C99 and C++17 diff --git a/mg_odometry/package.nix b/mg_odometry/package.nix new file mode 100644 index 0000000..024bb61 --- /dev/null +++ b/mg_odometry/package.nix @@ -0,0 +1,19 @@ +# Automatically generated by: ros2nix --distro jazzy +{ lib, buildRosPackage, ament-cmake, ament-lint-auto, ament-lint-common, libserial-dev, mg-msgs, rclcpp, std-srvs, tf2, tf2-geometry-msgs, tf2-ros }: +buildRosPackage rec { + pname = "ros-jazzy-mg-odometry"; + version = "0.0.0"; + + src = ./.; + + buildType = "ament_cmake"; + buildInputs = [ ament-cmake ]; + checkInputs = [ ament-lint-auto ament-lint-common ]; + propagatedBuildInputs = [ mg-msgs rclcpp std-srvs tf2 tf2-geometry-msgs tf2-ros ]; + nativeBuildInputs = [ ament-cmake ]; + + meta = { + description = "TODO: Package description"; + license = with lib.licenses; [ "TODO-License-declaration" ]; + }; +} diff --git a/mg_odometry/src/mg_odom_publisher.cpp b/mg_odometry/src/mg_odom_publisher.cpp index 32ecbfb..8d532fc 100644 --- a/mg_odometry/src/mg_odom_publisher.cpp +++ b/mg_odometry/src/mg_odom_publisher.cpp @@ -5,7 +5,7 @@ #include #include #include -#include +//#include #include #include "mg_msgs/srv/send_double.hpp" @@ -59,11 +59,11 @@ class MgOdomPublisher : public rclcpp::Node { rclcpp::Service::SharedPtr zero_service_; rclcpp::Service::SharedPtr calib_service_; rclcpp::TimerBase::SharedPtr timer_; - LibSerial::SerialStream enc_serial_port_; + //LibSerial::SerialStream enc_serial_port_; void set_width(const std::shared_ptr request) { RCLCPP_INFO(get_logger(), "Setting width to: %lf", request->data); - + /* if (enc_serial_port_.IsOpen()) { union { std::array bytes; @@ -74,11 +74,12 @@ class MgOdomPublisher : public rclcpp::Node { enc_serial_port_ << "w;"; for (const auto& byte : value.bytes) { enc_serial_port_ << byte; } } + */ } void set_ratio(const std::shared_ptr request) { RCLCPP_INFO(get_logger(), "Setting wheel ratio to: %lf", request->data); - + /* if (enc_serial_port_.IsOpen()) { union { std::array bytes; @@ -89,11 +90,13 @@ class MgOdomPublisher : public rclcpp::Node { enc_serial_port_ << "r;"; for (const auto& byte : value.bytes) { enc_serial_port_ << byte; } } + */ } void calib(const std::shared_ptr /*request*/) { RCLCPP_INFO(get_logger(), "Finishing wheel diameter calib"); + /* if (enc_serial_port_.IsOpen()) { enc_serial_port_ << "c;"; double left_gain = 0; @@ -101,14 +104,16 @@ class MgOdomPublisher : public rclcpp::Node { enc_serial_port_ >> left_gain >> right_gain; RCLCPP_INFO(this->get_logger(), "The new gains are %lf %lf", left_gain, right_gain); } + */ } void zero(const std::shared_ptr /*request*/) { RCLCPP_INFO(get_logger(), "Zeroing odometry"); - + /* if (enc_serial_port_.IsOpen()) { enc_serial_port_ << "z;"; } + */ } void timer_callback() { @@ -118,6 +123,7 @@ class MgOdomPublisher : public rclcpp::Node { RCLCPP_DEBUG(this->get_logger(), "Callback called"); + /* try { if (!enc_serial_port_.IsOpen()) { enc_serial_port_.Open(this->get_parameter("serial_path").as_string()); @@ -134,6 +140,7 @@ class MgOdomPublisher : public rclcpp::Node { make_transform(_x, _y, _theta); } catch (const std::exception& e) { RCLCPP_ERROR(this->get_logger(), "%s\n", e.what()); } + */ } void make_transform(double x, double y, double theta) { diff --git a/mg_planner/CMakeLists.txt b/mg_planner/CMakeLists.txt index 43badb6..16dd713 100644 --- a/mg_planner/CMakeLists.txt +++ b/mg_planner/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.8) +cmake_minimum_required(VERSION 3.24) project(mg_planner) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") @@ -35,6 +35,7 @@ add_executable(mg_planner src/a_star.cpp ) + ament_target_dependencies(mg_planner ${PACKAGE_DEPS}) target_include_directories( @@ -49,6 +50,8 @@ target_link_libraries( ${LIBGLM_LIBRARIES} ) +target_compile_definitions(mg_planner PRIVATE GLM_ENABLE_EXPERIMENTAL) + install( TARGETS mg_planner DESTINATION lib/${PROJECT_NAME} diff --git a/mg_planner/include/mg_planner/a_star/a_star.hpp b/mg_planner/include/mg_planner/a_star/a_star.hpp index 547f913..7bcfdab 100644 --- a/mg_planner/include/mg_planner/a_star/a_star.hpp +++ b/mg_planner/include/mg_planner/a_star/a_star.hpp @@ -3,6 +3,7 @@ #include "mg_planner/config.hpp" #include "rclcpp/node.hpp" +#define GLM_ENABLE_EXPERIMENTAL #include #include #include diff --git a/mg_planner/package.nix b/mg_planner/package.nix new file mode 100644 index 0000000..3305406 --- /dev/null +++ b/mg_planner/package.nix @@ -0,0 +1,18 @@ +# Automatically generated by: ros2nix --distro jazzy +{ lib, buildRosPackage, ament-cmake, glm, mg-msgs, mg-obstacles, rclcpp, rclcpp-action, tf2, tf2-geometry-msgs, tf2-ros }: +buildRosPackage rec { + pname = "ros-jazzy-mg-planner"; + version = "0.0.0"; + + src = ./.; + + buildType = "ament_cmake"; + buildInputs = [ ament-cmake glm ]; + propagatedBuildInputs = [ mg-msgs mg-obstacles rclcpp rclcpp-action tf2 tf2-geometry-msgs tf2-ros ]; + nativeBuildInputs = [ ament-cmake ]; + + meta = { + description = "TODO: Package description"; + license = with lib.licenses; [ asl20 ]; + }; +}