Skip to content

Commit d2fa5f4

Browse files
authored
Feature/go bio ik integration (#770)
2 parents c740866 + cb3d7b2 commit d2fa5f4

34 files changed

Lines changed: 11107 additions & 66 deletions

pixi.lock

Lines changed: 0 additions & 54 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pixi.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ ros-jazzy-soccer-vision-3d-rviz-markers = ">=1.0.0,<2"
160160
ros-jazzy-soccer-vision-3d-msgs = ">=1.0.0,<2"
161161
ros-jazzy-soccer-vision-attribute-msgs = ">=1.0.0,<2"
162162
ros-jazzy-rot-conv = ">=1.1.0,<2"
163-
ros-jazzy-bio-ik = ">=2.0.0,<3"
163+
# ros-jazzy-bio-ik = ">=2.0.0,<3"
164164
ros-jazzy-bio-ik-msgs = ">=0.0.0,<0.0.1"
165165
ros-jazzy-biped-interfaces = ">=0.0.0,<0.0.1"
166166
ros-jazzy-bitbots-tf-buffer = ">=1.0.0,<2"

src/bitbots_motion/bitbots_quintic_walk/CMakeLists.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ if(ipo_supported)
1818
endif()
1919

2020
# Build with release optimizations and debug symbols by default
21-
if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
22-
set(CMAKE_BUILD_TYPE RelWithDebug)
23-
endif()
21+
set(CMAKE_BUILD_TYPE RelWithDebug)
2422

2523
set(PYBIND11_PYTHON_VERSION 3)
2624
set(PYBIND11_FINDPYTHON ON)

src/bitbots_robot/wolfgang_moveit_config/config/kinematics.yaml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,28 @@ LeftLeg:
22
kinematics_solver: bio_ik/BioIKKinematicsPlugin # kdl_kinematics_plugin/KDLKinematicsPlugin
33
kinematics_solver_search_resolution: 0.00001
44
kinematics_solver_timeout: 0.01
5-
mode: gd_c
65
RightLeg:
76
kinematics_solver: bio_ik/BioIKKinematicsPlugin # kdl_kinematics_plugin/KDLKinematicsPlugin
87
kinematics_solver_search_resolution: 0.00001
98
kinematics_solver_timeout: 0.01
10-
mode: gd_c
119
Legs:
1210
kinematics_solver_search_resolution: 0.0001
1311
kinematics_solver_timeout: 0.005
14-
mode: gd_c
1512
RightArm:
1613
kinematics_solver: bio_ik/BioIKKinematicsPlugin
1714
kinematics_solver_search_resolution: 0.00001
1815
kinematics_solver_timeout: 0.01
19-
mode: gd_c
2016
LeftArm:
2117
kinematics_solver: bio_ik/BioIKKinematicsPlugin
2218
kinematics_solver_search_resolution: 0.00001
2319
kinematics_solver_timeout: 0.01
24-
mode: gd_c
2520
Arms:
2621
kinematics_solver_search_resolution: 0.00001
2722
kinematics_solver_timeout: 0.01
28-
mode: gd_c
2923
Head:
3024
kinematics_solver: bio_ik/BioIKKinematicsPlugin
3125
kinematics_solver_search_resolution: 0.001
3226
kinematics_solver_timeout: 0.001
33-
mode: gd_c
3427
All:
3528
kinematics_solver_search_resolution: 0.005
3629
kinematics_solver_timeout: 0.005
37-
mode: gd_c

src/lib/bio_ik/.gitrepo

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
; DO NOT EDIT (unless you know what you are doing)
2+
;
3+
; This subdirectory is a git "subrepo", and this file is maintained by the
4+
; git-subrepo command. See https://github.com/ingydotnet/git-subrepo#readme
5+
;
6+
[subrepo]
7+
remote = git@github.com:bit-bots/bio_ik.git
8+
branch = ros2
9+
commit = ffec29f7aebb16a9ae67667db4a29d375046c23b
10+
parent = af4b87fd8f3ddc0b65ed9f588c6647a344fdcff0
11+
method = merge
12+
cmdver = 0.4.9

src/lib/bio_ik/CMakeLists.txt

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
cmake_minimum_required(VERSION 3.15)
2+
project(bio_ik)
3+
4+
set(CMAKE_BUILD_TYPE Release)
5+
6+
find_package(ament_cmake REQUIRED)
7+
find_package(ament_cmake_ros REQUIRED)
8+
9+
set(THIS_PACKAGE_INCLUDE_DEPENDS
10+
Eigen3
11+
moveit_core
12+
moveit_ros_planning
13+
pluginlib
14+
rclcpp
15+
tf2_eigen
16+
tf2_ros
17+
tf2_kdl
18+
tf2_geometry_msgs
19+
)
20+
21+
foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
22+
find_package(${Dependency} REQUIRED)
23+
endforeach()
24+
25+
find_package(OpenMP)
26+
# the specific flag is not yet present in cmake 2.8.12
27+
if(OpenMP_CXX_FOUND OR OPENMP_FOUND)
28+
message(STATUS "OPENMP FOUND")
29+
add_compile_options(${OpenMP_CXX_FLAGS})
30+
if(NOT OpenMP_CXX_LIBRARIES)
31+
# cmake 2.8.12 does not yet specify the library - assume we might need libgomp
32+
set(OpenMP_LIBS gomp)
33+
else()
34+
set(OpenMP_LIBS ${OpenMP_CXX_LIBRARIES})
35+
endif()
36+
else()
37+
message(WARNING "OPENMP NOT FOUND. You will suffer performance loss.")
38+
set(OpenMP_LIBS)
39+
endif()
40+
41+
option(USE_FANN "build the neural-network-based IK solver (experimental)" OFF)
42+
if(USE_FANN)
43+
find_library(FANN_LIBRARIES NAMES fann)
44+
find_path(FANN_INCLUDE_DIRS NAMES fann.h)
45+
if(NOT FANN_INCLUDE_DIRS OR NOT FANN_LIBRARIES)
46+
message(FATAL_ERROR "Neural network solver requested, but libfann was not found.")
47+
else()
48+
message("Found libfann: ${FANN_LIBRARIES} / ${FANN_INCLUDE_DIRS}")
49+
endif()
50+
else()
51+
set(FANN_LIBRARIES)
52+
set(FANN_INCLUDE_DIRS)
53+
endif()
54+
55+
option(USE_CPPOPTLIB "Include gradient-based solvers from CppNumericalSolvers (bio_ik also provides its own solver)" OFF)
56+
if(USE_CPPOPTLIB)
57+
find_path(CPPOPTLIB_INCLUDE_DIRS
58+
NAMES cppoptlib/solver/bfgssolver.h
59+
HINTS ../../CppNumericalSolvers/include)
60+
if(NOT CPPOPTLIB_INCLUDE_DIRS)
61+
message(FATAL_ERROR "cppoptlib support requested, but the headers could not be found.")
62+
else()
63+
message("Found cppoptlib: ${CPPOPTLIB_INCLUDE_DIRS}")
64+
endif()
65+
add_definitions(-DENABLE_CPP_OPTLIB)
66+
else()
67+
set(CPPOPTLIB_INCLUDE_DIRS)
68+
endif()
69+
70+
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
71+
add_compile_options(-frecord-gcc-switches)
72+
endif()
73+
74+
add_compile_options($<$<CONFIG:Release>:-O3>)
75+
add_compile_options($<$<CONFIG:Release>:-ftree-vectorize>)
76+
add_compile_options($<$<CONFIG:Release>:-ffast-math>)
77+
78+
include_directories(
79+
include
80+
${FANN_INCLUDE_DIRS}
81+
${CPPOPTLIB_INCLUDE_DIRS}
82+
)
83+
84+
set(SOURCES
85+
src/goal_types.cpp
86+
src/problem.cpp
87+
src/ik_test.cpp
88+
src/ik_gradient.cpp
89+
src/ik_evolution_1.cpp
90+
src/ik_evolution_2.cpp
91+
)
92+
93+
if(USE_FANN)
94+
list(APPEND SOURCES src/ik_neural.cpp)
95+
endif()
96+
97+
if(USE_CPPOPTLIB)
98+
list(APPEND SOURCES src/ik_cppoptlib.cpp)
99+
endif()
100+
101+
add_library(${PROJECT_NAME} ${SOURCES})
102+
103+
target_include_directories(${PROJECT_NAME} PUBLIC
104+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
105+
$<INSTALL_INTERFACE:include>
106+
)
107+
108+
ament_target_dependencies(
109+
${PROJECT_NAME}
110+
PUBLIC
111+
${THIS_PACKAGE_INCLUDE_DEPENDS}
112+
)
113+
114+
target_link_libraries(
115+
${PROJECT_NAME}
116+
PUBLIC
117+
${FANN_LIBRARIES}
118+
${OpenMP_LIBS}
119+
)
120+
121+
add_library(${PROJECT_NAME}_plugin SHARED
122+
${SOURCES}
123+
src/kinematics_plugin.cpp
124+
)
125+
126+
target_include_directories(${PROJECT_NAME}_plugin PUBLIC
127+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
128+
$<INSTALL_INTERFACE:include>
129+
)
130+
131+
target_link_libraries(
132+
${PROJECT_NAME}_plugin
133+
PRIVATE
134+
${PROJECT_NAME}
135+
)
136+
137+
138+
install(
139+
DIRECTORY include/
140+
DESTINATION include
141+
)
142+
install(
143+
TARGETS ${PROJECT_NAME} ${PROJECT_NAME}_plugin
144+
EXPORT export_${PROJECT_NAME}
145+
LIBRARY DESTINATION lib
146+
ARCHIVE DESTINATION lib
147+
RUNTIME DESTINATION bin
148+
INCLUDES DESTINATION include
149+
)
150+
151+
152+
pluginlib_export_plugin_description_file(
153+
moveit_core
154+
bio_ik_kinematics_description.xml
155+
)
156+
157+
ament_export_include_directories(
158+
include
159+
)
160+
ament_export_libraries(
161+
${PROJECT_NAME}_plugin
162+
)
163+
ament_export_targets(
164+
export_${PROJECT_NAME}
165+
)
166+
167+
ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
168+
169+
if(BUILD_TESTING)
170+
find_package(ament_cmake_gtest REQUIRED)
171+
172+
ament_add_gtest(bio_ik_test test/utest.cpp)
173+
target_link_libraries(bio_ik_test
174+
bio_ik
175+
)
176+
target_include_directories(bio_ik_test
177+
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
178+
PUBLIC $<INSTALL_INTERFACE:include>)
179+
180+
endif()
181+
182+
ament_package()

0 commit comments

Comments
 (0)