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
+
+