From c271b39ce4ef78d2f4dcb7821eda5cd76a552ef6 Mon Sep 17 00:00:00 2001 From: Michael Boulet Date: Wed, 25 Nov 2015 17:36:30 -0500 Subject: [PATCH] VESC motor controller driver boilerplate, no functionality yet --- .gitignore | 4 ++ vesc/CMakeLists.txt | 4 ++ vesc/package.xml | 26 ++++++++ vesc_driver/CMakeLists.txt | 60 +++++++++++++++++++ vesc_driver/launch/vesc_driver_node.launch | 14 +++++ vesc_driver/launch/vesc_driver_nodelet.launch | 29 +++++++++ vesc_driver/package.xml | 33 ++++++++++ vesc_driver/src/vesc_driver.cpp | 14 +++++ vesc_driver/src/vesc_driver.h | 22 +++++++ vesc_driver/src/vesc_driver_node.cpp | 16 +++++ vesc_driver/src/vesc_driver_nodelet.cpp | 34 +++++++++++ vesc_driver/vesc_driver_nodelet.xml | 5 ++ vesc_msgs/CMakeLists.txt | 18 ++++++ vesc_msgs/package.xml | 23 +++++++ 14 files changed, 302 insertions(+) create mode 100644 .gitignore create mode 100644 vesc/CMakeLists.txt create mode 100644 vesc/package.xml create mode 100644 vesc_driver/CMakeLists.txt create mode 100644 vesc_driver/launch/vesc_driver_node.launch create mode 100644 vesc_driver/launch/vesc_driver_nodelet.launch create mode 100644 vesc_driver/package.xml create mode 100644 vesc_driver/src/vesc_driver.cpp create mode 100644 vesc_driver/src/vesc_driver.h create mode 100644 vesc_driver/src/vesc_driver_node.cpp create mode 100644 vesc_driver/src/vesc_driver_nodelet.cpp create mode 100644 vesc_driver/vesc_driver_nodelet.xml create mode 100644 vesc_msgs/CMakeLists.txt create mode 100644 vesc_msgs/package.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b4d4d17 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# -*- mode: gitignore; -*- +*~ +\#*\# + diff --git a/vesc/CMakeLists.txt b/vesc/CMakeLists.txt new file mode 100644 index 0000000..13b2b81 --- /dev/null +++ b/vesc/CMakeLists.txt @@ -0,0 +1,4 @@ +cmake_minimum_required(VERSION 2.8.3) +project(vesc) +find_package(catkin REQUIRED) +catkin_metapackage() diff --git a/vesc/package.xml b/vesc/package.xml new file mode 100644 index 0000000..cfbd950 --- /dev/null +++ b/vesc/package.xml @@ -0,0 +1,26 @@ + + + vesc + 0.0.1 + + Metapackage for ROS interface to the Vedder VESC open source motor controller. + + + Michael T. Boulet + Michael T. Boulet + BSD + + http://www.ros.org/wiki/vesc + https://github.mit.edu/racecar/vesc + https://github.mit.edu/racecar/vesc/issues + + catkin + + vesc_driver + vesc_msgs + + + + + + diff --git a/vesc_driver/CMakeLists.txt b/vesc_driver/CMakeLists.txt new file mode 100644 index 0000000..3d4e833 --- /dev/null +++ b/vesc_driver/CMakeLists.txt @@ -0,0 +1,60 @@ +cmake_minimum_required(VERSION 2.8.3) +project(vesc_driver) + +find_package(catkin REQUIRED COMPONENTS + nodelet + pluginlib + roscpp + vesc_msgs +) + +catkin_package( + INCLUDE_DIRS include + CATKIN_DEPENDS nodelet pluginlib roscpp vesc_msgs +) + +########### +## Build ## +########### + +include_directories( + ${Boost_INCLUDE_DIR} + ${catkin_INCLUDE_DIRS} +) + +# node executable +add_executable(vesc_driver_node src/vesc_driver_node.cpp src/vesc_driver.cpp) +target_link_libraries(vesc_driver_node + ${catkin_LIBRARIES} +) + +# nodelet library +add_library(vesc_driver_nodelet src/vesc_driver_nodelet.cpp src/vesc_driver.cpp) +target_link_libraries(vesc_driver_nodelet + ${catkin_LIBRARIES} +) + +############# +## Install ## +############# + +install(TARGETS vesc_driver_node + RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +) + +install(TARGETS vesc_driver_nodelet + LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +) + +install(DIRECTORY include/${PROJECT_NAME}/ + DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}) +install(FILES vesc_driver_nodelet.xml + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) +install(DIRECTORY launch/ + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch) + +############# +## Testing ## +############# + +# TODO \ No newline at end of file diff --git a/vesc_driver/launch/vesc_driver_node.launch b/vesc_driver/launch/vesc_driver_node.launch new file mode 100644 index 0000000..2442036 --- /dev/null +++ b/vesc_driver/launch/vesc_driver_node.launch @@ -0,0 +1,14 @@ + + + + + + + + + + + + + diff --git a/vesc_driver/launch/vesc_driver_nodelet.launch b/vesc_driver/launch/vesc_driver_nodelet.launch new file mode 100644 index 0000000..90f790c --- /dev/null +++ b/vesc_driver/launch/vesc_driver_nodelet.launch @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vesc_driver/package.xml b/vesc_driver/package.xml new file mode 100644 index 0000000..9525d1f --- /dev/null +++ b/vesc_driver/package.xml @@ -0,0 +1,33 @@ + + + vesc_driver + 0.0.1 + + ROS device driver for the Vedder VESC open source motor driver. + + + Michael T. Boulet + Michael T. Boulet + BSD + + http://www.ros.org/wiki/vesc_driver + https://github.mit.edu/racecar/vesc + https://github.mit.edu/racecar/vesc/issues + + catkin + + nodelet + pluginlib + roscpp + vesc_msgs + + nodelet + pluginlib + roscpp + vesc_msgs + + + + + + diff --git a/vesc_driver/src/vesc_driver.cpp b/vesc_driver/src/vesc_driver.cpp new file mode 100644 index 0000000..06456a7 --- /dev/null +++ b/vesc_driver/src/vesc_driver.cpp @@ -0,0 +1,14 @@ +#include + +#include "vesc_driver.h" + +namespace vesc_driver +{ + +VescDriver::VescDriver(ros::NodeHandle nh, + ros::NodeHandle private_nh) +{ + ROS_DEBUG("Constructing VescDriver"); +} + +} // namespace vesc_driver diff --git a/vesc_driver/src/vesc_driver.h b/vesc_driver/src/vesc_driver.h new file mode 100644 index 0000000..686224e --- /dev/null +++ b/vesc_driver/src/vesc_driver.h @@ -0,0 +1,22 @@ +#ifndef VESC_DRIVER_VESC_DRIVER_H +#define VESC_DRIVER_VESC_DRIVER_H + +#include + +namespace vesc_driver +{ + +class VescDriver +{ +public: + + VescDriver(ros::NodeHandle nh, + ros::NodeHandle private_nh); + +private: + +}; + +} // namespace vesc_driver + +#endif // VESC_DRIVER_VESC_DRIVER_H diff --git a/vesc_driver/src/vesc_driver_node.cpp b/vesc_driver/src/vesc_driver_node.cpp new file mode 100644 index 0000000..f06d865 --- /dev/null +++ b/vesc_driver/src/vesc_driver_node.cpp @@ -0,0 +1,16 @@ +#include + +#include "vesc_driver.h" + +int main(int argc, char** argv) +{ + ros::init(argc, argv, "vesc_driver_node"); + ros::NodeHandle nh; + ros::NodeHandle private_nh("~"); + + vesc_driver::VescDriver vesc_driver(nh, private_nh); + + ros::spin(); + + return 0; +} diff --git a/vesc_driver/src/vesc_driver_nodelet.cpp b/vesc_driver/src/vesc_driver_nodelet.cpp new file mode 100644 index 0000000..8699a33 --- /dev/null +++ b/vesc_driver/src/vesc_driver_nodelet.cpp @@ -0,0 +1,34 @@ +#include +#include +#include + +#include + +#include "vesc_driver.h" + +namespace vesc_driver +{ + +class VescDriverNodelet: public nodelet::Nodelet +{ +public: + + VescDriverNodelet() {} + +private: + + virtual void onInit(void); + + boost::shared_ptr vesc_driver_; + +}; // class VescDriverNodelet + +void VescDriverNodelet::onInit() +{ + NODELET_DEBUG("Initializing VESC driver nodelet"); + vesc_driver_.reset(new VescDriver(getNodeHandle(), getPrivateNodeHandle())); +} + +} // namespace vesc_driver + +PLUGINLIB_EXPORT_CLASS(vesc_driver::VescDriverNodelet, nodelet::Nodelet); diff --git a/vesc_driver/vesc_driver_nodelet.xml b/vesc_driver/vesc_driver_nodelet.xml new file mode 100644 index 0000000..5660e73 --- /dev/null +++ b/vesc_driver/vesc_driver_nodelet.xml @@ -0,0 +1,5 @@ + + + Vedder VESC motor controller interface nodelet. + + diff --git a/vesc_msgs/CMakeLists.txt b/vesc_msgs/CMakeLists.txt new file mode 100644 index 0000000..9664afb --- /dev/null +++ b/vesc_msgs/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 2.8.3) +project(vesc_msgs) + +find_package(catkin REQUIRED COMPONENTS + message_generation +) + +add_message_files( + DIRECTORY msg + FILES +) +generate_messages( + DEPENDENCIES +) + +catkin_package( + CATKIN_DEPENDS message_runtime +) diff --git a/vesc_msgs/package.xml b/vesc_msgs/package.xml new file mode 100644 index 0000000..b704a94 --- /dev/null +++ b/vesc_msgs/package.xml @@ -0,0 +1,23 @@ + + + vesc_msgs + 0.0.1 + + ROS message definitions for the Vedder VESC open source motor controller. + + + Michael T. Boulet + Michael T. Boulet + BSD + + http://ros.org/wiki/vesc_msgs + https://github.mit.edu/racecar/vesc + https://github.mit.edu/racecar/vesc/issues + + catkin + + message_generation + + message_runtime + +