rb10_rmpflow.launch.py를 실행해서 RB10 RMP controller와 RViz를 함께 띄우는 ROS 2 Humble 패키지입니다.
현재 구현은 아래 조합을 사용합니다.
Eigen: 수치 계산Pinocchio: 실제 제어 주기의 RB10 운동학과 explicit RMP2 root 누적CasADi: Algorithm-3 DAG 참조 구현, task-map 미분, backend 동등성 검증
실제 제어 기본값은 solver_backend: pinocchio_direct입니다. CasADi 전체
solver는 solver_backend:=casadi_rmp2를 명시한 검증 실험에서만 사용합니다.
이 문서는 처음 받은 사람이 GitHub에서 내려받아 바로 실행하는 기준으로 다시 정리한 사용 가이드입니다.
- Ubuntu
22.04 - ROS 2
Humble - 작업공간 경로:
~/rb10_rl_sim
중요:
- 현재
CMakeLists.txt는 CasADi 설치 경로를~/rb10_rl_sim/third_party/casadi/install로 가정합니다. - 따라서 이 README대로 하면 가장 덜 헷갈립니다.
~/rb10_rl_sim 경로에 작업공간을 받습니다.
cd ~
git clone <YOUR_GIT_REPO_URL> rb10_rl_sim
cd ~/rb10_rl_sim이미 다른 이름으로 clone 했다면:
CMakeLists.txt의CASADI_ROOT를 수정하거나- 아래 설치 경로를 직접 맞춰야 합니다.
sudo apt update
sudo apt install -y \
build-essential \
cmake \
git \
libeigen3-dev \
libboost-filesystem-dev \
libboost-serialization-dev \
libtinyxml2-dev \
python3-colcon-common-extensions \
python3-rosdep \
ros-humble-rclcpp \
ros-humble-std-msgs \
ros-humble-sensor-msgs \
ros-humble-geometry-msgs \
ros-humble-visualization-msgs \
ros-humble-tf2-ros \
ros-humble-interactive-markers \
ros-humble-pinocchio \
ros-humble-robot-state-publisher \
ros-humble-joint-state-publisher \
ros-humble-rviz2rosdep를 아직 초기화하지 않았다면:
sudo rosdep init
rosdep update이 패키지는 CasADi를 로컬로 빌드해서 사용합니다.
mkdir -p ~/rb10_rl_sim/third_party
git clone --depth 1 --branch 3.7.2 https://github.com/casadi/casadi.git ~/rb10_rl_sim/third_party/casadi
cmake -S ~/rb10_rl_sim/third_party/casadi \
-B ~/rb10_rl_sim/third_party/casadi/build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=~/rb10_rl_sim/third_party/casadi/install \
-DWITH_PYTHON=OFF \
-DWITH_PYTHON3=OFF \
-DWITH_EXAMPLES=OFF
cmake --build ~/rb10_rl_sim/third_party/casadi/build -j"$(nproc)"
cmake --install ~/rb10_rl_sim/third_party/casadi/build정상 설치되면 이 파일이 있어야 합니다.
ls ~/rb10_rl_sim/third_party/casadi/install/lib/libcasadi.sosource /opt/ros/humble/setup.bash
cd ~/rb10_rl_sim
colcon build --packages-select rb10_rmpflow_rviz --symlink-install \
--cmake-args -DCMAKE_BUILD_TYPE=Release
source ~/rb10_rl_sim/install/setup.bash참고:
- 실행 파일에는 CasADi
RPATH가 들어가 있으므로 보통LD_LIBRARY_PATH를 따로 잡지 않아도 됩니다.
robot_state_publisher, rmpflow_controller, interactive_goal, obstacle_manager, tof_ray_visualizer, rviz2를 함께 띄웁니다.
source /opt/ros/humble/setup.bash
source ~/rb10_rl_sim/install/setup.bash
ros2 launch rb10_rmpflow_rviz rb10_rmpflow.launch.pyCasADi 참조 backend를 명시적으로 비교할 때만 다음을 추가합니다.
solver_backend:=casadi_rmp2 casadi_rmp2_jit:=trueRViz 없이 실행:
ros2 launch rb10_rmpflow_rviz rb10_rmpflow.launch.py use_rviz:=false장애물 매니저 없이 실행:
ros2 launch rb10_rmpflow_rviz rb10_rmpflow.launch.py use_obstacles:=false모델만 확인:
ros2 launch rb10_rmpflow_rviz rb10_model_only.launch.py- RViz에서 goal marker를 움직이면 end-effector 목표가 바뀝니다.
- obstacle manager가 켜져 있으면 obstacle marker를 움직여 회피 동작을 볼 수 있습니다.
- controller는
config/params.yaml을 읽어 동작합니다.
아래 파일이 있는지 확인:
ls ~/rb10_rl_sim/third_party/casadi/install/lib/libcasadi.so만약 작업공간를 ~/rb10_rl_sim가 아닌 다른 경로에 두었다면:
CMakeLists.txt의CASADI_ROOT를 수정하고 다시 빌드해야 합니다.
아래 순서로 다시 실행:
source /opt/ros/humble/setup.bash
source ~/rb10_rl_sim/install/setup.bash
ros2 launch rb10_rmpflow_rviz rb10_rmpflow.launch.py- launch:
rb10_rmpflow.launch.py - controller 파라미터:
params.yaml - controller node:
rmpflow_controller_node.cpp - 실시간 solver:
pinocchio_direct_solver.cpp - 참조 solver:
casadi_rmp2_solver.cpp - backend 동등성 테스트:
test_solver_backend_equivalence.cpp
cd ~
git clone <YOUR_GIT_REPO_URL> rb10_rl_sim
cd ~/rb10_rl_sim
sudo apt update
sudo apt install -y \
build-essential cmake git \
libeigen3-dev \
python3-colcon-common-extensions python3-rosdep \
ros-humble-rclcpp ros-humble-std-msgs ros-humble-sensor-msgs \
ros-humble-geometry-msgs ros-humble-visualization-msgs \
ros-humble-tf2-ros ros-humble-interactive-markers \
ros-humble-robot-state-publisher ros-humble-joint-state-publisher \
ros-humble-rviz2
mkdir -p ~/rb10_rl_sim/third_party
git clone --depth 1 --branch 3.7.2 https://github.com/casadi/casadi.git ~/rb10_rl_sim/third_party/casadi
cmake -S ~/rb10_rl_sim/third_party/casadi -B ~/rb10_rl_sim/third_party/casadi/build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=~/rb10_rl_sim/third_party/casadi/install \
-DWITH_PYTHON=OFF -DWITH_PYTHON3=OFF -DWITH_EXAMPLES=OFF
cmake --build ~/rb10_rl_sim/third_party/casadi/build -j"$(nproc)"
cmake --install ~/rb10_rl_sim/third_party/casadi/build
source /opt/ros/humble/setup.bash
colcon build --packages-select rb10_rmpflow_rviz --symlink-install
source ~/rb10_rl_sim/install/setup.bash
ros2 launch rb10_rmpflow_rviz rb10_rmpflow.launch.py