forked from stonier/win_ros
-
Notifications
You must be signed in to change notification settings - Fork 16
Ecl ports
stonier edited this page Apr 17, 2013
·
11 revisions
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
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)")
DeclSpecs
Typically:
- Add a
macro.hpp
for declspecs defns (e.g.ecl_time_lite/include/ecl/time_lite/macros.hpp
). - Add
macro.hpp
to theecl/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.
Delete ecl_maps
, ecl_slam
, and any executables in ecl_navigation_apps
that use those packages.