로봇 모델링 및 시뮬레이션 (3 개) -ros_control

로봇 모델링 및 시뮬레이션 (3 개) -ros_control

개요

ROS는 다양한 로봇 애플리케이션을 제공합니다 : SLAM, 내비게이션, MoveIt ... 그러나 이러한 기능 패키지를 로봇에서, 즉 애플리케이션과 실제 로봇 또는 로봇 시뮬레이터 사이에서 어떻게 사용해야하는지에 대한 질문이 항상있을 수 있습니다. 그 사이에는 둘 사이의 연결이 부족합니다.
ros_control은 ROS에서 제공하는 애플리케이션과 로봇 사이의 미들웨어로, 일련의 컨트롤러 인터페이스, 전송 장치 인터페이스, 하드웨어 인터페이스, 컨트롤러 툴박스 등을 포함하여 로봇 애플리케이션을 신속하게 구현하고 개발 효율성을 향상시킬 수 있습니다.
여기에 사진 설명 삽입

하나, ros_control 프레임 워크

여기에 사진 설명 삽입
위의 그림은 ros_control의 전체적인 프레임 워크를 보여줍니다. 로봇의 종류 (이동 로봇, 로봇 팔 등)에 따라 ros_control은 여러 종류의 컨트롤러를 제공 할 수 있지만 이러한 컨트롤러의 인터페이스는 다릅니다. 코드 재 사용률을 향상시키기 위해 ros_control은 하드웨어 추상화 계층도 제공합니다. 하드웨어 추상화 계층은 로봇의 하드웨어 리소스 관리를 담당하며 컨트롤러는 추상화 계층에서 리소스를 요청하기 만하면되며 하드웨어에 직접 닿지 않습니다.
여기에 사진 설명 삽입
여기에 사진 설명 삽입
위의 그림은 ros_control의 데이터 흐름도이며 각 레벨에 포함 된 기능을보다 명확하게 볼 수 있습니다.
(1) Controller Manager (Controller Manager)
각 로봇은 여러 개의 컨트롤러를 가질 수 있으므로 여기에 컨트롤러 관리자가 있습니다. 다른 컨트롤러를 관리하기위한 공통 인터페이스. 컨트롤러 관리자의 입력은 ROS 상위 애플리케이션 기능 패키지의 출력입니다.
(2) 컨트롤러 컨트롤러
는 각 조인트의 제어를 완료하고 하드웨어 리소스 인터페이스에서 상태를 읽은 다음 제어 명령을 내릴 수 있습니다.
(3) 하드웨어 리소스 (Hardware Rescource)
는 상위 및 하위 계층에 대한 하드웨어 리소스의 인터페이스를 제공합니다.
(4) 로봇 하드웨어 추상화 (RobotHW)
로봇 하드웨어 추상화 계층은 하드웨어 리소스와 직접 상호 작용 하고 쓰기 및 읽기 방법을 통해 하드웨어 작업을 완료합니다.이 계층에는 관절 제약, 토크 변환 및 상태 변환과 같은 기능도 포함됩니다.
(5) 실제 로봇
은 또한 수신 된 명령을 액추에이터에 반영하기 위해 실제 로봇에 자체 내장 된 컨트롤러가 있어야합니다. 예를 들어, 90도 회전 명령을받은 후 액추에이터는 빠르고 안정적으로 90도 회전해야합니다. .

둘째, 컨트롤러

ros_controllers 함수 패키지는 다음과 같은 컨트롤러를 제공합니다 :
여기에 사진 설명 삽입
여기에 사진 설명 삽입
물론 필요에 따라 필요한 컨트롤러를 생성 한 다음 컨트롤러를 통해 직접 생성 한 컨트롤러를 관리 할 수도 있습니다. 컨트롤러를 생성하는 구체적인 방법은 https를 참조하십시오. : // github.com/ros-controls/ros_control/wiki/controller_interface

세, 하드웨어 인터페이스

하드웨어 인터페이스는 컨트롤러와 RobotHw 간의 통신 인터페이스로 기본적으로 컨트롤러의 종류에 해당하며 필요한 인터페이스를 직접 생성 할 수도 있습니다. 구체적인 구현 방법은 https://github.com/ros-를 참조하십시오. controls / ros_control / wiki / hardware_interface
여기에 사진 설명 삽입

넷째, 전송 시스템

전송은 로봇 관절 명령을 액추에이터 제어 신호로 변환 할 수 있습니다. 이동해야하는 로봇의 각 관절은 해당 전송 시스템으로 구성되어야하며 https://github.com/ros-controls/ros_control/wiki/transmission_interface 코드로 완료 할 수 있지만 대부분의 경우 URDF 파일 (Http://ros.org/wiki/urdf/XML/Transmission)에 직접 추가됩니다.

<transmission name="simple_trans">
     <type>transmission_interface/SimpleTransmission</type>
     <joint name="foo_joint">
          <hardwareInterface>EffortJointInterface</hardwareInterface>
     </joint>
     <actuator name="foo_motor">
          <mechanicalReduction>50</mechanicalReduction>
          <hardwareInterface>EffortJointInterface</hardwareInterface>
     </actuator>
</transmission>

다섯, 관절 제약

관절 제한은 하드웨어 추상화 계층의 일부입니다. 관절 제한 데이터 구조를 유지합니다. 이러한 제한 데이터는 로봇의 URDF 파일 또는 ROS 매개 변수 서버에서로드 할 수 있습니다 (먼저 YAML 구성 파일을 사용해야합니다. ROS 매개 변수 서버 가져 오기 )는 관절 속도, 위치, 가속도, 저크, 토크 등에 대한 제약을 포함 할뿐만 아니라 안전 역할을하는 위치 소프트 제한, 속도 경계 (k_v) 및 위치 경계 (k_p)도 포함합니다.
다음과 같이 URDF에서 Joint Limits 매개 변수를 설정할 수 있습니다.

<joint name="$foo_joint" type="revolute">
  <!-- other joint description elements -->
 
  <!-- Joint limits -->
  <limit lower="0.0"
         upper="1.0"
         effort="10.0"
         velocity="5.0" />
 
  <!-- Soft limits -->
  <safety_controller k_position="100"
                     k_velocity="10"
                     soft_lower_limit="0.1"
                     soft_upper_limit="0.9" /> 
</joint>

또한 YAML 구성 파일을 통해 미리 매개 변수 서버에로드해야하는 몇 가지 매개 변수가 있습니다. YAML 파일의 형식은 다음과 같습니다.

joint_limits:
  foo_joint:
    has_position_limits: true
    min_position: 0.0
    max_position: 1.0
    has_velocity_limits: true
    max_velocity: 2.0
    has_acceleration_limits: true
    max_acceleration: 5.0
    has_jerk_limits: true
    max_jerk: 100.0
    has_effort_limits: true
    max_effort: 5.0
  bar_joint:
    has_position_limits: false # Continuous joint
    has_velocity_limits: true
    max_velocity: 4.0

여섯, 컨트롤러 관리자

controller_manager는 컨트롤러의로드, 시작, 중지 및 언로드와 같은 다양한 작업을 구현할 수있는 다중 컨트롤러 제어 메커니즘을 제공합니다. 아래 그림과 같이 controller_manager는 컨트롤러의 상태 전환을 제어합니다.
여기에 사진 설명 삽입
controller_manager는 또한 이러한 작업을 지원하는 다양한 도구를 제공합니다.
1. 명령 줄 도구
controller_manager 명령의 형식은 다음과 같습니다.

rosrun controller_manager controller_manager <command> <controller_name>

지원되는 항목은 다음과 같습니다.
로드 : 컨트롤러로드 (구성 및 초기화)
언로드 : 컨트롤러 언로드 (소멸)
시작 : 컨트롤러 시작
중지 : 컨트롤러 중지 ( 컨트롤러 중지)
spawn : 컨트롤러 로드 및 시작 (로드 및 컨트롤러 시작)
kill : 컨트롤러 중지 및 언로드 (컨트롤러 중지 및 언로드) 컨트롤러
의 상태를 확인하려면 다음 명령을 사용할 수 있습니다.

rosrun controller_manager controller_manager <command>

지원 :
목록 : 실행 순서에 따라 모든 컨트롤러를 나열하고 각 컨트롤러의 상태를 표시합니다. (실행되는 순서대로 모든 컨트롤러를 나열하고 각 컨트롤러의 상태를 제공합니다.)
list-types : 모든 컨트롤러 유형을 표시합니다. (컨트롤러 관리자가 알고있는 모든 컨트롤러 유형을 나열합니다. 컨트롤러가이 목록에 없으면 생성 할 수 없습니다.)
reload-libraries : 모든 컨트롤러 라이브러리를 플러그인 형태로 다시로드하고 다시 시작하지 않습니다. 컨트롤러의 개발 및 테스트를 용이하게합니다. (플러그인으로 사용 가능한 모든 컨트롤러 라이브러리를 다시로드합니다. 이는 컨트롤러를 개발 중이고 매번 로봇을 다시 시작하지 않고 새 컨트롤러 코드를 테스트하려는 경우에 편리합니다. 이전에 실행 중이던 컨트롤러를 다시 시작하지는 않습니다.)
reload-libraries --restore : 플러그인 형태로 모든 컨트롤러의 라이브러리를 다시로드하고 초기 상태로 복원합니다. (플러그인으로 사용할 수있는 모든 컨트롤러 라이브러리를 다시로드하고 모든 컨트롤러를 원래 상태로 복원합니다.)
하지만 여러 번 최소 6 개의 컨트롤러가있는 6 축 로봇과 같은 많은 컨트롤러를 제어해야하는 경우에도 사용할 수 있습니다. 한 번에 여러 컨트롤러를 제어하는 ​​spawner 명령 :

rosrun controller_manager spawner [--stopped] name1 name2 name3

위의 명령은 자동으로 컨트롤러를로드하고 시작할 수 있으며 -stopped 매개 변수를 추가하면 컨트롤러가로드 만되고 실행은 시작되지 않습니다. 일련의 컨트롤러를 중지하고 싶지만 제거 할 필요가없는 경우 다음 명령을 사용할 수 있습니다.

rosrun controller_manager unspawner name1 name2 name3

2.
시작 도구 시작 파일에서 controller_manager 명령을 실행하여 일련의 컨트롤러를로드하고 시작할 수도 있습니다.

 <launch>
   <node pkg="controller_manager"
         type="spawner"
         args="controller_name1 controller_name2" /> 
 </launch>

위의 실행 파일은 컨트롤러를로드하고 시작합니다. 시작하지 않고로드하기 만하면되는 경우 다음 구성을 사용할 수 있습니다.

<launch>
  <node pkg="controller_manager"
    type="spawner"
    args="--stopped controller_name1 controller_name2" />
</launch>

3. 시각화 도구 rqt_controller_manager
controller_manager는 시각화 도구 rqt_controller_manager 도 제공합니다. 설치가 성공하면 다음 명령을 직접 사용하여 인터페이스를 엽니 다.

rosrun rqt_controller_manager rqt_controller_manager

일곱, 전망대 시뮬레이션

1. 로봇 모델에 Gazebo 속성 추가
(1) 링크에 <gazebo> 태그
추가 (2) 전송 장치
추가 (3) Gazebo 컨트롤러 플러그인 추가
2.
Gazebo 에서 로봇 모델 표시 3. 제어 Gazebo에서 움직이는 로봇
4. 카메라 시뮬레이션
(1) 카메라 모델에 Gazebo 플러그인 추가
(2) 시뮬레이션 환경 실행
5. Kinect 시뮬레이션
(1) Kinect 모델에 Gazebo 플러그인 추가
(2) 시뮬레이션 환경 실행
6. Lidar 시뮬레이션
(1) rplidar 모델에 Gazebo 플러그인 추가
(2) 시뮬레이션 환경 실행

추천

출처blog.csdn.net/weixin_45661757/article/details/113254507