Skip to content
stonier edited this page Apr 17, 2013 · 11 revisions

Workspace

We will create an overlay.

> cd C:\work
> winros_init_workspace ecl
> cd C:\work\ecl\src
> wstool merge https://raw.github.com/stonier/ecl_core/groovy-devel/ecl.rosinstall

Whitelisting

You don't want catkin to compile everything, because it's all broke ;) So we use catkin whitelists.

  • Add the following to config.cmake (up to type traits is working).
set(ECL_TOOLS "ecl_license;ecl_build;ecl_tools")
set(ECL_LITE "ecl_config;ecl_converters_lite;ecl_errors;ecl_io;ecl_sigslots_lite;ecl_time_lite")
set(ECL_CORE "ecl_command_line;ecl_mpl;ecl_type_traits;ecl_exceptions")
#set(ECL_NAVIGATION "")
# ecl_core todo in this sequence: 
# ecl_math;ecl_concepts;ecl_utilities;;ecl_converters;
# ecl_formatters;ecl_containers;ecl_time;ecl_threads;ecl_devices;
# ecl_streams;ecl_ipc;ecl_eigen;ecl_linear_algebra;ecl_geometry;
# ecl_statistics;ecl_sigslots;ecl_core_apps;ecl_core
# ecl_navigation todo in this sequence
# ecl_maps;ecl_mobile_robot;ecl_navigation;ecl_slam;ecl_navigation_apps
set(CATKIN_WHITELIST_PACKAGES "${ECL_TOOLS};${ECL_LITE};${ECL_CORE}" CACHE STRING "List of ';' separated packages to build (must be a complete list)")

Special Notes

ECL Core

DeclSpecs

Typically:

  • Add a macro.hpp for declspecs defns (e.g. ecl_time_lite/include/ecl/time_lite/macros.hpp).
  • Add macro.hpp to the ecl/pkg_name.hpp indexer.
  • Add ecl_pkg_name_PUBLIC to whatever classes, functions you want to expose (guide [here]).(http://ros.org/wiki/win_ros/Contributing/Dll%20Exports).

That last step can be a bit tricky. If you miss things, you get unreferenced symbols (or something similar).

Windows Porting

Probably we need to port some posix code to win32 from my old ycl libraries. I think these will be:

  • ecl_time : timers and sleepers
  • ecl_threads : thread and mutex class
  • Do not implement Threadable, kobuki doesn't need it
  • Implement win32 Thread from ycl.zipo
  • confirm mutex is working
  • ecl_devices : serial port class
  • we need hardware - see dan!
  • first get dan to show the linux versions of the apps
  • test apps in ecl_core_apps (hex.cpp and serial.cpp)
  • confirm serial win32 implementation

I can't remember which of these I've already done. When you get to these, call me to help. Also, check (and maybe make) unit tests!

Eigen Implementation

Einstein (이재영) will update this week to use internal eigen. When he does, you can then port ecl_eigen and above.

ECL Navigation

Delete ecl_maps, ecl_slam, and any executables in ecl_navigation_apps that use those packages.

Clone this wiki locally