-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problem in Inverse Kinematics & Motion Planning #267
Comments
I encountered the same problem. |
Could you share your script and more details? |
import genesis as gs
import math
import numpy as np
'''
关节名 joint limit qpos中对应的值
----------------------------------------------------
joint1 [-2.618, 2.618] -> -0.0027
joint2 [ 0 , 3.14 ] -> 1.6617
joint3 [-2.697, 0 ] -> -2.3636
joint4 [-1.832, 1.832] -> -0.1979
joint5 [-1.22 , 1.22 ] -> 1.2200
joint6 [-3.14 , 3.14 ] -> 1.7645
joint7 [ 0 , 0.04 ](prismatic)-> 0.0155
joint8 [-0.04 , 0 ](prismatic) -> -0.0387
'''
gs.init(
seed = None,
precision = '32',
debug = False,
eps = 1e-12,
logging_level = None,
backend = gs.cpu,
theme = 'dark',
logger_verbose_time = True
)
scene = gs.Scene(
sim_options=gs.options.SimOptions(
dt=0.01,
gravity=(0, 0, -10.0),
),
show_viewer=True,
viewer_options=gs.options.ViewerOptions(
camera_pos=(3.5, 0.0, 2.5),
camera_lookat=(0.0, 0.0, 0.5),
camera_fov=40,
),
rigid_options=gs.options.RigidOptions(enable_self_collision = True),
)
plane = scene.add_entity(gs.morphs.Plane())
box = scene.add_entity(gs.morphs.Box(size = (0.04,0.04,0.04),
pos = (1.65,1.0,0.02),
collision = True))
Piper = scene.add_entity(
gs.morphs.URDF(file ='/home/jiziheng/Music/Genesis/Piper_model/urdf/piper_description.urdf',
fixed = True,
collision = True,
pos = (1.0,1.0,0.0)
),
)
cam0 = scene.add_camera()
joint_names = [
'joint1',
'joint2',
'joint3',
'joint4',
'joint5',
'joint6',
'joint7',
'joint8',
]
dofs_idx = [Piper.get_joint(name).dof_idx_local for name in joint_names]
############ Optional: set control gains ############
scene.build()
import IPython
IPython.embed()
Piper.set_dofs_kp(
kp = np.array([4500,4500,4500,4500,4500,4500,100,100]),
dofs_idx_local = dofs_idx
)
Piper.set_dofs_kv(
kv = np.array([450,450,450,450,450,450,10,10]),
dofs_idx_local = dofs_idx
)
Piper.set_dofs_force_range(
lower = np.array([-87,-87,-87,-87,-87,-87,-12,-12]),
upper = np.array([87,87,87,87,87,87,12,12]),
dofs_idx_local = dofs_idx,
)
count = 0
#
end_effector = Piper.get_link("link6")
qpos = Piper.inverse_kinematics(
link = end_effector,
pos = np.array([1.45, 1.0 , 0.02]),
quat = np.array([0,0,1,0])
)
print("--------")
print("Inverse kinematics result:", qpos)
# qpos[-1:] = -0.04
# qpos[-2:-1] = 0.04
while True:
path = Piper.plan_path(
qpos_goal=np.array(qpos),
num_waypoints=20,
planner = 'PRM',
)
# print("-----------")
# print(path)
# print("-----------")
for waypoint in path:
Piper.control_dofs_position(path)
# Piper.control_dofs_position(np.array([-2.9842e-03, 2.5314e+00, -1.7150e+00, 5.1327e-04, 8.4387e-01,
# -1.5748e+00, 3.7011e-02, -2.0058e-02]), dofs_idx)
scene.visualizer.update()
# scene.step() |
what's more, I used python 3.9.20 and ompl 1.6.0 , may be version problem? But i am not sure |
Could you also send the error message? |
when I use pycharm, it has the same problem. But when I use in the terminal , it works |
It also not work for me with terminal |
I want to try planning with inverse kinematics and I use Piper URDF.
I found that if I just use inverse kinematics to calculate the joint position and directly use 'control_dofs_position' to execute these position , it works.
But if I use plan_path , it can not work , what's more I found it called in 'plan_path' function : ss = og.SimpleSetup(space)
I m considering HOW to solve this problem
The text was updated successfully, but these errors were encountered: