Browse Source

Initial commit

master
Alex Mikhalev 5 years ago
commit
74f6c2f631
  1. 6
      .gitignore
  2. 43
      src/uaspire_controls/CMakeLists.txt
  3. 63
      src/uaspire_controls/main.cc
  4. 24
      src/uaspire_controls/package.xml
  5. 26
      src/uaspire_msgs/CMakeLists.txt
  6. 3
      src/uaspire_msgs/main.cc
  7. 1
      src/uaspire_msgs/msg/Command.msg
  8. 1
      src/uaspire_msgs/msg/Sensors.msg
  9. 24
      src/uaspire_msgs/package.xml
  10. 13
      uaspire.code-workspace

6
.gitignore vendored

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
.vscode
/build
/install
/log
/src/*/build
/src/*/cmake-build*

43
src/uaspire_controls/CMakeLists.txt

@ -0,0 +1,43 @@ @@ -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

@ -0,0 +1,63 @@ @@ -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

@ -0,0 +1,24 @@ @@ -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

@ -0,0 +1,26 @@ @@ -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

@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
int main() {
return 0;
}

1
src/uaspire_msgs/msg/Command.msg

@ -0,0 +1 @@ @@ -0,0 +1 @@
string data

1
src/uaspire_msgs/msg/Sensors.msg

@ -0,0 +1 @@ @@ -0,0 +1 @@
float32 position

24
src/uaspire_msgs/package.xml

@ -0,0 +1,24 @@ @@ -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

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
{
"folders": [
{
"path": "."
},
{
"path": "src/uaspire_controls"
}
],
"settings": {
"ros.distro": "dashing"
}
}
Loading…
Cancel
Save