지난번 간단한 robot arm 설계 경험 바탕으로 나만의 8dof exo 설계

image 30
image 31

이전 포스팅에서 설명한 ACDC4Robot add-in 을 통해 URDF 추출 하였고

URDF viewer 를 통해 잘 되었는지 확인 (ROS 환경, 우분투 환경 테스트 전)

image 32
image 33

각 관절 각도를 바꾸어 보면서 내가 의도한 대로 설계 되었는지 확인.
필요에 따라 각 관절의 min max 수정하여 다시 URDF 추출

3. Rviz2

ros2 launch robot_arm_viewer view_urdf.launch.py

image 34

관련 영상

관련 영상2

전체 시스템 개요 및 코드 분석 (+개선 방향)

위 영상과 같이 아직은 지연이 큰 상황. 전체적인 현재 코드 검토 진행

image 35

communication architecture of the ROS2 upper limb exoskeleton robot control system using 3 IMUs. IMU sensor nodes publish orientation data to a IK node, which computes robot joint angles. These angles drive both a rviz2(for visualization) and a motor control node.
An upper_limb_ik python node subscribes to all three IMU topics, performs inverse kinematics calculation to estimate the arm’s joint angle, and publishes the results as two separate topics.
A joint_state_bridge Python node subscribes to cmd_degs and converts it into a standard sensor_msgs/JointState message on the /joint_states topic. Meanwhile, a C++ node(test_pos8) subscribes to robot_degs to drive the actual motors (9 Dynamixel servos) via serial commands.

IMU


# In ebimu_publisher.py
ser = serial.Serial(port=comport_num, baudrate=115200, timeout=0.05)
…
self.timer = self.create_timer(0.005, self.timer_cb)  # 500 Hz timer
def timer_cb(self):
    raw = ser.readline()
    if not raw:
        return
    s = raw.decode('utf-8', errors='ignore').strip()
    vals = re.findall(r'[-+]?\d+(?:\.\d+)?', s)
    if len(vals) < 3:
        return
    roll_s = float(vals[0]); pitch_s = float(vals[1]); yaw_s = float(vals[2])
    … 
    self.pub.publish(msg)


0 Comments

Leave a Reply