Initial commit
This commit is contained in:
commit
74f6c2f631
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
.vscode
|
||||
/build
|
||||
/install
|
||||
/log
|
||||
/src/*/build
|
||||
/src/*/cmake-build*
|
43
src/uaspire_controls/CMakeLists.txt
Normal file
43
src/uaspire_controls/CMakeLists.txt
Normal file
@ -0,0 +1,43 @@
|
||||
# CMakeLists.txt file to configure build of uaspire_controls
|
||||
|
||||
# Set minimum version of CMake required to build
|
||||
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
|
||||
|
||||
# Find ament meta build system
|
||||
find_package(ament_cmake REQUIRED)
|
||||
|
||||
# Create uaspire_controls project
|
||||
project(uaspire_controls
|
||||
DESCRIPTION "UASPIRE Controls"
|
||||
LANGUAGES CXX)
|
||||
|
||||
# Setup C++ version and compiler flags
|
||||
if(NOT CMAKE_CXX_STANDARD)
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
endif()
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "(GNU|AppleClang|Clang)")
|
||||
add_compile_options(-Wall -Wextra -Wpedantic)
|
||||
endif()
|
||||
|
||||
# Find required packages
|
||||
find_package(rclcpp REQUIRED)
|
||||
find_package(std_msgs REQUIRED)
|
||||
find_package(uaspire_msgs REQUIRED)
|
||||
|
||||
# Create targets and add target dependencies
|
||||
add_executable(uaspire_controls
|
||||
main.cc
|
||||
)
|
||||
ament_target_dependencies(uaspire_controls
|
||||
rclcpp
|
||||
std_msgs
|
||||
uaspire_msgs
|
||||
)
|
||||
|
||||
# Install files to correct locations
|
||||
install(TARGETS uaspire_controls
|
||||
DESTINATION bin)
|
||||
|
||||
ament_package()
|
63
src/uaspire_controls/main.cc
Normal file
63
src/uaspire_controls/main.cc
Normal file
@ -0,0 +1,63 @@
|
||||
#include <functional>
|
||||
|
||||
#include <rclcpp/rclcpp.hpp>
|
||||
#include <std_msgs/msg/string.hpp>
|
||||
#include <uaspire_msgs/msg/command.hpp>
|
||||
#include <uaspire_msgs/msg/sensors.hpp>
|
||||
|
||||
namespace arg = std::placeholders;
|
||||
namespace ros = ::rclcpp;
|
||||
using UaspireCommand = ::uaspire_msgs::msg::Command;
|
||||
using UaspireSensors = ::uaspire_msgs::msg::Sensors;
|
||||
|
||||
class ControlsNode : public ros::Node
|
||||
{
|
||||
private:
|
||||
ros::Subscription<UaspireCommand>::SharedPtr _command_subscription;
|
||||
ros::Publisher<UaspireSensors>::SharedPtr _sensors_publisher;
|
||||
ros::WallRate _rate;
|
||||
|
||||
public:
|
||||
RCLCPP_SHARED_PTR_DEFINITIONS(ControlsNode)
|
||||
|
||||
ControlsNode()
|
||||
: Node("uaspire_controls"),
|
||||
_rate(1.0)
|
||||
{
|
||||
_command_subscription = create_subscription<UaspireCommand>(
|
||||
"uaspire/commands",
|
||||
ros::QoS(10),
|
||||
std::bind(&ControlsNode::on_message, this, arg::_1)
|
||||
);
|
||||
_sensors_publisher = create_publisher<UaspireSensors>(
|
||||
"uaspire/sensors",
|
||||
ros::QoS(10)
|
||||
);
|
||||
}
|
||||
|
||||
void on_message(const UaspireCommand::SharedPtr cmd)
|
||||
{
|
||||
RCLCPP_INFO(get_logger(), "Command received: %s", cmd->data.c_str());
|
||||
}
|
||||
|
||||
void loop() {
|
||||
while (ros::ok()) {
|
||||
UaspireSensors sensors;
|
||||
sensors.position = ros::Clock(RCL_STEADY_TIME).now().seconds();
|
||||
_sensors_publisher->publish(sensors);
|
||||
RCLCPP_INFO(get_logger(), "loop");
|
||||
ros::spin_some(shared_from_this());
|
||||
_rate.sleep();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
ros::init(argc, argv);
|
||||
{
|
||||
auto node = ControlsNode::make_shared();
|
||||
node->loop();
|
||||
}
|
||||
ros::shutdown();
|
||||
return 0;
|
||||
}
|
24
src/uaspire_controls/package.xml
Normal file
24
src/uaspire_controls/package.xml
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0"?>
|
||||
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||
<package format="3">
|
||||
<name>uaspire_controls</name>
|
||||
<version>0.0.1</version>
|
||||
<description>UASPIRE Controls</description>
|
||||
<maintainer email="alex@amikhalev.com">Alex Mikhalev</maintainer>
|
||||
<license>Apache License 2.0</license>
|
||||
<author>Alex Mikhalev</author>
|
||||
|
||||
<buildtool_depend>ament_cmake</buildtool_depend>
|
||||
|
||||
<build_depend>rclcpp</build_depend>
|
||||
<build_depend>std_msgs</build_depend>
|
||||
<build_depend>uaspire_msgs</build_depend>
|
||||
|
||||
<exec_depend>rclcpp</exec_depend>
|
||||
<exec_depend>std_msgs</exec_depend>
|
||||
<exec_depend>uaspire_msgs</exec_depend>
|
||||
|
||||
<export>
|
||||
<build_type>ament_cmake</build_type>
|
||||
</export>
|
||||
</package>
|
26
src/uaspire_msgs/CMakeLists.txt
Normal file
26
src/uaspire_msgs/CMakeLists.txt
Normal file
@ -0,0 +1,26 @@
|
||||
# CMakeLists.txt file to configure build of uaspire_msgs
|
||||
|
||||
# Set minimum version of CMake required to build
|
||||
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
|
||||
|
||||
# Find ament meta build system
|
||||
find_package(ament_cmake REQUIRED)
|
||||
|
||||
# Create uaspire_controls project
|
||||
project(uaspire_msgs
|
||||
DESCRIPTION "UASPIRE Messages"
|
||||
LANGUAGES C CXX)
|
||||
|
||||
# Find required packages
|
||||
find_package(rosidl_default_generators REQUIRED)
|
||||
|
||||
# Create targets and add target dependencies
|
||||
rosidl_generate_interfaces(${PROJECT_NAME}
|
||||
"msg/Command.msg"
|
||||
"msg/Sensors.msg"
|
||||
)
|
||||
|
||||
# Install files to correct locations
|
||||
|
||||
ament_export_dependencies(rosidl_default_runtime)
|
||||
ament_package()
|
3
src/uaspire_msgs/main.cc
Normal file
3
src/uaspire_msgs/main.cc
Normal file
@ -0,0 +1,3 @@
|
||||
int main() {
|
||||
return 0;
|
||||
}
|
1
src/uaspire_msgs/msg/Command.msg
Normal file
1
src/uaspire_msgs/msg/Command.msg
Normal file
@ -0,0 +1 @@
|
||||
string data
|
1
src/uaspire_msgs/msg/Sensors.msg
Normal file
1
src/uaspire_msgs/msg/Sensors.msg
Normal file
@ -0,0 +1 @@
|
||||
float32 position
|
24
src/uaspire_msgs/package.xml
Normal file
24
src/uaspire_msgs/package.xml
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0"?>
|
||||
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||
<package format="3">
|
||||
<name>uaspire_msgs</name>
|
||||
<version>0.0.1</version>
|
||||
<description>UASPIRE Controls ROS Messages</description>
|
||||
<maintainer email="alex@amikhalev.com">Alex Mikhalev</maintainer>
|
||||
<license>Apache License 2.0</license>
|
||||
<author>Alex Mikhalev</author>
|
||||
|
||||
<buildtool_depend>ament_cmake</buildtool_depend>
|
||||
<buildtool_depend>rosidl_default_generators</buildtool_depend>
|
||||
|
||||
<build_depend>rclcpp</build_depend>
|
||||
<build_depend>std_msgs</build_depend>
|
||||
|
||||
<exec_depend>rosidl_default_runtime</exec_depend>
|
||||
|
||||
<member_of_group>rosidl_interface_packages</member_of_group>
|
||||
|
||||
<export>
|
||||
<build_type>ament_cmake</build_type>
|
||||
</export>
|
||||
</package>
|
13
uaspire.code-workspace
Normal file
13
uaspire.code-workspace
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"path": "."
|
||||
},
|
||||
{
|
||||
"path": "src/uaspire_controls"
|
||||
}
|
||||
],
|
||||
"settings": {
|
||||
"ros.distro": "dashing"
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user